| @@ -131,7 +131,8 @@ function isStdin (view) { | |||||
| } | } | ||||
| function isJsFile (view) { | function isJsFile (view) { | ||||
| return path.extname(view) === '.js'; | |||||
| var extension = path.extname(view); | |||||
| return extension === '.js' || extension === '.cjs'; | |||||
| } | } | ||||
| function wasNotFound (err) { | function wasNotFound (err) { | ||||
| @@ -0,0 +1,3 @@ | |||||
| module.exports = { | |||||
| name: 'LeBron' | |||||
| }; | |||||
| @@ -0,0 +1,3 @@ | |||||
| module.exports = { | |||||
| name: 'LeBron' | |||||
| }; | |||||
| @@ -76,6 +76,24 @@ describe('Mustache CLI', function () { | |||||
| }); | }); | ||||
| }); | }); | ||||
| it('can handle view written in JavaScript with .js suffix', function (done) { | |||||
| exec('bin/mustache test/_files/cli.js test/_files/cli.mustache', function (err, stdout, stderr) { | |||||
| assert.equal(err, null); | |||||
| assert.equal(stderr, ''); | |||||
| assert.equal(stdout, expectedOutput); | |||||
| done(); | |||||
| }); | |||||
| }); | |||||
| it('can handle view written in JavaScript with .cjs suffix', function (done) { | |||||
| exec('bin/mustache test/_files/cli.cjs test/_files/cli.mustache', function (err, stdout, stderr) { | |||||
| assert.equal(err, null); | |||||
| assert.equal(stderr, ''); | |||||
| assert.equal(stdout, expectedOutput); | |||||
| done(); | |||||
| }); | |||||
| }); | |||||
| it('writes rendered template into the file specified by the third argument', function (done) { | it('writes rendered template into the file specified by the third argument', function (done) { | ||||
| var outputFile = 'test/_files/cli_output.txt'; | var outputFile = 'test/_files/cli_output.txt'; | ||||
| exec('bin/mustache test/_files/cli.json test/_files/cli.mustache ' + outputFile, function (err, stdout, stderr) { | exec('bin/mustache test/_files/cli.json test/_files/cli.mustache ' + outputFile, function (err, stdout, stderr) { | ||||
| @@ -13,6 +13,7 @@ function getContents (testName, ext) { | |||||
| function getView (testName) { | function getView (testName) { | ||||
| var view = getContents(testName, 'js'); | var view = getContents(testName, 'js'); | ||||
| if (!view) view = getContents(testName, 'cjs'); | |||||
| if (!view) throw new Error('Cannot find view for test "' + testName + '"'); | if (!view) throw new Error('Cannot find view for test "' + testName + '"'); | ||||
| return view; | return view; | ||||
| } | } | ||||
| @@ -34,9 +35,9 @@ if (testToRun) { | |||||
| testNames = testToRun.split(','); | testNames = testToRun.split(','); | ||||
| } else { | } else { | ||||
| testNames = fs.readdirSync(_files).filter(function (file) { | testNames = fs.readdirSync(_files).filter(function (file) { | ||||
| return (/\.js$/).test(file); | |||||
| return (/\.c?js$/).test(file); | |||||
| }).map(function (file) { | }).map(function (file) { | ||||
| return path.basename(file).replace(/\.js$/, ''); | |||||
| return path.basename(file).replace(/\.c?js$/, ''); | |||||
| }); | }); | ||||
| } | } | ||||