diff options
Diffstat (limited to 'dgbuilder/dgeflows/node_modules/ejs/test/ejs.js')
-rw-r--r-- | dgbuilder/dgeflows/node_modules/ejs/test/ejs.js | 761 |
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 &<script>', function () { - assert.equal(ejs.render('<%= name %>', {name: ' <script>'}), - '&nbsp;<script>'); - }); - - test('should escape \'', function () { - assert.equal(ejs.render('<%= name %>', {name: 'The Jones\'s'}), - 'The Jones's'); - }); - - test('should escape &foo_bar;', function () { - assert.equal(ejs.render('<%= name %>', {name: '&foo_bar;'}), - '&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(); - }); - }); - }); -}); |