-
Notifications
You must be signed in to change notification settings - Fork 30.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
node: add -c|--check CLI arg to syntax check script
PR-URL: #2411 Reviewed-By: Rod Vagg <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Evan Lucas <[email protected]>
- Loading branch information
Showing
11 changed files
with
136 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
var foo bar; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#!/usr/bin/env node | ||
var foo bar; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
var foo = 'bar'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#!/usr/bin/env node | ||
var foo = 'bar'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
}); | ||
}); |