Skip to content

Commit

Permalink
Include file/lineno in TemplateError message. fixes #1087, #1095
Browse files Browse the repository at this point in the history
  • Loading branch information
fdintino committed May 9, 2018
1 parent 1b4558d commit 8041120
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 3 deletions.
4 changes: 2 additions & 2 deletions nunjucks/src/lib.js
Expand Up @@ -87,7 +87,7 @@ function TemplateError(message, lineno, colno) {
}

Object.defineProperty(err, 'stack', {
get: () => getStack.call(this),
get: () => getStack.call(err),
});

Object.defineProperty(err, 'cause', {
Expand All @@ -98,7 +98,7 @@ function TemplateError(message, lineno, colno) {
err.colno = colno;
err.firstUpdate = true;

err.Update = (path) => {
err.Update = function Update(path) {
let msg = '(' + (path || 'unknown path') + ')';

// only show lineno + colno next to path of template
Expand Down
27 changes: 27 additions & 0 deletions tests/compiler.js
Expand Up @@ -4,6 +4,8 @@
var expect;
var util;
var Template;
var Loader;
var Environment;
var fs;
var render;
var equal;
Expand All @@ -14,17 +16,20 @@
expect = require('expect.js');
util = require('./util');
Template = require('../nunjucks/src/environment').Template;
Environment = require('../nunjucks/src/environment').Environment;
fs = require('fs');
} else {
expect = window.expect;
util = window.util;
Template = nunjucks.Template;
Environment = nunjucks.Environment;
}

render = util.render;
equal = util.equal;
finish = util.finish;
isSlim = util.isSlim;
Loader = util.Loader;

describe('compiler', function() {
it('should compile templates', function(done) {
Expand Down Expand Up @@ -784,6 +789,28 @@
finish(done);
});

if (!isSlim) {
it('should include error line in raised TemplateError', function(done) {
var tmplStr = [
'{% set items = ["a", "b",, "c"] %}',
'{{ items | join(",") }}',
].join('\n');

var loader = new Loader('tests/templates');
var env = new Environment(loader);
var tmpl = new Template(tmplStr, env, 'parse-error.njk');

tmpl.render({}, function(err, res) {
expect(res).to.be(undefined);
expect(err.toString()).to.be([
'Template render error: (parse-error.njk) [Line 1, Column 24]',
' unexpected token: ,',
].join('\n'));
done();
});
});
}

it('should compile string concatenations with tilde', function(done) {
equal('{{ 4 ~ \'hello\' }}', '4hello');
equal('{{ 4 ~ 5 }}', '45');
Expand Down
4 changes: 3 additions & 1 deletion tests/util.js
Expand Up @@ -209,14 +209,16 @@
module.exports.finish = finish;
module.exports.normEOL = normEOL;
module.exports.isSlim = isSlim;
module.exports.Loader = Loader;
} else {
window.util = {
render: render,
equal: equal,
jinjaEqual: jinjaEqual,
finish: finish,
normEOL: normEOL,
isSlim: isSlim
isSlim: isSlim,
Loader: Loader,
};
}
}());

0 comments on commit 8041120

Please sign in to comment.