fix: add scoped error logging for lexer/parser errors
- Add std.log.scoped(.pugz) to template.zig and view_engine.zig - Log detailed error info (code, line, column, message) when parsing fails - Log template path context in ViewEngine on parse errors - Remove debug print from lexer, use proper scoped logging instead - Move benchmarks, docs, examples, playground, tests out of src/ to project root - Update build.zig and documentation paths accordingly - Bump version to 0.3.1
This commit is contained in:
43
tests/sample_data/pug/test/run-syntax-errors.test.js
Normal file
43
tests/sample_data/pug/test/run-syntax-errors.test.js
Normal file
@@ -0,0 +1,43 @@
|
||||
const assert = require('assert');
|
||||
const fs = require('fs');
|
||||
const runUtils = require('./run-utils');
|
||||
const pug = require('../');
|
||||
|
||||
const anti = runUtils.findCases(__dirname + '/anti-cases');
|
||||
|
||||
describe('certain syntax is not allowed and will throw a compile time error', function() {
|
||||
anti.forEach(function(test) {
|
||||
var name = test.replace(/[-.]/g, ' ');
|
||||
it(name, function() {
|
||||
var path = __dirname.replace(/\\/g, '/') + '/anti-cases/' + test + '.pug';
|
||||
var str = fs.readFileSync(path, 'utf8');
|
||||
try {
|
||||
var fn = pug.compile(str, {
|
||||
filename: path,
|
||||
pretty: true,
|
||||
basedir: __dirname + '/anti-cases',
|
||||
filters: runUtils.filters,
|
||||
});
|
||||
} catch (ex) {
|
||||
if (!ex.code) {
|
||||
throw ex;
|
||||
}
|
||||
assert(ex instanceof Error, 'Should throw a real Error');
|
||||
assert(
|
||||
ex.code.indexOf('PUG:') === 0,
|
||||
'It should have a code of "PUG:SOMETHING"'
|
||||
);
|
||||
assert(
|
||||
ex.message.replace(/\\/g, '/').indexOf(path) === 0,
|
||||
'it should start with the path'
|
||||
);
|
||||
assert(
|
||||
/:\d+$/m.test(ex.message.replace(/\\/g, '/')),
|
||||
'it should include a line number.'
|
||||
);
|
||||
return;
|
||||
}
|
||||
throw new Error(test + ' should have thrown an error');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user