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:
@@ -0,0 +1,5 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`Proper Usage Brackets 1`] = `"<li>a</li><li>b</li><li>foo</li><li>bar</li>"`;
|
||||
|
||||
exports[`Proper Usage No Brackets 1`] = `"<li>a</li><li>b</li><li>foo</li><li>bar</li>"`;
|
||||
3
tests/sample_data/pug/test/eachOf/error/left-side.pug
Normal file
3
tests/sample_data/pug/test/eachOf/error/left-side.pug
Normal file
@@ -0,0 +1,3 @@
|
||||
each [key, val of users
|
||||
li= key
|
||||
li= val
|
||||
3
tests/sample_data/pug/test/eachOf/error/no-brackets.pug
Normal file
3
tests/sample_data/pug/test/eachOf/error/no-brackets.pug
Normal file
@@ -0,0 +1,3 @@
|
||||
each key, val of users
|
||||
li= key
|
||||
li= val
|
||||
3
tests/sample_data/pug/test/eachOf/error/one-val.pug
Normal file
3
tests/sample_data/pug/test/eachOf/error/one-val.pug
Normal file
@@ -0,0 +1,3 @@
|
||||
each [key] of users
|
||||
li= key
|
||||
li= val
|
||||
3
tests/sample_data/pug/test/eachOf/error/right-side.pug
Normal file
3
tests/sample_data/pug/test/eachOf/error/right-side.pug
Normal file
@@ -0,0 +1,3 @@
|
||||
each key, val] of users
|
||||
li= key
|
||||
li= val
|
||||
44
tests/sample_data/pug/test/eachOf/index.test.js
Normal file
44
tests/sample_data/pug/test/eachOf/index.test.js
Normal file
@@ -0,0 +1,44 @@
|
||||
const pug = require('../../');
|
||||
|
||||
describe('Inproper Usage', () => {
|
||||
test('Only left-side bracket', () => {
|
||||
expect(() => pug.compileFile(__dirname + '/error/left-side.pug')).toThrow(
|
||||
'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'
|
||||
);
|
||||
});
|
||||
test('Only right-side bracket', () => {
|
||||
expect(() => pug.compileFile(__dirname + '/error/right-side.pug')).toThrow(
|
||||
'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'
|
||||
);
|
||||
});
|
||||
test('Only one value inside brackets', () => {
|
||||
expect(() => pug.compileFile(__dirname + '/error/one-val.pug')).toThrow(
|
||||
'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'
|
||||
);
|
||||
});
|
||||
test('No brackets', () => {
|
||||
expect(() => pug.compileFile(__dirname + '/error/no-brackets.pug')).toThrow(
|
||||
'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'
|
||||
);
|
||||
});
|
||||
});
|
||||
describe('Proper Usage', () => {
|
||||
test('Brackets', () => {
|
||||
const html = pug.renderFile(__dirname + '/passing/brackets.pug', {
|
||||
users: new Map([
|
||||
['a', 'b'],
|
||||
['foo', 'bar'],
|
||||
]),
|
||||
});
|
||||
expect(html).toMatchSnapshot();
|
||||
});
|
||||
test('No Brackets', () => {
|
||||
const html = pug.renderFile(__dirname + '/passing/no-brackets.pug', {
|
||||
users: new Map([
|
||||
['a', 'b'],
|
||||
['foo', 'bar'],
|
||||
]),
|
||||
});
|
||||
expect(html).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
3
tests/sample_data/pug/test/eachOf/passing/brackets.pug
Normal file
3
tests/sample_data/pug/test/eachOf/passing/brackets.pug
Normal file
@@ -0,0 +1,3 @@
|
||||
each [key, val] of users
|
||||
li= key
|
||||
li= val
|
||||
@@ -0,0 +1,3 @@
|
||||
each data of users
|
||||
li= data[0]
|
||||
li= data[1]
|
||||
Reference in New Issue
Block a user