Skip to content

Commit

Permalink
Icrease test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
chuckdumont committed Oct 8, 2017
1 parent 20f5dd4 commit bafd9a3
Show file tree
Hide file tree
Showing 28 changed files with 158 additions and 14 deletions.
1 change: 0 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ root = true
[*]
charset = utf-8
indent_style = tab
insert_final_newline = true

[*.{js,json}]
trim_trailing_whitespace = true
1 change: 0 additions & 1 deletion lib/CJSRequireDependencyParserPlugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
module.exports = class CJSRequireDependencyParserPlugin {
apply(parser) {
parser.plugin("call cjsRequire", (expr) => {
expr.nonAMD = true;
return parser.applyPluginsBailResult("call require", expr);
});
}
Expand Down
17 changes: 14 additions & 3 deletions lib/DojoAMDDefineDependencyParserPlugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -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") {
Expand Down
2 changes: 1 addition & 1 deletion lib/DojoAMDRequireDependenciesBlockParserPlugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
6 changes: 6 additions & 0 deletions test/TestCases/dependencies/cjsRequire/asyncDep.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* global cjsRequire */
define([], function() {
it("should load CommonJS modules from async chunk", function() {
cjsRequire("./cjsModule2").should.be.eql("cjs2");
});
});
1 change: 0 additions & 1 deletion test/TestCases/dependencies/cjsRequire/cjsModule.js

This file was deleted.

1 change: 1 addition & 0 deletions test/TestCases/dependencies/cjsRequire/cjsModule1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = "cjs1";
1 change: 1 addition & 0 deletions test/TestCases/dependencies/cjsRequire/cjsModule2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = "cjs2";
7 changes: 5 additions & 2 deletions test/TestCases/dependencies/cjsRequire/index.js
Original file line number Diff line number Diff line change
@@ -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();
});
});
});
5 changes: 4 additions & 1 deletion test/TestCases/dependencies/constDeps/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@ module.exports = {
packages:[{name: "dojo", location: "../../../../node_modules/dojo"}]
}
})
]
],
output: {
pathinfo: true
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,8 @@ module.exports = {
},
loader: path.join(__dirname, "../../../js/dojo/dojo.js")
})
]
],
output: {
pathinfo: true
}
};
5 changes: 4 additions & 1 deletion test/TestCases/dependencies/namedModules/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,8 @@ module.exports = {
loaderConfig: require.resolve("./loaderConfig"),
loader: path.join(__dirname, "../../../js/dojo/dojo.js")
})
]
],
output: {
pathinfo: true
}
};
2 changes: 1 addition & 1 deletion test/TestCases/has/constArrayFooUndefined/index.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
5 changes: 4 additions & 1 deletion test/TestCases/has/constArrayFooUndefined/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@ module.exports = {
},
loader: path.join(__dirname, "../../../js/dojo/dojo.js")
})
]
],
output: {
pathinfo: true
}
};
9 changes: 9 additions & 0 deletions test/TestCases/loaders/proxyLoader/addHeaderPlugin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
define([], function() {
return {
load: function(name, req, callback) {
req(["dojo/text!" + name], function(text) {
callback("Header\n"+text);
});
}
};
});
1 change: 1 addition & 0 deletions test/TestCases/loaders/proxyLoader/content.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
content
5 changes: 5 additions & 0 deletions test/TestCases/loaders/proxyLoader/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
define(["addHeaderPlugin!./content.txt"], function(contentWithHeader) {
it("should add header to content", function() {
"Header\ncontent".should.be.eql(contentWithHeader);
});
});
20 changes: 20 additions & 0 deletions test/TestCases/loaders/proxyLoader/webpack.config.js
Original file line number Diff line number Diff line change
@@ -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];
}
) ]
};
5 changes: 5 additions & 0 deletions test/TestCases/loaders/request/dep.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
define(["dojo/request/default!"], function(request) {
it("should load request/xhr", function() {
"dojo/request/xhr".should.be.eql(request);
});
});
7 changes: 7 additions & 0 deletions test/TestCases/loaders/request/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
define([], function() {
it("should compile", function(done) {
require(["dep"], function() {
done();
});
});
});
3 changes: 3 additions & 0 deletions test/TestCases/loaders/request/request.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
define([], function() {
return "dojo/request/xhr";
});
18 changes: 18 additions & 0 deletions test/TestCases/loaders/request/webpack.config.js
Original file line number Diff line number Diff line change
@@ -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")
}
}
};
5 changes: 5 additions & 0 deletions test/TestCases/loaders/selector/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
define(["dojo/selector/_loader!"], function(selector) {
it("should load selector/lite", function() {
"dojo/selector/lite".should.be.eql(selector);
});
});
3 changes: 3 additions & 0 deletions test/TestCases/loaders/selector/selector.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
define([], function() {
return "dojo/selector/lite";
});
18 changes: 18 additions & 0 deletions test/TestCases/loaders/selector/webpack.config.js
Original file line number Diff line number Diff line change
@@ -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")
}
}
};
1 change: 1 addition & 0 deletions test/TestCases/loaders/textLoader/hello.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
hello
5 changes: 5 additions & 0 deletions test/TestCases/loaders/textLoader/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
define(["dojo/text!test/hello.txt"], function(hello) {
it("should load text files" , function() {
"hello".should.be.eql(hello);
});
});
13 changes: 13 additions & 0 deletions test/TestCases/loaders/textLoader/webpack.config.js
Original file line number Diff line number Diff line change
@@ -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")
})
]
};

0 comments on commit bafd9a3

Please sign in to comment.