Updating js plugins
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
require('./helper');
|
||||
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var specsDir = path.join(__dirname, 'spec/specs');
|
||||
|
||||
var skipTests = {
|
||||
comments: [
|
||||
'Standalone Without Newline'
|
||||
],
|
||||
delimiters: [
|
||||
'Standalone Without Newline'
|
||||
],
|
||||
inverted: [
|
||||
'Standalone Without Newline'
|
||||
],
|
||||
partials: [
|
||||
'Standalone Without Previous Line',
|
||||
'Standalone Without Newline'
|
||||
],
|
||||
sections: [
|
||||
'Standalone Without Newline'
|
||||
],
|
||||
'~lambdas': [
|
||||
'Interpolation',
|
||||
'Interpolation - Expansion',
|
||||
'Interpolation - Alternate Delimiters',
|
||||
'Interpolation - Multiple Calls',
|
||||
'Escaping',
|
||||
'Section - Expansion',
|
||||
'Section - Alternate Delimiters'
|
||||
]
|
||||
};
|
||||
|
||||
// You can run the skipped tests by setting the NOSKIP environment variable to
|
||||
// true (e.g. NOSKIP=true mocha test/mustache-spec-test.js)
|
||||
var noSkip = process.env.NOSKIP;
|
||||
|
||||
// You can put the name of a specific test file to run in the TEST environment
|
||||
// variable (e.g. TEST=interpolation mocha test/mustache-spec-test.js)
|
||||
var fileToRun = process.env.TEST;
|
||||
|
||||
// Mustache should work on node 0.6 that doesn't have fs.existsSync
|
||||
function existsDir (path) {
|
||||
try {
|
||||
return fs.statSync(path).isDirectory();
|
||||
} catch (x) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var specFiles;
|
||||
if (fileToRun) {
|
||||
specFiles = [fileToRun];
|
||||
} else if (existsDir(specsDir)) {
|
||||
specFiles = fs.readdirSync(specsDir).filter(function (file) {
|
||||
return (/\.json$/).test(file);
|
||||
}).map(function (file) {
|
||||
return path.basename(file).replace(/\.json$/, '');
|
||||
}).sort();
|
||||
} else {
|
||||
specFiles = [];
|
||||
}
|
||||
|
||||
function getSpecs (specArea) {
|
||||
return JSON.parse(fs.readFileSync(path.join(specsDir, specArea + '.' + 'json'), 'utf8'));
|
||||
}
|
||||
|
||||
describe('Mustache spec compliance', function () {
|
||||
beforeEach(function () {
|
||||
Mustache.clearCache();
|
||||
});
|
||||
|
||||
specFiles.forEach(function (specArea) {
|
||||
describe('- ' + specArea + ':', function () {
|
||||
var specs = getSpecs(specArea);
|
||||
specs.tests.forEach(function (test) {
|
||||
var it_ = (!noSkip && skipTests[specArea] && skipTests[specArea].indexOf(test.name) >= 0) ? it.skip : it;
|
||||
it_(test.name + ' - ' + test.desc, function () {
|
||||
if (test.data.lambda && test.data.lambda.__tag__ === 'code')
|
||||
test.data.lambda = eval('(function() { return ' + test.data.lambda.js + '; })');
|
||||
var output = Mustache.render(test.template, test.data, test.partials);
|
||||
assert.equal(output, test.expected);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user