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>v4.x
committed by
James M Snell
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