| 12345678910111213141516171819202122232425262728293031323334 |
- 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');
- })
- });
- });
|