From 0fb0daa19caf21d8618e92bc2a65ffe15814ea6f Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Tue, 31 Jul 2018 22:00:31 -0700 Subject: [PATCH] cli: allow array value for --ouput-library. Fixes #557 --- bin/config-yargs.js | 2 +- bin/convert-argv.js | 3 ++- test/BinTestCases.test.js | 2 ++ test/binCases/output/output-library-many/index.js | 1 + test/binCases/output/output-library-many/stdin.js | 14 ++++++++++++++ test/binCases/output/output-library-many/test.opts | 4 ++++ .../binCases/output/output-library-single/index.js | 1 + .../binCases/output/output-library-single/stdin.js | 14 ++++++++++++++ .../output/output-library-single/test.opts | 4 ++++ 9 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 test/binCases/output/output-library-many/index.js create mode 100644 test/binCases/output/output-library-many/stdin.js create mode 100644 test/binCases/output/output-library-many/test.opts create mode 100644 test/binCases/output/output-library-single/index.js create mode 100644 test/binCases/output/output-library-single/stdin.js create mode 100644 test/binCases/output/output-library-single/test.opts diff --git a/bin/config-yargs.js b/bin/config-yargs.js index a02c774d0d7..5f112db0dfb 100644 --- a/bin/config-yargs.js +++ b/bin/config-yargs.js @@ -137,7 +137,7 @@ module.exports = function(yargs) { group: OUTPUT_GROUP }, "output-library": { - type: "string", + type: "array", describe: "Expose the exports of the entry point as library", group: OUTPUT_GROUP, requiresArg: true diff --git a/bin/convert-argv.js b/bin/convert-argv.js index 82fe87a410e..7d848fe2a93 100644 --- a/bin/convert-argv.js +++ b/bin/convert-argv.js @@ -441,7 +441,8 @@ module.exports = function(...args) { ifArg("output-library", function(value) { ensureObject(options, "output"); - options.output.library = value; + ensureArray(options.output, "library"); + options.output.library.push(value); }); ifArg("output-library-target", function(value) { diff --git a/test/BinTestCases.test.js b/test/BinTestCases.test.js index 4770851e713..e1e621164e8 100644 --- a/test/BinTestCases.test.js +++ b/test/BinTestCases.test.js @@ -68,9 +68,11 @@ const defaultArgs = loadOptsFile(path.join(casesPath, "test.opts")); describe("BinTestCases", function() { const tests = findTestsRecursive(casesPath); + const patternFilter = process.env.BIN_TEST_CASES_GREP ? new RegExp(process.env.BIN_TEST_CASES_GREP) : null; tests.forEach(testDirectory => { const testName = testDirectory.replace(casesPath, ""); + if (patternFilter && !testName.match(patternFilter)) return; const testArgs = getTestSpecificArguments(testDirectory) || defaultArgs; const testAssertions = require(path.join(testDirectory, "stdin.js")); const outputPath = path.join( diff --git a/test/binCases/output/output-library-many/index.js b/test/binCases/output/output-library-many/index.js new file mode 100644 index 00000000000..0d24e266fe2 --- /dev/null +++ b/test/binCases/output/output-library-many/index.js @@ -0,0 +1 @@ +module.exports = "index"; diff --git a/test/binCases/output/output-library-many/stdin.js b/test/binCases/output/output-library-many/stdin.js new file mode 100644 index 00000000000..5559c033585 --- /dev/null +++ b/test/binCases/output/output-library-many/stdin.js @@ -0,0 +1,14 @@ +"use strict"; + +const fs = require("fs"); +const path = require("path"); + +module.exports = function testAssertions(code, stdout, stderr) { + expect(code).toBe(0); + expect(stdout).toEqual(expect.anything()); + expect(stdout[7]).toMatch(/index\.js.*\{0\}/); + expect(stderr).toHaveLength(0); + + const output = fs.readFileSync(path.join(__dirname, "../../../js/bin/output/output-library-many/main.js"), "utf-8"); + expect(output).toContain("window.key1=window.key1||{},window.key1.key2=function"); +}; diff --git a/test/binCases/output/output-library-many/test.opts b/test/binCases/output/output-library-many/test.opts new file mode 100644 index 00000000000..d4ef1c27a33 --- /dev/null +++ b/test/binCases/output/output-library-many/test.opts @@ -0,0 +1,4 @@ +./index.js +--target async-node +--output-library-target window +--output-library key1 --output-library key2 diff --git a/test/binCases/output/output-library-single/index.js b/test/binCases/output/output-library-single/index.js new file mode 100644 index 00000000000..0d24e266fe2 --- /dev/null +++ b/test/binCases/output/output-library-single/index.js @@ -0,0 +1 @@ +module.exports = "index"; diff --git a/test/binCases/output/output-library-single/stdin.js b/test/binCases/output/output-library-single/stdin.js new file mode 100644 index 00000000000..55e24bf10ab --- /dev/null +++ b/test/binCases/output/output-library-single/stdin.js @@ -0,0 +1,14 @@ +"use strict"; + +const fs = require("fs"); +const path = require("path"); + +module.exports = function testAssertions(code, stdout, stderr) { + expect(code).toBe(0); + expect(stdout).toEqual(expect.anything()); + expect(stdout[7]).toMatch(/index\.js.*\{0\}/); + expect(stderr).toHaveLength(0); + + const output = fs.readFileSync(path.join(__dirname, "../../../js/bin/output/output-library-single/main.js"), "utf-8"); + expect(output).toContain("window.key1=function"); +}; diff --git a/test/binCases/output/output-library-single/test.opts b/test/binCases/output/output-library-single/test.opts new file mode 100644 index 00000000000..e5632eed2e5 --- /dev/null +++ b/test/binCases/output/output-library-single/test.opts @@ -0,0 +1,4 @@ +./index.js +--target async-node +--output-library-target window +--output-library key1