summaryrefslogtreecommitdiffstats
path: root/dgbuilder/dgeflows/node_modules/ejs/test/ejs.js
diff options
context:
space:
mode:
Diffstat (limited to 'dgbuilder/dgeflows/node_modules/ejs/test/ejs.js')
-rw-r--r--dgbuilder/dgeflows/node_modules/ejs/test/ejs.js761
1 files changed, 0 insertions, 761 deletions
diff --git a/dgbuilder/dgeflows/node_modules/ejs/test/ejs.js b/dgbuilder/dgeflows/node_modules/ejs/test/ejs.js
deleted file mode 100644
index 327e94ef..00000000
--- a/dgbuilder/dgeflows/node_modules/ejs/test/ejs.js
+++ /dev/null
@@ -1,761 +0,0 @@
-/* jshint mocha: true */
-
-/**
- * Module dependencies.
- */
-
-var ejs = require('..')
- , fs = require('fs')
- , read = fs.readFileSync
- , assert = require('assert')
- , path = require('path');
-
-try {
- fs.mkdirSync(__dirname + '/tmp');
-} catch (ex) {
- if (ex.code !== 'EEXIST') {
- throw ex;
- }
-}
-
-// From https://gist.github.com/pguillory/729616
-function hook_stdio(stream, callback) {
- var old_write = stream.write;
-
- stream.write = (function() {
- return function(string, encoding, fd) {
- callback(string, encoding, fd);
- };
- })(stream.write);
-
- return function() {
- stream.write = old_write;
- };
-}
-
-/**
- * Load fixture `name`.
- */
-
-function fixture(name) {
- return read('test/fixtures/' + name, 'utf8').replace(/\r/g, '').trim();
-}
-
-/**
- * User fixtures.
- */
-
-var users = [];
-users.push({name: 'geddy'});
-users.push({name: 'neil'});
-users.push({name: 'alex'});
-
-suite('ejs.compile(str, options)', function () {
- test('compile to a function', function () {
- var fn = ejs.compile('<p>yay</p>');
- assert.equal(fn(), '<p>yay</p>');
- });
-
- test('empty input works', function () {
- var fn = ejs.compile('');
- assert.equal(fn(), '');
- });
-
- test('throw if there are syntax errors', function () {
- try {
- ejs.compile(fixture('fail.ejs'));
- }
- catch (err) {
- assert.ok(err.message.indexOf('compiling ejs') > -1);
-
- try {
- ejs.compile(fixture('fail.ejs'), {filename: 'fail.ejs'});
- }
- catch (err) {
- assert.ok(err.message.indexOf('fail.ejs') > -1);
- return;
- }
- }
- throw new Error('no error reported when there should be');
- });
-
- test('allow customizing delimiter local var', function () {
- var fn;
- fn = ejs.compile('<p><?= name ?></p>', {delimiter: '?'});
- assert.equal(fn({name: 'geddy'}), '<p>geddy</p>');
-
- fn = ejs.compile('<p><:= name :></p>', {delimiter: ':'});
- assert.equal(fn({name: 'geddy'}), '<p>geddy</p>');
-
- fn = ejs.compile('<p><$= name $></p>', {delimiter: '$'});
- assert.equal(fn({name: 'geddy'}), '<p>geddy</p>');
- });
-
- test('default to using ejs.delimiter', function () {
- var fn;
- ejs.delimiter = '&';
- fn = ejs.compile('<p><&= name &></p>');
- assert.equal(fn({name: 'geddy'}), '<p>geddy</p>');
-
- fn = ejs.compile('<p><|= name |></p>', {delimiter: '|'});
- assert.equal(fn({name: 'geddy'}), '<p>geddy</p>');
- delete ejs.delimiter;
- });
-
- test('have a working client option', function () {
- var fn
- , str
- , preFn;
- fn = ejs.compile('<p><%= foo %></p>', {client: true});
- str = fn.toString();
- if (!process.env.running_under_istanbul) {
- eval('var preFn = ' + str);
- assert.equal(preFn({foo: 'bar'}), '<p>bar</p>');
- }
- });
-
- test('support client mode without locals', function () {
- var fn
- , str
- , preFn;
- fn = ejs.compile('<p><%= "foo" %></p>', {client: true});
- str = fn.toString();
- if (!process.env.running_under_istanbul) {
- eval('var preFn = ' + str);
- assert.equal(preFn(), '<p>foo</p>');
- }
- });
-});
-
-suite('ejs.render(str, data)', function () {
- test('render the template', function () {
- assert.equal(ejs.render('<p>yay</p>'), '<p>yay</p>');
- });
-
- test('empty input works', function () {
- assert.equal(ejs.render(''), '');
- });
-
- test('undefined renders nothing escaped', function () {
- assert.equal(ejs.render('<%= undefined %>'), '');
- });
-
- test('undefined renders nothing raw', function () {
- assert.equal(ejs.render('<%- undefined %>'), '');
- });
-
- test('null renders nothing escaped', function () {
- assert.equal(ejs.render('<%= null %>'), '');
- });
-
- test('null renders nothing raw', function () {
- assert.equal(ejs.render('<%- null %>'), '');
- });
-
- test('zero-value data item renders something escaped', function () {
- assert.equal(ejs.render('<%= 0 %>'), '0');
- });
-
- test('zero-value data object renders something raw', function () {
- assert.equal(ejs.render('<%- 0 %>'), '0');
- });
-
- test('accept locals', function () {
- assert.equal(ejs.render('<p><%= name %></p>', {name: 'geddy'}),
- '<p>geddy</p>');
- });
-
- test('accept locals without using with() {}', function () {
- assert.equal(ejs.render('<p><%= locals.name %></p>', {name: 'geddy'},
- {_with: false}),
- '<p>geddy</p>');
- assert.throws(function() {
- ejs.render('<p><%= name %></p>', {name: 'geddy'},
- {_with: false});
- }, /name is not defined/);
- });
-
- test('accept custom name for locals', function () {
- ejs.localsName = 'it';
- assert.equal(ejs.render('<p><%= it.name %></p>', {name: 'geddy'},
- {_with: false}),
- '<p>geddy</p>');
- assert.throws(function() {
- ejs.render('<p><%= name %></p>', {name: 'geddy'},
- {_with: false});
- }, /name is not defined/);
- ejs.localsName = 'locals';
- });
-
- test('support caching (pass 1)', function () {
- var file = __dirname + '/tmp/render.ejs'
- , options = {cache: true, filename: file}
- , out = ejs.render('<p>Old</p>', {}, options)
- , expected = '<p>Old</p>';
- assert.equal(out, expected);
- });
-
- test('support caching (pass 2)', function () {
- var file = __dirname + '/tmp/render.ejs'
- , options = {cache: true, filename: file}
- , out = ejs.render('<p>New</p>', {}, options)
- , expected = '<p>Old</p>';
- assert.equal(out, expected);
- });
-});
-
-suite('ejs.renderFile(path, [data], [options], fn)', function () {
- test('render a file', function(done) {
- ejs.renderFile('test/fixtures/para.ejs', function(err, html) {
- if (err) {
- return done(err);
- }
- assert.equal(html, '<p>hey</p>');
- done();
- });
- });
-
- test('callback is async', function(done) {
- var async = false;
- ejs.renderFile('test/fixtures/para.ejs', function(err, html) {
- if (async) {
- return done();
- }
- throw new Error('not async');
- });
- async = true;
- });
-
- test('accept locals', function(done) {
- var data = {name: 'fonebone'}
- , options = {delimiter: '$'};
- ejs.renderFile('test/fixtures/user.ejs', data, options, function(err, html) {
- if (err) {
- return done(err);
- }
- assert.equal(html, '<h1>fonebone</h1>');
- done();
- });
- });
-
- test('accept locals without using with() {}', function(done) {
- var data = {name: 'fonebone'}
- , options = {delimiter: '$', _with: false}
- , doneCount = 0;
- ejs.renderFile('test/fixtures/user-no-with.ejs', data, options,
- function(err, html) {
- if (err) {
- if (doneCount === 2) {
- return;
- }
- doneCount = 2;
- return done(err);
- }
- assert.equal(html, '<h1>fonebone</h1>');
- doneCount++;
- if (doneCount === 2) {
- done();
- }
- });
- ejs.renderFile('test/fixtures/user.ejs', data, options, function(err) {
- if (!err) {
- if (doneCount === 2) {
- return;
- }
- doneCount = 2;
- return done(new Error('error not thrown'));
- }
- doneCount++;
- if (doneCount === 2) {
- done();
- }
- });
- });
-
- test('not catch err thrown by callback', function(done) {
- var data = {name: 'fonebone'}
- , options = {delimiter: '$'}
- , counter = 0;
-
- var d = require('domain').create();
- d.on('error', function (err) {
- assert.equal(counter, 1);
- assert.equal(err.message, 'Exception in callback');
- done();
- });
- d.run(function () {
- // process.nextTick() needed to work around mochajs/mocha#513
- //
- // tl;dr: mocha doesn't support synchronous exception throwing in
- // domains. Have to make it async. Ticket closed because: "domains are
- // deprecated :D"
- process.nextTick(function () {
- ejs.renderFile('test/fixtures/user.ejs', data, options,
- function(err) {
- counter++;
- if (err) {
- assert.notEqual(err.message, 'Exception in callback');
- return done(err);
- }
- throw new Error('Exception in callback');
- });
- });
- });
- });
-
- test('support caching (pass 1)', function (done) {
- var expected = '<p>Old</p>'
- , file = __dirname + '/tmp/renderFile.ejs'
- , options = {cache: true};
- fs.writeFileSync(file, '<p>Old</p>');
-
- ejs.renderFile(file, {}, options, function (err, out) {
- if (err) {
- done(err);
- }
- assert.equal(out, expected);
- done();
- });
- });
-
- test('support caching (pass 2)', function (done) {
- var expected = '<p>Old</p>'
- , file = __dirname + '/tmp/renderFile.ejs'
- , options = {cache: true};
- fs.writeFileSync(file, '<p>New</p>');
-
- ejs.renderFile(file, {}, options, function (err, out) {
- if (err) {
- done(err);
- }
- assert.equal(out, expected);
- done();
- });
- });
-});
-
-suite('ejs.clearCache()', function () {
- test('work properly', function () {
- var expected = '<p>Old</p>'
- , file = __dirname + '/tmp/clearCache.ejs'
- , options = {cache: true, filename: file}
- , out = ejs.render('<p>Old</p>', {}, options);
- assert.equal(out, expected);
-
- ejs.clearCache();
-
- expected = '<p>New</p>';
- out = ejs.render('<p>New</p>', {}, options);
- assert.equal(out, expected);
- });
-});
-
-suite('<%', function () {
- test('without semicolons', function () {
- assert.equal(ejs.render(fixture('no.semicolons.ejs')),
- fixture('no.semicolons.html'));
- });
-});
-
-suite('<%=', function () {
- test('escape &amp;<script>', function () {
- assert.equal(ejs.render('<%= name %>', {name: '&nbsp;<script>'}),
- '&amp;nbsp;&lt;script&gt;');
- });
-
- test('should escape \'', function () {
- assert.equal(ejs.render('<%= name %>', {name: 'The Jones\'s'}),
- 'The Jones&#39;s');
- });
-
- test('should escape &foo_bar;', function () {
- assert.equal(ejs.render('<%= name %>', {name: '&foo_bar;'}),
- '&amp;foo_bar;');
- });
-});
-
-suite('<%-', function () {
- test('not escape', function () {
- assert.equal(ejs.render('<%- name %>', {name: '<script>'}),
- '<script>');
- });
-
- test('terminate gracefully if no close tag is found', function () {
- try {
- ejs.compile('<h1>oops</h1><%- name ->');
- throw new Error('Expected parse failure');
- }
- catch (err) {
- assert.ok(err.message.indexOf('Could not find matching close tag for') > -1);
- }
- });
-});
-
-suite('%>', function () {
- test('produce newlines', function () {
- assert.equal(ejs.render(fixture('newlines.ejs'), {users: users}),
- fixture('newlines.html'));
- });
- test('works with `-%>` interspersed', function () {
- assert.equal(ejs.render(fixture('newlines.mixed.ejs'), {users: users}),
- fixture('newlines.mixed.html'));
- });
- test('consecutive tags work', function () {
- assert.equal(ejs.render(fixture('consecutive-tags.ejs')),
- fixture('consecutive-tags.html'));
- });
-});
-
-suite('-%>', function () {
- test('not produce newlines', function () {
- assert.equal(ejs.render(fixture('no.newlines.ejs'), {users: users}),
- fixture('no.newlines.html'));
- });
- test('stack traces work', function () {
- try {
- ejs.render(fixture('no.newlines.error.ejs'));
- }
- catch (e) {
- if (e.message.indexOf('>> 4| <%= qdata %>') > -1) {
- return;
- }
- throw e;
- }
- throw new Error('Expected ReferenceError');
- });
-});
-
-suite('<%%', function () {
- test('produce literals', function () {
- assert.equal(ejs.render('<%%- "foo" %>'),
- '<%- "foo" %>');
- });
- test('work without an end tag', function () {
- assert.equal(ejs.render('<%%'), '<%');
- assert.equal(ejs.render(fixture('literal.ejs'), {}, {delimiter: ' '}),
- fixture('literal.html'));
- });
-});
-
-suite('single quotes', function () {
- test('not mess up the constructed function', function () {
- assert.equal(ejs.render(fixture('single-quote.ejs')),
- fixture('single-quote.html'));
- });
-});
-
-suite('double quotes', function () {
- test('not mess up the constructed function', function () {
- assert.equal(ejs.render(fixture('double-quote.ejs')),
- fixture('double-quote.html'));
- });
-});
-
-suite('backslashes', function () {
- test('escape', function () {
- assert.equal(ejs.render(fixture('backslash.ejs')),
- fixture('backslash.html'));
- });
-});
-
-suite('messed up whitespace', function () {
- test('work', function () {
- assert.equal(ejs.render(fixture('messed.ejs'), {users: users}),
- fixture('messed.html'));
- });
-});
-
-suite('exceptions', function () {
- test('produce useful stack traces', function () {
- try {
- ejs.render(fixture('error.ejs'), {}, {filename: 'error.ejs'});
- }
- catch (err) {
- assert.equal(err.path, 'error.ejs');
- assert.equal(err.stack.split('\n').slice(0, 8).join('\n'), fixture('error.out'));
- return;
- }
- throw new Error('no error reported when there should be');
- });
-
- test('not include fancy stack info if compileDebug is false', function () {
- try {
- ejs.render(fixture('error.ejs'), {}, {
- filename: 'error.ejs',
- compileDebug: false
- });
- }
- catch (err) {
- assert.ok(!err.path);
- assert.notEqual(err.stack.split('\n').slice(0, 8).join('\n'), fixture('error.out'));
- return;
- }
- throw new Error('no error reported when there should be');
- });
-
- var unhook = null;
- test('log JS source when debug is set', function (done) {
- var out = ''
- , needToExit = false;
- unhook = hook_stdio(process.stdout, function (str) {
- out += str;
- if (needToExit) {
- return;
- }
- if (out.indexOf('__output')) {
- needToExit = true;
- unhook();
- unhook = null;
- return done();
- }
- });
- ejs.render(fixture('hello-world.ejs'), {}, {debug: true});
- });
- teardown(function() {
- if (!unhook) {
- return;
- }
- unhook();
- unhook = null;
- });
-});
-
-suite('include()', function () {
- test('include ejs', function () {
- var file = 'test/fixtures/include-simple.ejs';
- assert.equal(ejs.render(fixture('include-simple.ejs'), {}, {filename: file}),
- fixture('include-simple.html'));
- });
-
- test('include ejs fails without `filename`', function () {
- try {
- ejs.render(fixture('include-simple.ejs'));
- }
- catch (err) {
- assert.ok(err.message.indexOf('requires the \'filename\' option') > -1);
- return;
- }
- throw new Error('expected inclusion error');
- });
-
- test('strips BOM', function () {
- assert.equal(
- ejs.render('<%- include("fixtures/includes/bom.ejs") %>',
- {}, {filename: path.join(__dirname, 'f.ejs')}),
- '<p>This is a file with BOM.</p>');
- });
-
- test('include ejs with locals', function () {
- var file = 'test/fixtures/include.ejs';
- assert.equal(ejs.render(fixture('include.ejs'), {pets: users}, {filename: file, delimiter: '@'}),
- fixture('include.html'));
- });
-
- test('include ejs with absolute path and locals', function () {
- var file = 'test/fixtures/include-abspath.ejs';
- assert.equal(ejs.render(fixture('include-abspath.ejs'),
- {dir: path.join(__dirname, 'fixtures'), pets: users, path: path},
- {filename: file, delimiter: '@'}),
- fixture('include.html'));
- });
-
- test('work when nested', function () {
- var file = 'test/fixtures/menu.ejs';
- assert.equal(ejs.render(fixture('menu.ejs'), {pets: users}, {filename: file}),
- fixture('menu.html'));
- });
-
- test('work with a variable path', function () {
- var file = 'test/fixtures/menu_var.ejs',
- includePath = 'includes/menu-item';
- assert.equal(ejs.render(fixture('menu.ejs'), {pets: users, varPath: includePath}, {filename: file}),
- fixture('menu.html'));
- });
-
- test('include arbitrary files as-is', function () {
- var file = 'test/fixtures/include.css.ejs';
- assert.equal(ejs.render(fixture('include.css.ejs'), {pets: users}, {filename: file}),
- fixture('include.css.html'));
- });
-
- test('pass compileDebug to include', function () {
- var file = 'test/fixtures/include.ejs'
- , fn;
- fn = ejs.compile(fixture('include.ejs'), {
- filename: file
- , delimiter: '@'
- , compileDebug: false
- });
- try {
- // Render without a required variable reference
- fn({foo: 'asdf'});
- }
- catch(e) {
- assert.equal(e.message, 'pets is not defined');
- assert.ok(!e.path);
- return;
- }
- throw new Error('no error reported when there should be');
- });
-
- test('is dynamic', function () {
- fs.writeFileSync(__dirname + '/tmp/include.ejs', '<p>Old</p>');
- var file = 'test/fixtures/include_cache.ejs'
- , options = {filename: file}
- , out = ejs.compile(fixture('include_cache.ejs'), options);
- assert.equal(out(), '<p>Old</p>');
-
- fs.writeFileSync(__dirname + '/tmp/include.ejs', '<p>New</p>');
- assert.equal(out(), '<p>New</p>');
- });
-
- test('support caching (pass 1)', function () {
- fs.writeFileSync(__dirname + '/tmp/include.ejs', '<p>Old</p>');
- var file = 'test/fixtures/include_cache.ejs'
- , options = {cache: true, filename: file}
- , out = ejs.render(fixture('include_cache.ejs'), {}, options)
- , expected = fixture('include_cache.html');
- assert.equal(out, expected);
- });
-
- test('support caching (pass 2)', function () {
- fs.writeFileSync(__dirname + '/tmp/include.ejs', '<p>New</p>');
- var file = 'test/fixtures/include_cache.ejs'
- , options = {cache: true, filename: file}
- , out = ejs.render(fixture('include_cache.ejs'), {}, options)
- , expected = fixture('include_cache.html');
- assert.equal(out, expected);
- });
-});
-
-suite('preprocessor include', function () {
- test('work', function () {
- var file = 'test/fixtures/include_preprocessor.ejs';
- assert.equal(ejs.render(fixture('include_preprocessor.ejs'), {pets: users}, {filename: file, delimiter: '@'}),
- fixture('include_preprocessor.html'));
- });
-
- test('fails without `filename`', function () {
- try {
- ejs.render(fixture('include_preprocessor.ejs'), {pets: users}, {delimiter: '@'});
- }
- catch (err) {
- assert.ok(err.message.indexOf('requires the \'filename\' option') > -1);
- return;
- }
- throw new Error('expected inclusion error');
- });
-
- test('strips BOM', function () {
- assert.equal(
- ejs.render('<% include fixtures/includes/bom.ejs %>',
- {}, {filename: path.join(__dirname, 'f.ejs')}),
- '<p>This is a file with BOM.</p>');
- });
-
- test('work when nested', function () {
- var file = 'test/fixtures/menu_preprocessor.ejs';
- assert.equal(ejs.render(fixture('menu_preprocessor.ejs'), {pets: users}, {filename: file}),
- fixture('menu_preprocessor.html'));
- });
-
- test('include arbitrary files as-is', function () {
- var file = 'test/fixtures/include_preprocessor.css.ejs';
- assert.equal(ejs.render(fixture('include_preprocessor.css.ejs'), {pets: users}, {filename: file}),
- fixture('include_preprocessor.css.html'));
- });
-
- test('pass compileDebug to include', function () {
- var file = 'test/fixtures/include_preprocessor.ejs'
- , fn;
- fn = ejs.compile(fixture('include_preprocessor.ejs'), {
- filename: file
- , delimiter: '@'
- , compileDebug: false
- });
- try {
- // Render without a required variable reference
- fn({foo: 'asdf'});
- }
- catch(e) {
- assert.equal(e.message, 'pets is not defined');
- assert.ok(!e.path);
- return;
- }
- throw new Error('no error reported when there should be');
- });
-
- test('is static', function () {
- fs.writeFileSync(__dirname + '/tmp/include_preprocessor.ejs', '<p>Old</p>');
- var file = 'test/fixtures/include_preprocessor_cache.ejs'
- , options = {filename: file}
- , out = ejs.compile(fixture('include_preprocessor_cache.ejs'), options);
- assert.equal(out(), '<p>Old</p>');
-
- fs.writeFileSync(__dirname + '/tmp/include_preprocessor.ejs', '<p>New</p>');
- assert.equal(out(), '<p>Old</p>');
- });
-
- test('support caching (pass 1)', function () {
- fs.writeFileSync(__dirname + '/tmp/include_preprocessor.ejs', '<p>Old</p>');
- var file = 'test/fixtures/include_preprocessor_cache.ejs'
- , options = {cache: true, filename: file}
- , out = ejs.render(fixture('include_preprocessor_cache.ejs'), {}, options)
- , expected = fixture('include_preprocessor_cache.html');
- assert.equal(out, expected);
- });
-
- test('support caching (pass 2)', function () {
- fs.writeFileSync(__dirname + '/tmp/include_preprocessor.ejs', '<p>New</p>');
- var file = 'test/fixtures/include_preprocessor_cache.ejs'
- , options = {cache: true, filename: file}
- , out = ejs.render(fixture('include_preprocessor_cache.ejs'), {}, options)
- , expected = fixture('include_preprocessor_cache.html');
- assert.equal(out, expected);
- });
-});
-
-suite('comments', function () {
- test('fully render with comments removed', function () {
- assert.equal(ejs.render(fixture('comments.ejs')),
- fixture('comments.html'));
- });
-});
-
-suite('require', function () {
-
- // Only works with inline/preprocessor includes
- test('allow ejs templates to be required as node modules', function () {
- var file = 'test/fixtures/include_preprocessor.ejs'
- , template = require(__dirname + '/fixtures/menu_preprocessor.ejs');
- if (!process.env.running_under_istanbul) {
- assert.equal(template({filename: file, pets: users}),
- fixture('menu_preprocessor.html'));
- }
- });
-});
-
-suite('examples', function () {
- function noop () {}
- fs.readdirSync('examples').forEach(function (f) {
- if (!/\.js$/.test(f)) {
- return;
- }
- suite(f, function () {
- test('doesn\'t throw any errors', function () {
- var stderr = hook_stdio(process.stderr, noop)
- , stdout = hook_stdio(process.stdout, noop);
- try {
- require('../examples/' + f);
- }
- catch (ex) {
- stdout();
- stderr();
- throw ex;
- }
- stdout();
- stderr();
- });
- });
- });
-});