summaryrefslogtreecommitdiff
path: root/test/sequential
diff options
context:
space:
mode:
authorRich Trott <rtrott@gmail.com>2018-12-09 09:44:44 -0800
committerRich Trott <rtrott@gmail.com>2018-12-12 21:06:06 -0800
commita3801e96835821b71dd97b3f8513c56814bcf8fa (patch)
tree238d893477aebf3b01ee376f48f92efd141c1d5a /test/sequential
parentc61327d37673ab2ea454d14c36329b113aaca32a (diff)
downloadandroid-node-v8-a3801e96835821b71dd97b3f8513c56814bcf8fa.tar.gz
android-node-v8-a3801e96835821b71dd97b3f8513c56814bcf8fa.tar.bz2
android-node-v8-a3801e96835821b71dd97b3f8513c56814bcf8fa.zip
test: split test-cli-syntax into multiple tests
Split test-cli-syntax into multiple files to improve reliability and/or isolate unreliable test cases. Move test cases back to parallel as appropriate. PR-URL: https://github.com/nodejs/node/pull/24922 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Diffstat (limited to 'test/sequential')
-rw-r--r--test/sequential/sequential.status5
-rw-r--r--test/sequential/test-cli-syntax-bad.js47
-rw-r--r--test/sequential/test-cli-syntax-file-not-found.js39
-rw-r--r--test/sequential/test-cli-syntax-good.js43
-rw-r--r--test/sequential/test-cli-syntax-require.js35
-rw-r--r--test/sequential/test-cli-syntax.js171
6 files changed, 168 insertions, 172 deletions
diff --git a/test/sequential/sequential.status b/test/sequential/sequential.status
index b8f52a209a..3b6cc916fb 100644
--- a/test/sequential/sequential.status
+++ b/test/sequential/sequential.status
@@ -8,7 +8,10 @@ prefix sequential
# https://github.com/nodejs/node/issues/22336
test-gc-http-client: PASS,FLAKY
# https://github.com/nodejs/node/issues/24403
-test-cli-syntax: PASS,FLAKY
+test-cli-syntax-bad: PASS,FLAKY
+test-cli-syntax-file-not-found: PASS,FLAKY
+test-cli-syntax-good: PASS,FLAKY
+test-cli-syntax-require: PASS,FLAKY
[$system==win32]
# https://github.com/nodejs/node/issues/22327
diff --git a/test/sequential/test-cli-syntax-bad.js b/test/sequential/test-cli-syntax-bad.js
new file mode 100644
index 0000000000..e1c7f3bec5
--- /dev/null
+++ b/test/sequential/test-cli-syntax-bad.js
@@ -0,0 +1,47 @@
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+const { exec } = require('child_process');
+const fixtures = require('../common/fixtures');
+
+const node = process.execPath;
+
+// test both sets of arguments that check syntax
+const syntaxArgs = [
+ ['-c'],
+ ['--check']
+];
+
+// Match on the name of the `Error` but not the message as it is different
+// depending on the JavaScript engine.
+const syntaxErrorRE = /^SyntaxError: \b/m;
+
+// 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 = fixtures.path(file);
+
+ // loop each possible option, `-c` or `--check`
+ syntaxArgs.forEach(function(args) {
+ const _args = args.concat(file);
+ const cmd = [node, ..._args].join(' ');
+ exec(cmd, common.mustCall((err, stdout, stderr) => {
+ assert.strictEqual(err instanceof Error, true);
+ assert.strictEqual(err.code, 1);
+
+ // no stdout should be produced
+ assert.strictEqual(stdout, '');
+
+ // stderr should have a syntax error message
+ assert(syntaxErrorRE.test(stderr), `${syntaxErrorRE} === ${stderr}`);
+
+ // stderr should include the filename
+ assert(stderr.startsWith(file), `${stderr} starts with ${file}`);
+ }));
+ });
+});
diff --git a/test/sequential/test-cli-syntax-file-not-found.js b/test/sequential/test-cli-syntax-file-not-found.js
new file mode 100644
index 0000000000..848e2fe231
--- /dev/null
+++ b/test/sequential/test-cli-syntax-file-not-found.js
@@ -0,0 +1,39 @@
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+const { exec } = require('child_process');
+const fixtures = require('../common/fixtures');
+
+const node = process.execPath;
+
+// test both sets of arguments that check syntax
+const syntaxArgs = [
+ ['-c'],
+ ['--check']
+];
+
+const notFoundRE = /^Error: Cannot find module/m;
+
+// test file not found
+[
+ 'syntax/file_not_found.js',
+ 'syntax/file_not_found'
+].forEach(function(file) {
+ file = fixtures.path(file);
+
+ // loop each possible option, `-c` or `--check`
+ syntaxArgs.forEach(function(args) {
+ const _args = args.concat(file);
+ const cmd = [node, ..._args].join(' ');
+ exec(cmd, common.mustCall((err, stdout, stderr) => {
+ // no stdout should be produced
+ assert.strictEqual(stdout, '');
+
+ // stderr should have a module not found error message
+ assert(notFoundRE.test(stderr), `${notFoundRE} === ${stderr}`);
+
+ assert.strictEqual(err.code, 1);
+ }));
+ });
+});
diff --git a/test/sequential/test-cli-syntax-good.js b/test/sequential/test-cli-syntax-good.js
new file mode 100644
index 0000000000..1c2b3cbe55
--- /dev/null
+++ b/test/sequential/test-cli-syntax-good.js
@@ -0,0 +1,43 @@
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+const { exec } = require('child_process');
+const fixtures = require('../common/fixtures');
+
+const node = process.execPath;
+
+// test both sets of arguments that check syntax
+const 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',
+ 'syntax/illegal_if_not_wrapped.js'
+].forEach(function(file) {
+ file = fixtures.path(file);
+
+ // loop each possible option, `-c` or `--check`
+ syntaxArgs.forEach(function(args) {
+ const _args = args.concat(file);
+
+ const cmd = [node, ..._args].join(' ');
+ exec(cmd, common.mustCall((err, stdout, stderr) => {
+ if (err) {
+ console.log('-- stdout --');
+ console.log(stdout);
+ console.log('-- stderr --');
+ console.log(stderr);
+ }
+ assert.ifError(err);
+ assert.strictEqual(stdout, '');
+ assert.strictEqual(stderr, '');
+ }));
+ });
+});
diff --git a/test/sequential/test-cli-syntax-require.js b/test/sequential/test-cli-syntax-require.js
new file mode 100644
index 0000000000..ed13805eb9
--- /dev/null
+++ b/test/sequential/test-cli-syntax-require.js
@@ -0,0 +1,35 @@
+'use strict';
+
+const common = require('../common');
+const assert = require('assert');
+const { exec } = require('child_process');
+const fixtures = require('../common/fixtures');
+
+const node = process.execPath;
+
+// Match on the name of the `Error` but not the message as it is different
+// depending on the JavaScript engine.
+const syntaxErrorRE = /^SyntaxError: \b/m;
+
+// should work with -r flags
+['-c', '--check'].forEach(function(checkFlag) {
+ ['-r', '--require'].forEach(function(requireFlag) {
+ const preloadFile = fixtures.path('no-wrapper.js');
+ const file = fixtures.path('syntax', 'illegal_if_not_wrapped.js');
+ const args = [requireFlag, preloadFile, checkFlag, file];
+ const cmd = [node, ...args].join(' ');
+ exec(cmd, common.mustCall((err, stdout, stderr) => {
+ assert.strictEqual(err instanceof Error, true);
+ assert.strictEqual(err.code, 1);
+
+ // no stdout should be produced
+ assert.strictEqual(stdout, '');
+
+ // stderr should have a syntax error message
+ assert(syntaxErrorRE.test(stderr), `${syntaxErrorRE} === ${stderr}`);
+
+ // stderr should include the filename
+ assert(stderr.startsWith(file), `${stderr} starts with ${file}`);
+ }));
+ });
+});
diff --git a/test/sequential/test-cli-syntax.js b/test/sequential/test-cli-syntax.js
deleted file mode 100644
index 74e8c9fa91..0000000000
--- a/test/sequential/test-cli-syntax.js
+++ /dev/null
@@ -1,171 +0,0 @@
-'use strict';
-
-const common = require('../common');
-const assert = require('assert');
-const { exec, spawnSync } = require('child_process');
-const fixtures = require('../common/fixtures');
-
-const node = process.execPath;
-
-// test both sets of arguments that check syntax
-const syntaxArgs = [
- ['-c'],
- ['--check']
-];
-
-// Match on the name of the `Error` but not the message as it is different
-// depending on the JavaScript engine.
-const syntaxErrorRE = /^SyntaxError: \b/m;
-const notFoundRE = /^Error: Cannot find module/m;
-
-// test good syntax with and without shebang
-[
- 'syntax/good_syntax.js',
- 'syntax/good_syntax',
- 'syntax/good_syntax_shebang.js',
- 'syntax/good_syntax_shebang',
- 'syntax/illegal_if_not_wrapped.js'
-].forEach(function(file) {
- file = fixtures.path(file);
-
- // loop each possible option, `-c` or `--check`
- syntaxArgs.forEach(function(args) {
- const _args = args.concat(file);
-
- const cmd = [node, ..._args].join(' ');
- exec(cmd, common.mustCall((err, stdout, stderr) => {
- if (err) {
- console.log('-- stdout --');
- console.log(stdout);
- console.log('-- stderr --');
- console.log(stderr);
- }
- assert.ifError(err);
- assert.strictEqual(stdout, '');
- assert.strictEqual(stderr, '');
- }));
- });
-});
-
-// 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 = fixtures.path(file);
-
- // loop each possible option, `-c` or `--check`
- syntaxArgs.forEach(function(args) {
- const _args = args.concat(file);
- const cmd = [node, ..._args].join(' ');
- exec(cmd, common.mustCall((err, stdout, stderr) => {
- assert.strictEqual(err instanceof Error, true);
- assert.strictEqual(err.code, 1);
-
- // no stdout should be produced
- assert.strictEqual(stdout, '');
-
- // stderr should have a syntax error message
- assert(syntaxErrorRE.test(stderr), `${syntaxErrorRE} === ${stderr}`);
-
- // stderr should include the filename
- assert(stderr.startsWith(file), `${stderr} starts with ${file}`);
- }));
- });
-});
-
-// test file not found
-[
- 'syntax/file_not_found.js',
- 'syntax/file_not_found'
-].forEach(function(file) {
- file = fixtures.path(file);
-
- // loop each possible option, `-c` or `--check`
- syntaxArgs.forEach(function(args) {
- const _args = args.concat(file);
- const cmd = [node, ..._args].join(' ');
- exec(cmd, common.mustCall((err, stdout, stderr) => {
- // no stdout should be produced
- assert.strictEqual(stdout, '');
-
- // stderr should have a module not found error message
- assert(notFoundRE.test(stderr), `${notFoundRE} === ${stderr}`);
-
- assert.strictEqual(err.code, 1);
- }));
- });
-});
-
-// should not execute code piped from stdin with --check
-// loop each possible option, `-c` or `--check`
-syntaxArgs.forEach(function(args) {
- const stdin = 'throw new Error("should not get run");';
- const c = spawnSync(node, args, { encoding: 'utf8', input: stdin });
-
- // no stdout or stderr should be produced
- assert.strictEqual(c.stdout, '');
- assert.strictEqual(c.stderr, '');
-
- assert.strictEqual(c.status, 0);
-});
-
-// Should throw if code piped from stdin with --check has bad syntax
-// loop each possible option, `-c` or `--check`
-syntaxArgs.forEach(function(args) {
- const stdin = 'var foo bar;';
- const c = spawnSync(node, args, { encoding: 'utf8', input: stdin });
-
- // stderr should include '[stdin]' as the filename
- assert(c.stderr.startsWith('[stdin]'), `${c.stderr} starts with ${stdin}`);
-
- // no stdout or stderr should be produced
- assert.strictEqual(c.stdout, '');
-
- // stderr should have a syntax error message
- assert(syntaxErrorRE.test(c.stderr), `${syntaxErrorRE} === ${c.stderr}`);
-
- assert.strictEqual(c.status, 1);
-});
-
-// should throw if -c and -e flags are both passed
-['-c', '--check'].forEach(function(checkFlag) {
- ['-e', '--eval'].forEach(function(evalFlag) {
- const args = [checkFlag, evalFlag, 'foo'];
- const cmd = [node, ...args].join(' ');
- exec(cmd, common.mustCall((err, stdout, stderr) => {
- assert.strictEqual(err instanceof Error, true);
- assert.strictEqual(err.code, 9);
- assert(
- stderr.startsWith(
- `${node}: either --check or --eval can be used, not both`
- )
- );
- }));
- });
-});
-
-// should work with -r flags
-['-c', '--check'].forEach(function(checkFlag) {
- ['-r', '--require'].forEach(function(requireFlag) {
- const preloadFile = fixtures.path('no-wrapper.js');
- const file = fixtures.path('syntax', 'illegal_if_not_wrapped.js');
- const args = [requireFlag, preloadFile, checkFlag, file];
- const cmd = [node, ...args].join(' ');
- exec(cmd, common.mustCall((err, stdout, stderr) => {
- assert.strictEqual(err instanceof Error, true);
- assert.strictEqual(err.code, 1);
-
- // no stdout should be produced
- assert.strictEqual(stdout, '');
-
- // stderr should have a syntax error message
- assert(syntaxErrorRE.test(stderr), `${syntaxErrorRE} === ${stderr}`);
-
- // stderr should include the filename
- assert(stderr.startsWith(file), `${stderr} starts with ${file}`);
- }));
- });
-});