From 716351ec416ed1443681f4c721795432343438cc Mon Sep 17 00:00:00 2001 From: John Gee Date: Sat, 30 Jan 2021 17:20:18 +1300 Subject: [PATCH 1/3] Add cjs to list of expected node script extensions --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index f1cf9eaa1..b53035c78 100644 --- a/index.js +++ b/index.js @@ -1317,7 +1317,7 @@ class Command extends EventEmitter { _executeSubCommand(subcommand, args) { args = args.slice(); let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows. - const sourceExt = ['.js', '.ts', '.tsx', '.mjs']; + const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs']; // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command. this._checkForMissingMandatoryOptions(); From e428c4e6e15a62e691f57c2a097938c77bf8dea4 Mon Sep 17 00:00:00 2001 From: John Gee Date: Sat, 30 Jan 2021 17:54:16 +1300 Subject: [PATCH 2/3] Extend file extension tests --- ...ommand.executableSubcommand.lookup.test.js | 20 +++++++++++++++---- tests/fixtures-extensions/pm-try-cjs.cjs | 1 + tests/fixtures-extensions/pm-try-mjs.mjs | 1 + tests/fixtures-extensions/pm-try-ts.ts | 1 + tests/fixtures-extensions/pm.js | 10 ++++++++++ tests/fixtures-ts/pm-install.ts | 3 --- tests/fixtures-ts/pm.ts | 8 -------- 7 files changed, 29 insertions(+), 15 deletions(-) create mode 100644 tests/fixtures-extensions/pm-try-cjs.cjs create mode 100644 tests/fixtures-extensions/pm-try-mjs.mjs create mode 100644 tests/fixtures-extensions/pm-try-ts.ts create mode 100644 tests/fixtures-extensions/pm.js delete mode 100644 tests/fixtures-ts/pm-install.ts delete mode 100644 tests/fixtures-ts/pm.ts diff --git a/tests/command.executableSubcommand.lookup.test.js b/tests/command.executableSubcommand.lookup.test.js index 32fcc389b..419d0a537 100644 --- a/tests/command.executableSubcommand.lookup.test.js +++ b/tests/command.executableSubcommand.lookup.test.js @@ -83,11 +83,23 @@ testOrSkipOnWindows('when subcommand file is double symlink then lookup succeeds test('when subcommand suffix is .ts then lookup succeeds', async() => { // We support looking for ts files for ts-node in particular, but don't need to test ts-node itself. - // The program and the subcommand `pm-install.ts` are both plain JavaScript code. - const binLinkTs = path.join(__dirname, 'fixtures-ts', 'pm.ts'); + // The subcommand is both plain JavaScript code for this test. + const binLinkTs = path.join(__dirname, 'fixtures-extensions', 'pm.js'); // childProcess.execFile('node', ['-r', 'ts-node/register', binLinkTs, 'install'], function(_error, stdout, stderr) { - const { stdout } = await execFileAsync('node', [binLinkTs, 'install']); - expect(stdout).toBe('install\n'); + const { stdout } = await execFileAsync('node', [binLinkTs, 'try-ts']); + expect(stdout).toBe('found .ts\n'); +}); + +test('when subcommand suffix is .cjs then lookup succeeds', async() => { + const binLinkTs = path.join(__dirname, 'fixtures-extensions', 'pm.js'); + const { stdout } = await execFileAsync('node', [binLinkTs, 'try-cjs']); + expect(stdout).toBe('found .cjs\n'); +}); + +test('when subcommand suffix is .mjs then lookup succeeds', async() => { + const binLinkTs = path.join(__dirname, 'fixtures-extensions', 'pm.js'); + const { stdout } = await execFileAsync('node', [binLinkTs, 'try-mjs']); + expect(stdout).toBe('found .mjs\n'); }); test('when subsubcommand then lookup sub-sub-command', async() => { diff --git a/tests/fixtures-extensions/pm-try-cjs.cjs b/tests/fixtures-extensions/pm-try-cjs.cjs new file mode 100644 index 000000000..dc14394be --- /dev/null +++ b/tests/fixtures-extensions/pm-try-cjs.cjs @@ -0,0 +1 @@ +console.log('found .cjs'); diff --git a/tests/fixtures-extensions/pm-try-mjs.mjs b/tests/fixtures-extensions/pm-try-mjs.mjs new file mode 100644 index 000000000..262cc527e --- /dev/null +++ b/tests/fixtures-extensions/pm-try-mjs.mjs @@ -0,0 +1 @@ +console.log('found .mjs'); diff --git a/tests/fixtures-extensions/pm-try-ts.ts b/tests/fixtures-extensions/pm-try-ts.ts new file mode 100644 index 000000000..b28c8fcc3 --- /dev/null +++ b/tests/fixtures-extensions/pm-try-ts.ts @@ -0,0 +1 @@ +console.log('found .ts'); diff --git a/tests/fixtures-extensions/pm.js b/tests/fixtures-extensions/pm.js new file mode 100644 index 000000000..9d56a08ba --- /dev/null +++ b/tests/fixtures-extensions/pm.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node + +var program = require('../../'); + +program + .version('0.0.1') + .command('try-ts', 'test file extension lookup') + .command('try-cjs', 'test file extension lookup') + .command('try-mjs', 'test file extension lookup') + .parse(process.argv); diff --git a/tests/fixtures-ts/pm-install.ts b/tests/fixtures-ts/pm-install.ts deleted file mode 100644 index a99408b45..000000000 --- a/tests/fixtures-ts/pm-install.ts +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -console.log('install'); diff --git a/tests/fixtures-ts/pm.ts b/tests/fixtures-ts/pm.ts deleted file mode 100644 index 41f8fc002..000000000 --- a/tests/fixtures-ts/pm.ts +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var program = require('../../'); - -program - .version('0.0.1') - .command('install [name]', 'install one or more packages') - .parse(process.argv); From 2e9573b46fc3b147cb02ce2f2778c853fb215f17 Mon Sep 17 00:00:00 2001 From: John Gee Date: Sat, 30 Jan 2021 17:56:41 +1300 Subject: [PATCH 3/3] Lint, and simplify code --- tests/fixtures-extensions/pm.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/fixtures-extensions/pm.js b/tests/fixtures-extensions/pm.js index 9d56a08ba..8aff56027 100644 --- a/tests/fixtures-extensions/pm.js +++ b/tests/fixtures-extensions/pm.js @@ -1,9 +1,8 @@ #!/usr/bin/env node -var program = require('../../'); +const program = require('../../'); program - .version('0.0.1') .command('try-ts', 'test file extension lookup') .command('try-cjs', 'test file extension lookup') .command('try-mjs', 'test file extension lookup')