From bafd9a3c2f1af323654b0ce7214bea12394aa618 Mon Sep 17 00:00:00 2001 From: chuckd Date: Fri, 6 Oct 2017 17:20:08 -0400 Subject: [PATCH] Icrease test coverage --- .editorconfig | 1 - lib/CJSRequireDependencyParserPlugin.js | 1 - lib/DojoAMDDefineDependencyParserPlugin.js | 17 +++++++++++++--- ...AMDRequireDependenciesBlockParserPlugin.js | 2 +- .../dependencies/cjsRequire/asyncDep.js | 6 ++++++ .../dependencies/cjsRequire/cjsModule.js | 1 - .../dependencies/cjsRequire/cjsModule1.js | 1 + .../dependencies/cjsRequire/cjsModule2.js | 1 + .../dependencies/cjsRequire/index.js | 7 +++++-- .../dependencies/constDeps/webpack.config.js | 5 ++++- .../constNamedModules/webpack.config.js | 5 ++++- .../namedModules/webpack.config.js | 5 ++++- .../has/constArrayFooUndefined/index.js | 2 +- .../constArrayFooUndefined/webpack.config.js | 5 ++++- .../loaders/proxyLoader/addHeaderPlugin.js | 9 +++++++++ .../TestCases/loaders/proxyLoader/content.txt | 1 + test/TestCases/loaders/proxyLoader/index.js | 5 +++++ .../loaders/proxyLoader/webpack.config.js | 20 +++++++++++++++++++ test/TestCases/loaders/request/dep.js | 5 +++++ test/TestCases/loaders/request/index.js | 7 +++++++ test/TestCases/loaders/request/request.js | 3 +++ .../loaders/request/webpack.config.js | 18 +++++++++++++++++ test/TestCases/loaders/selector/index.js | 5 +++++ test/TestCases/loaders/selector/selector.js | 3 +++ .../loaders/selector/webpack.config.js | 18 +++++++++++++++++ test/TestCases/loaders/textLoader/hello.txt | 1 + test/TestCases/loaders/textLoader/index.js | 5 +++++ .../loaders/textLoader/webpack.config.js | 13 ++++++++++++ 28 files changed, 158 insertions(+), 14 deletions(-) create mode 100644 test/TestCases/dependencies/cjsRequire/asyncDep.js delete mode 100644 test/TestCases/dependencies/cjsRequire/cjsModule.js create mode 100644 test/TestCases/dependencies/cjsRequire/cjsModule1.js create mode 100644 test/TestCases/dependencies/cjsRequire/cjsModule2.js create mode 100644 test/TestCases/loaders/proxyLoader/addHeaderPlugin.js create mode 100644 test/TestCases/loaders/proxyLoader/content.txt create mode 100644 test/TestCases/loaders/proxyLoader/index.js create mode 100644 test/TestCases/loaders/proxyLoader/webpack.config.js create mode 100644 test/TestCases/loaders/request/dep.js create mode 100644 test/TestCases/loaders/request/index.js create mode 100644 test/TestCases/loaders/request/request.js create mode 100644 test/TestCases/loaders/request/webpack.config.js create mode 100644 test/TestCases/loaders/selector/index.js create mode 100644 test/TestCases/loaders/selector/selector.js create mode 100644 test/TestCases/loaders/selector/webpack.config.js create mode 100644 test/TestCases/loaders/textLoader/hello.txt create mode 100644 test/TestCases/loaders/textLoader/index.js create mode 100644 test/TestCases/loaders/textLoader/webpack.config.js diff --git a/.editorconfig b/.editorconfig index 1e360d3..129bbed 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,7 +3,6 @@ root = true [*] charset = utf-8 indent_style = tab -insert_final_newline = true [*.{js,json}] trim_trailing_whitespace = true diff --git a/lib/CJSRequireDependencyParserPlugin.js b/lib/CJSRequireDependencyParserPlugin.js index b7ac147..1e75538 100644 --- a/lib/CJSRequireDependencyParserPlugin.js +++ b/lib/CJSRequireDependencyParserPlugin.js @@ -17,7 +17,6 @@ module.exports = class CJSRequireDependencyParserPlugin { apply(parser) { parser.plugin("call cjsRequire", (expr) => { - expr.nonAMD = true; return parser.applyPluginsBailResult("call require", expr); }); } diff --git a/lib/DojoAMDDefineDependencyParserPlugin.js b/lib/DojoAMDDefineDependencyParserPlugin.js index c2a10f8..17372f7 100644 --- a/lib/DojoAMDDefineDependencyParserPlugin.js +++ b/lib/DojoAMDDefineDependencyParserPlugin.js @@ -59,12 +59,23 @@ module.exports = class DojoAMDDefineDependencyParserPlugin { return result; }); - parser.plugin("call define:amd:array", (expr, param, identifiers) => { - if(param.isConstArray()) { + parser.plugin("call define:amd:array", (expr, param, identifiers, namedModule) => { + if(param.isArray()) { + param.items.forEach((param, idx) => { // eslint-disable-line no-shadow + if(param.isString() && ["require", "module", "exports"].indexOf(param.string) >= 0) + identifiers[idx] = param.string; + parser.applyPluginsBailResult("call define:amd:item", expr, param, namedModule); + }); + return true; + } else if(param.isConstArray()) { const deps = []; param.array.forEach((request, idx) => { let dep, localModule; - if (request === "module") { + if(request === "require") { + identifiers[idx] = request; + dep = request; + dep = "__webpack_require__"; + } else if (request === "module") { identifiers[idx] = request; dep = "__webpack_require__.dj.m(module)"; } else if(request === "exports") { diff --git a/lib/DojoAMDRequireDependenciesBlockParserPlugin.js b/lib/DojoAMDRequireDependenciesBlockParserPlugin.js index 7e01917..c1f7034 100644 --- a/lib/DojoAMDRequireDependenciesBlockParserPlugin.js +++ b/lib/DojoAMDRequireDependenciesBlockParserPlugin.js @@ -35,7 +35,7 @@ module.exports = class DojoAMDRequireDependenciesBlockParserPlugin { }); parser.plugin("call require", (expr) => { - if (!parser.state.module.isAMD || expr.nonAMD) { + if (!parser.state.module.isAMD || expr.callee.name !== "require") { return; } switch(expr.arguments.length) { diff --git a/test/TestCases/dependencies/cjsRequire/asyncDep.js b/test/TestCases/dependencies/cjsRequire/asyncDep.js new file mode 100644 index 0000000..357173d --- /dev/null +++ b/test/TestCases/dependencies/cjsRequire/asyncDep.js @@ -0,0 +1,6 @@ +/* global cjsRequire */ +define([], function() { + it("should load CommonJS modules from async chunk", function() { + cjsRequire("./cjsModule2").should.be.eql("cjs2"); + }); +}); \ No newline at end of file diff --git a/test/TestCases/dependencies/cjsRequire/cjsModule.js b/test/TestCases/dependencies/cjsRequire/cjsModule.js deleted file mode 100644 index 2cd122b..0000000 --- a/test/TestCases/dependencies/cjsRequire/cjsModule.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = "cjs"; diff --git a/test/TestCases/dependencies/cjsRequire/cjsModule1.js b/test/TestCases/dependencies/cjsRequire/cjsModule1.js new file mode 100644 index 0000000..a9e30f2 --- /dev/null +++ b/test/TestCases/dependencies/cjsRequire/cjsModule1.js @@ -0,0 +1 @@ +module.exports = "cjs1"; diff --git a/test/TestCases/dependencies/cjsRequire/cjsModule2.js b/test/TestCases/dependencies/cjsRequire/cjsModule2.js new file mode 100644 index 0000000..b849ffa --- /dev/null +++ b/test/TestCases/dependencies/cjsRequire/cjsModule2.js @@ -0,0 +1 @@ +module.exports = "cjs2"; \ No newline at end of file diff --git a/test/TestCases/dependencies/cjsRequire/index.js b/test/TestCases/dependencies/cjsRequire/index.js index a97a231..5f7e266 100644 --- a/test/TestCases/dependencies/cjsRequire/index.js +++ b/test/TestCases/dependencies/cjsRequire/index.js @@ -1,7 +1,10 @@ /* global cjsRequire */ define(["./amdModule"], function(amd) { - it("should load CommonJS modules using cjsRequire", function() { + it("should load CommonJS modules using cjsRequire", function(done) { amd.should.be.eql("amd"); - cjsRequire("./cjsModule").should.be.eql("cjs"); + cjsRequire("./cjsModule1").should.be.eql("cjs1"); + require(["asyncDep"], function() { + done(); + }); }); }); diff --git a/test/TestCases/dependencies/constDeps/webpack.config.js b/test/TestCases/dependencies/constDeps/webpack.config.js index 124306d..00d444c 100644 --- a/test/TestCases/dependencies/constDeps/webpack.config.js +++ b/test/TestCases/dependencies/constDeps/webpack.config.js @@ -8,5 +8,8 @@ module.exports = { packages:[{name: "dojo", location: "../../../../node_modules/dojo"}] } }) - ] + ], + output: { + pathinfo: true + } }; diff --git a/test/TestCases/dependencies/constNamedModules/webpack.config.js b/test/TestCases/dependencies/constNamedModules/webpack.config.js index f350287..c8b0a53 100644 --- a/test/TestCases/dependencies/constNamedModules/webpack.config.js +++ b/test/TestCases/dependencies/constNamedModules/webpack.config.js @@ -9,5 +9,8 @@ module.exports = { }, loader: path.join(__dirname, "../../../js/dojo/dojo.js") }) - ] + ], + output: { + pathinfo: true + } }; diff --git a/test/TestCases/dependencies/namedModules/webpack.config.js b/test/TestCases/dependencies/namedModules/webpack.config.js index 51f104c..8511717 100644 --- a/test/TestCases/dependencies/namedModules/webpack.config.js +++ b/test/TestCases/dependencies/namedModules/webpack.config.js @@ -7,5 +7,8 @@ module.exports = { loaderConfig: require.resolve("./loaderConfig"), loader: path.join(__dirname, "../../../js/dojo/dojo.js") }) - ] + ], + output: { + pathinfo: true + } }; diff --git a/test/TestCases/has/constArrayFooUndefined/index.js b/test/TestCases/has/constArrayFooUndefined/index.js index 788b51e..57d569c 100644 --- a/test/TestCases/has/constArrayFooUndefined/index.js +++ b/test/TestCases/has/constArrayFooUndefined/index.js @@ -1,4 +1,4 @@ -define("dojo/has,dojo/has!foo?./a:./b".split(","), function(has, m1) { +define("require,dojo/has,dojo/has!foo?./a:./b".split(","), function(require, has, m1) { it("should load module based on runtime value of foo", function(done) { has("webpack").should.be.true; (typeof(has('foo')) === 'undefined').should.be.true; diff --git a/test/TestCases/has/constArrayFooUndefined/webpack.config.js b/test/TestCases/has/constArrayFooUndefined/webpack.config.js index 39ce7fe..f9de58c 100644 --- a/test/TestCases/has/constArrayFooUndefined/webpack.config.js +++ b/test/TestCases/has/constArrayFooUndefined/webpack.config.js @@ -10,5 +10,8 @@ module.exports = { }, loader: path.join(__dirname, "../../../js/dojo/dojo.js") }) - ] + ], + output: { + pathinfo: true + } }; diff --git a/test/TestCases/loaders/proxyLoader/addHeaderPlugin.js b/test/TestCases/loaders/proxyLoader/addHeaderPlugin.js new file mode 100644 index 0000000..e207c6a --- /dev/null +++ b/test/TestCases/loaders/proxyLoader/addHeaderPlugin.js @@ -0,0 +1,9 @@ +define([], function() { + return { + load: function(name, req, callback) { + req(["dojo/text!" + name], function(text) { + callback("Header\n"+text); + }); + } + }; +}); \ No newline at end of file diff --git a/test/TestCases/loaders/proxyLoader/content.txt b/test/TestCases/loaders/proxyLoader/content.txt new file mode 100644 index 0000000..6b584e8 --- /dev/null +++ b/test/TestCases/loaders/proxyLoader/content.txt @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/test/TestCases/loaders/proxyLoader/index.js b/test/TestCases/loaders/proxyLoader/index.js new file mode 100644 index 0000000..b7c511c --- /dev/null +++ b/test/TestCases/loaders/proxyLoader/index.js @@ -0,0 +1,5 @@ +define(["addHeaderPlugin!./content.txt"], function(contentWithHeader) { + it("should add header to content", function() { + "Header\ncontent".should.be.eql(contentWithHeader); + }); +}); \ No newline at end of file diff --git a/test/TestCases/loaders/proxyLoader/webpack.config.js b/test/TestCases/loaders/proxyLoader/webpack.config.js new file mode 100644 index 0000000..187d74f --- /dev/null +++ b/test/TestCases/loaders/proxyLoader/webpack.config.js @@ -0,0 +1,20 @@ +var path = require("path"); +var webpack = require("webpack"); +var DojoWebpackPlugin = require("../../../../index"); + +module.exports = { + entry: "test/index", + plugins: [ + new DojoWebpackPlugin({ + loaderConfig: { + paths:{test: "."} + }, + loader: path.join(__dirname, "../../../js/dojo/dojo.js") + }), + new webpack.NormalModuleReplacementPlugin( + /^addHeaderPlugin!/, function(data) { + var match = /^addHeaderPlugin!(.*)$/.exec(data.request); + data.request = "dojo/loaderProxy?loader=./addHeaderPlugin&deps=dojo/text%21" + match[1] + "!" + match[1]; + } + ) ] +}; diff --git a/test/TestCases/loaders/request/dep.js b/test/TestCases/loaders/request/dep.js new file mode 100644 index 0000000..4f99998 --- /dev/null +++ b/test/TestCases/loaders/request/dep.js @@ -0,0 +1,5 @@ +define(["dojo/request/default!"], function(request) { + it("should load request/xhr", function() { + "dojo/request/xhr".should.be.eql(request); + }); +}); diff --git a/test/TestCases/loaders/request/index.js b/test/TestCases/loaders/request/index.js new file mode 100644 index 0000000..4649b60 --- /dev/null +++ b/test/TestCases/loaders/request/index.js @@ -0,0 +1,7 @@ +define([], function() { + it("should compile", function(done) { + require(["dep"], function() { + done(); + }); + }); +}); diff --git a/test/TestCases/loaders/request/request.js b/test/TestCases/loaders/request/request.js new file mode 100644 index 0000000..7d063e3 --- /dev/null +++ b/test/TestCases/loaders/request/request.js @@ -0,0 +1,3 @@ +define([], function() { + return "dojo/request/xhr"; +}); \ No newline at end of file diff --git a/test/TestCases/loaders/request/webpack.config.js b/test/TestCases/loaders/request/webpack.config.js new file mode 100644 index 0000000..69419cf --- /dev/null +++ b/test/TestCases/loaders/request/webpack.config.js @@ -0,0 +1,18 @@ +var path = require("path"); +var DojoWebpackPlugin = require("../../../../index"); +module.exports = { + entry: "test/index", + plugins: [ + new DojoWebpackPlugin({ + loaderConfig: { + paths:{test: "."} + }, + loader: path.join(__dirname, "../../../js/dojo/dojo.js") + }) + ], + resolve: { + alias: { + 'dojo/request/xhr': path.join(__dirname, "./request.js") + } + } +}; \ No newline at end of file diff --git a/test/TestCases/loaders/selector/index.js b/test/TestCases/loaders/selector/index.js new file mode 100644 index 0000000..a63bfe1 --- /dev/null +++ b/test/TestCases/loaders/selector/index.js @@ -0,0 +1,5 @@ +define(["dojo/selector/_loader!"], function(selector) { + it("should load selector/lite", function() { + "dojo/selector/lite".should.be.eql(selector); + }); +}); \ No newline at end of file diff --git a/test/TestCases/loaders/selector/selector.js b/test/TestCases/loaders/selector/selector.js new file mode 100644 index 0000000..3f7d3aa --- /dev/null +++ b/test/TestCases/loaders/selector/selector.js @@ -0,0 +1,3 @@ +define([], function() { + return "dojo/selector/lite"; +}); \ No newline at end of file diff --git a/test/TestCases/loaders/selector/webpack.config.js b/test/TestCases/loaders/selector/webpack.config.js new file mode 100644 index 0000000..13728ab --- /dev/null +++ b/test/TestCases/loaders/selector/webpack.config.js @@ -0,0 +1,18 @@ +var path = require("path"); +var DojoWebpackPlugin = require("../../../../index"); +module.exports = { + entry: "test/index", + plugins: [ + new DojoWebpackPlugin({ + loaderConfig: { + paths:{test: "."} + }, + loader: path.join(__dirname, "../../../js/dojo/dojo.js") + }) + ], + resolve: { + alias: { + 'dojo/selector/lite': path.join(__dirname, "./selector.js") + } + } +}; \ No newline at end of file diff --git a/test/TestCases/loaders/textLoader/hello.txt b/test/TestCases/loaders/textLoader/hello.txt new file mode 100644 index 0000000..b6fc4c6 --- /dev/null +++ b/test/TestCases/loaders/textLoader/hello.txt @@ -0,0 +1 @@ +hello \ No newline at end of file diff --git a/test/TestCases/loaders/textLoader/index.js b/test/TestCases/loaders/textLoader/index.js new file mode 100644 index 0000000..da00984 --- /dev/null +++ b/test/TestCases/loaders/textLoader/index.js @@ -0,0 +1,5 @@ +define(["dojo/text!test/hello.txt"], function(hello) { + it("should load text files" , function() { + "hello".should.be.eql(hello); + }); +}); diff --git a/test/TestCases/loaders/textLoader/webpack.config.js b/test/TestCases/loaders/textLoader/webpack.config.js new file mode 100644 index 0000000..f350287 --- /dev/null +++ b/test/TestCases/loaders/textLoader/webpack.config.js @@ -0,0 +1,13 @@ +var path = require("path"); +var DojoWebpackPlugin = require("../../../../index"); +module.exports = { + entry: "test/index", + plugins: [ + new DojoWebpackPlugin({ + loaderConfig: { + paths:{test: "."} + }, + loader: path.join(__dirname, "../../../js/dojo/dojo.js") + }) + ] +};