So siehts ganz gut aus !
This commit is contained in:
106
node_modules/pug/test/run-utils.js
generated
vendored
Normal file
106
node_modules/pug/test/run-utils.js
generated
vendored
Normal file
@@ -0,0 +1,106 @@
|
||||
var fs = require('fs');
|
||||
var assert = require('assert');
|
||||
var pug = require('../');
|
||||
var uglify = require('uglify-js');
|
||||
var mkdirp = require('mkdirp').sync;
|
||||
|
||||
var filters = {
|
||||
custom: function (str, options) {
|
||||
assert(options.opt === 'val');
|
||||
assert(options.num === 2);
|
||||
return 'BEGIN' + str + 'END';
|
||||
}
|
||||
};
|
||||
|
||||
// test cases
|
||||
|
||||
function writeFileSync(filename, data) {
|
||||
try {
|
||||
if (fs.readFileSync(filename, 'utf8') === data.toString('utf8')) {
|
||||
return;
|
||||
}
|
||||
} catch (ex) {
|
||||
if (ex.code !== 'ENOENT') {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
fs.writeFileSync(filename, data);
|
||||
}
|
||||
|
||||
function findCases(dir) {
|
||||
return fs.readdirSync(dir).filter(function(file){
|
||||
return ~file.indexOf('.pug');
|
||||
}).map(function(file){
|
||||
return file.replace('.pug', '');
|
||||
});
|
||||
}
|
||||
|
||||
function testSingle(it, suffix, test){
|
||||
var name = test.replace(/[-.]/g, ' ');
|
||||
it(name, function(){
|
||||
var path = __dirname + '/cases' + suffix + '/' + test + '.pug';
|
||||
var str = fs.readFileSync(path, 'utf8');
|
||||
var fn = pug.compile(str, {
|
||||
filename: path,
|
||||
pretty: true,
|
||||
basedir: __dirname + '/cases' + suffix,
|
||||
filters: filters,
|
||||
filterAliases: {'markdown': 'markdown-it'},
|
||||
});
|
||||
var actual = fn({ title: 'Pug' });
|
||||
|
||||
writeFileSync(__dirname + '/output' + suffix + '/' + test + '.html', actual);
|
||||
|
||||
var html = fs.readFileSync(__dirname + '/cases' + suffix + '/' + test + '.html', 'utf8').trim().replace(/\r/g, '');
|
||||
var clientCode = uglify.minify(pug.compileClient(str, {
|
||||
filename: path,
|
||||
pretty: true,
|
||||
compileDebug: false,
|
||||
basedir: __dirname + '/cases' + suffix,
|
||||
filters: filters,
|
||||
filterAliases: {'markdown': 'markdown-it'},
|
||||
}), {output: {beautify: true}, mangle: false, compress: false, fromString: true}).code;
|
||||
var clientCodeDebug = uglify.minify(pug.compileClient(str, {
|
||||
filename: path,
|
||||
pretty: true,
|
||||
compileDebug: true,
|
||||
basedir: __dirname + '/cases' + suffix,
|
||||
filters: filters,
|
||||
filterAliases: {'markdown': 'markdown-it'},
|
||||
}), {output: {beautify: true}, mangle: false, compress: false, fromString: true}).code;
|
||||
writeFileSync(__dirname + '/output' + suffix + '/' + test + '.js', uglify.minify(pug.compileClient(str, {
|
||||
filename: path,
|
||||
pretty: false,
|
||||
compileDebug: false,
|
||||
basedir: __dirname + '/cases' + suffix,
|
||||
filters: filters,
|
||||
filterAliases: {'markdown': 'markdown-it'},
|
||||
}), {output: {beautify: true}, mangle: false, compress: false, fromString: true}).code);
|
||||
if (/filter/.test(test)) {
|
||||
actual = actual.replace(/\n| /g, '');
|
||||
html = html.replace(/\n| /g, '');
|
||||
}
|
||||
if (/mixins-unused/.test(test)) {
|
||||
assert(/never-called/.test(str), 'never-called is in the pug file for mixins-unused');
|
||||
assert(!/never-called/.test(clientCode), 'never-called should be removed from the code');
|
||||
}
|
||||
expect(actual.trim()).toEqual(html);
|
||||
actual = Function('pug', clientCode + '\nreturn template;')()({ title: 'Pug' });
|
||||
if (/filter/.test(test)) {
|
||||
actual = actual.replace(/\n| /g, '');
|
||||
}
|
||||
expect(actual.trim()).toEqual(html);
|
||||
actual = Function('pug', clientCodeDebug + '\nreturn template;')()({ title: 'Pug' });
|
||||
if (/filter/.test(test)) {
|
||||
actual = actual.replace(/\n| /g, '');
|
||||
}
|
||||
expect(actual.trim()).toEqual(html);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
filters,
|
||||
findCases,
|
||||
testSingle,
|
||||
};
|
||||
Reference in New Issue
Block a user