Skip to content

Commit d045d57

Browse files
committed
falsy checking; improve tests; fix typo
1 parent bc48785 commit d045d57

File tree

7 files changed

+60
-19
lines changed

7 files changed

+60
-19
lines changed

lib/ModuleBuildError.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,34 @@ class ModuleBuildError extends WebpackError {
1616
if(from) {
1717
this.message += ` (@ ${from})`;
1818
}
19-
this.message += ": ";
19+
20+
var message;
2021
if(err !== null && typeof err === "object") {
2122
if(typeof err.stack === "string" && err.stack) {
2223
var stack = cutOffLoaderExecution(err.stack);
2324
if(!err.hideStack) {
24-
this.message += stack;
25+
message = stack;
2526
} else {
2627
this.details = stack;
2728
if(typeof err.message === "string" && err.message) {
28-
this.message += err.message;
29+
message = err.message;
2930
} else {
30-
this.message += err;
31+
message = err;
3132
}
3233
}
3334
} else if(typeof err.message === "string" && err.message) {
34-
this.message += err.message;
35+
message = err.message;
3536
} else {
36-
this.message += err;
37+
message = err;
3738
}
39+
} else {
40+
message = err;
41+
}
42+
43+
if(message !== "") {
44+
this.message += `: ${message}`;
3845
}
46+
3947
this.module = module;
4048
this.error = err;
4149

lib/ModuleError.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@ class ModuleError extends WebpackError {
1717
if(from) {
1818
this.message += ` (@ ${from})`;
1919
}
20-
this.message += ": ";
21-
this.message += err && typeof err === "object" && err.message ? err.message : err;
20+
if(err && typeof err === "object" && err.message) {
21+
this.message += `: ${err.message}`;
22+
} else if(err) {
23+
this.message += `: ${err}`;
24+
}
2225
this.error = err;
2326
this.details = err && typeof err === "object" && err.stack ? cleanUp(err.stack, this.message) : undefined;
2427

lib/ModuleWarning.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@ class ModuleWarning extends WebpackError {
1717
if(from) {
1818
this.message += ` (@ ${from})`;
1919
}
20-
this.message += ": ";
21-
this.message += warning && typeof warning === "object" && warning.message ? warning.message : warning;
20+
if(warning && typeof warning === "object" && warning.message) {
21+
this.message += `: ${warning.message}`;
22+
} else if(warning) {
23+
this.message += `: ${warning}`;
24+
}
2225
this.warning = warning;
2326
this.details = warning && typeof warning === "object" && warning.stack ? cleanUp(warning.stack, this.message) : undefined;
2427

test/Errors.test.js

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,10 @@ describe("Errors", () => {
196196

197197
}, (errors, warnings) => {
198198
warnings.length.should.be.eql(1);
199-
warnings[0].split("\n")[1].should.match(/^Module Warning \(@ emit-error-loader\)/);
199+
warnings[0].split("\n")[1].should.match(/^Module Warning \(@ emit-error-loader\): [^\s]+/);
200200
errors.length.should.be.eql(2);
201-
errors[0].split("\n")[1].should.match(/^Module Error \(@ emit-error-loader\)/);
202-
errors[1].split("\n")[1].should.match(/^Module build failed \(@ json-loader\)/);
201+
errors[0].split("\n")[1].should.match(/^Module Error \(@ emit-error-loader\): [^\s]+/);
202+
errors[1].split("\n")[1].should.match(/^Module build failed \(@ json-loader\): [^\s]+/);
203203
}),
204204
getErrorsPromise({
205205
mode: "development",
@@ -213,7 +213,7 @@ describe("Errors", () => {
213213

214214
}, (errors, warnings) => {
215215
errors.length.should.be.eql(1);
216-
errors[0].split("\n")[1].should.match(/^Module build failed \(@ async-error-loader\)/);
216+
errors[0].split("\n")[1].should.match(/^Module build failed \(@ async-error-loader\): [^\s]+/);
217217
}),
218218
getErrorsPromise({
219219
mode: "development",
@@ -227,7 +227,27 @@ describe("Errors", () => {
227227

228228
}, (errors, warnings) => {
229229
errors.length.should.be.eql(1);
230-
errors[0].split("\n")[1].should.match(/^Module build failed \(@ throw-error-loader\)/);
230+
errors[0].split("\n")[1].should.match(/^Module build failed \(@ throw-error-loader\): [^\s]+/);
231+
}),
232+
getErrorsPromise({
233+
mode: "development",
234+
entry: "./entry-point.js",
235+
module: {
236+
rules: [{
237+
test: /entry-point\.js$/,
238+
use: path.resolve(base, "./irregular-error-loader")
239+
}]
240+
}
241+
242+
}, (errors, warnings) => {
243+
warnings.length.should.be.eql(2);
244+
warnings[0].split("\n")[1].should.match(/^Module Warning \(@ irregular-error-loader\): [^\s]+/);
245+
warnings[1].split("\n")[1].should.match(/^Module Warning \(@ irregular-error-loader\): [^\s]+/);
246+
247+
errors.length.should.be.eql(3);
248+
errors[0].split("\n")[1].should.match(/^Module Error \(@ irregular-error-loader\): [^\s]+/);
249+
errors[1].split("\n")[1].should.match(/^Module Error \(@ irregular-error-loader\): [^\s]+/);
250+
errors[2].split("\n")[1].should.match(/^Module build failed \(@ irregular-error-loader\): [^\s]+/);
231251
}),
232252

233253
]);

test/fixtures/errors/async-error-loader.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@ module.exports = function(source) {
33
const error = new Error("this is a callback error");
44
callback(error, source);
55
};
6-
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = function(source) {
2+
var empty = null;
3+
var emptyError = new Error();
4+
this.emitWarning(empty);
5+
this.emitWarning(emptyError);
6+
this.emitError(empty);
7+
this.emitError(emptyError);
8+
throw "a string error";
9+
return source;
10+
};
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
module.exports = function(source) {
2-
throw new Error("this is a threw error");
2+
throw new Error("this is a thrown error");
33
};
4-
5-

0 commit comments

Comments
 (0)