mirror of https://github.com/lukechilds/node.git
Browse Source
PR-URL: https://github.com/nodejs/node/pull/2411 Reviewed-By: Rod Vagg <rod@vagg.org> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Evan Lucas <evanlucas@me.com>v5.x
Dave Eddy
9 years ago
committed by
Rod Vagg
11 changed files with 136 additions and 13 deletions
@ -0,0 +1,15 @@ |
|||
'use strict'; |
|||
|
|||
module.exports.stripBOM = stripBOM; |
|||
|
|||
/** |
|||
* Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) |
|||
* because the buffer-to-string conversion in `fs.readFileSync()` |
|||
* translates it to FEFF, the UTF-16 BOM. |
|||
*/ |
|||
function stripBOM(content) { |
|||
if (content.charCodeAt(0) === 0xFEFF) { |
|||
content = content.slice(1); |
|||
} |
|||
return content; |
|||
} |
@ -0,0 +1 @@ |
|||
var foo bar; |
@ -0,0 +1,2 @@ |
|||
#!/usr/bin/env node
|
|||
var foo bar; |
@ -0,0 +1 @@ |
|||
var foo = 'bar'; |
@ -0,0 +1,2 @@ |
|||
#!/usr/bin/env node
|
|||
var foo = 'bar'; |
@ -0,0 +1,84 @@ |
|||
'use strict'; |
|||
|
|||
const assert = require('assert'); |
|||
const spawnSync = require('child_process').spawnSync; |
|||
const path = require('path'); |
|||
|
|||
const common = require('../common'); |
|||
|
|||
var node = process.execPath; |
|||
|
|||
// test both sets of arguments that check syntax
|
|||
var syntaxArgs = [ |
|||
['-c'], |
|||
['--check'] |
|||
]; |
|||
|
|||
// test good syntax with and without shebang
|
|||
[ |
|||
'syntax/good_syntax.js', |
|||
'syntax/good_syntax', |
|||
'syntax/good_syntax_shebang.js', |
|||
'syntax/good_syntax_shebang', |
|||
].forEach(function(file) { |
|||
file = path.join(common.fixturesDir, file); |
|||
|
|||
// loop each possible option, `-c` or `--check`
|
|||
syntaxArgs.forEach(function(args) { |
|||
var _args = args.concat(file); |
|||
var c = spawnSync(node, _args, {encoding: 'utf8'}); |
|||
|
|||
// no output should be produced
|
|||
assert.equal(c.stdout, '', 'stdout produced'); |
|||
assert.equal(c.stderr, '', 'stderr produced'); |
|||
assert.equal(c.status, 0, 'code == ' + c.status); |
|||
}); |
|||
}); |
|||
|
|||
// test bad syntax with and without shebang
|
|||
[ |
|||
'syntax/bad_syntax.js', |
|||
'syntax/bad_syntax', |
|||
'syntax/bad_syntax_shebang.js', |
|||
'syntax/bad_syntax_shebang' |
|||
].forEach(function(file) { |
|||
file = path.join(common.fixturesDir, file); |
|||
|
|||
// loop each possible option, `-c` or `--check`
|
|||
syntaxArgs.forEach(function(args) { |
|||
var _args = args.concat(file); |
|||
var c = spawnSync(node, _args, {encoding: 'utf8'}); |
|||
|
|||
// no stdout should be produced
|
|||
assert.equal(c.stdout, '', 'stdout produced'); |
|||
|
|||
// stderr should have a syntax error message
|
|||
var match = c.stderr.match(/^SyntaxError: Unexpected identifier$/m); |
|||
assert(match, 'stderr incorrect'); |
|||
|
|||
assert.equal(c.status, 1, 'code == ' + c.status); |
|||
}); |
|||
}); |
|||
|
|||
// test file not found
|
|||
[ |
|||
'syntax/file_not_found.js', |
|||
'syntax/file_not_found' |
|||
].forEach(function(file) { |
|||
file = path.join(common.fixturesDir, file); |
|||
|
|||
// loop each possible option, `-c` or `--check`
|
|||
syntaxArgs.forEach(function(args) { |
|||
var _args = args.concat(file); |
|||
var c = spawnSync(node, _args, {encoding: 'utf8'}); |
|||
|
|||
// no stdout should be produced
|
|||
assert.equal(c.stdout, '', 'stdout produced'); |
|||
|
|||
// stderr should have a module not found error message
|
|||
var match = c.stderr.match(/^Error: Cannot find module/m); |
|||
assert(match, 'stderr incorrect'); |
|||
|
|||
assert.equal(c.status, 1, 'code == ' + c.status); |
|||
}); |
|||
}); |
Loading…
Reference in new issue