improve --reduce-test (#3719)
- cover missing cases when eliminating unreferenced labels - format multi-line outputs correctly
This commit is contained in:
@@ -8,9 +8,9 @@ function read(path) {
|
||||
}
|
||||
|
||||
describe("test/reduce.js", function() {
|
||||
this.timeout(60000);
|
||||
it("Should reduce test case", function() {
|
||||
this.timeout(60000);
|
||||
var result = reduce_test(read("test/input/reduce/input.js"), {
|
||||
var result = reduce_test(read("test/input/reduce/unsafe_math.js"), {
|
||||
compress: {
|
||||
unsafe_math: true,
|
||||
},
|
||||
@@ -19,7 +19,16 @@ describe("test/reduce.js", function() {
|
||||
verbose: false,
|
||||
});
|
||||
if (result.error) throw result.error;
|
||||
assert.strictEqual(result.code, read("test/input/reduce/output.js"));
|
||||
assert.strictEqual(result.code, read("test/input/reduce/unsafe_math.reduced.js"));
|
||||
});
|
||||
it("Should eliminate unreferenced labels", function() {
|
||||
var result = reduce_test(read("test/input/reduce/label.js"), {
|
||||
mangle: false,
|
||||
}, {
|
||||
verbose: false,
|
||||
});
|
||||
if (result.error) throw result.error;
|
||||
assert.strictEqual(result.code, read("test/input/reduce/label.reduced.js"));
|
||||
});
|
||||
it("Should handle test cases with --toplevel", function() {
|
||||
var result = reduce_test([
|
||||
@@ -31,7 +40,9 @@ describe("test/reduce.js", function() {
|
||||
if (result.error) throw result.error;
|
||||
assert.strictEqual(result.code, [
|
||||
"// Can't reproduce test failure with minify options provided:",
|
||||
'// {"toplevel":true}',
|
||||
"// {",
|
||||
'// "toplevel": true',
|
||||
"// }",
|
||||
"",
|
||||
].join("\n"));
|
||||
});
|
||||
@@ -40,7 +51,10 @@ describe("test/reduce.js", function() {
|
||||
if (result.error) throw result.error;
|
||||
assert.strictEqual(result.code, [
|
||||
"// Can't reproduce test failure with minify options provided:",
|
||||
'// {"compress":{},"mangle":false}',
|
||||
"// {",
|
||||
'// "compress": {},',
|
||||
'// "mangle": false',
|
||||
"// }",
|
||||
"",
|
||||
].join("\n"));
|
||||
});
|
||||
@@ -61,8 +75,15 @@ describe("test/reduce.js", function() {
|
||||
" return f.length;",
|
||||
"}());",
|
||||
"// output: 1",
|
||||
"// ",
|
||||
"// minify: 0",
|
||||
'// options: {"compress":{"keep_fargs":false},"mangle":false}',
|
||||
"// ",
|
||||
"// options: {",
|
||||
'// "compress": {',
|
||||
'// "keep_fargs": false',
|
||||
"// },",
|
||||
'// "mangle": false',
|
||||
"// }",
|
||||
].join("\n"));
|
||||
});
|
||||
it("Should fail when invalid option is supplied", function() {
|
||||
@@ -81,4 +102,38 @@ describe("test/reduce.js", function() {
|
||||
assert.ok(err instanceof Error);
|
||||
assert.strictEqual(err.stack.split(/\n/)[0], "SyntaxError: Name expected");
|
||||
});
|
||||
it("Should format multi-line output correctly", function() {
|
||||
var code = [
|
||||
"var a = 0;",
|
||||
"",
|
||||
"for (var b in [ 1, 2, 3 ]) {",
|
||||
" a = +a + 1 - .2;",
|
||||
" console.log(a);",
|
||||
"}",
|
||||
].join("\n");
|
||||
var result = reduce_test(code, {
|
||||
compress: {
|
||||
unsafe_math: true,
|
||||
},
|
||||
mangle: false,
|
||||
});
|
||||
if (result.error) throw result.error;
|
||||
assert.strictEqual(result.code, [
|
||||
code,
|
||||
"// output: 0.8",
|
||||
"// 1.6",
|
||||
"// 2.4",
|
||||
"// ",
|
||||
"// minify: 0.8",
|
||||
"// 1.6",
|
||||
"// 2.4000000000000004",
|
||||
"// ",
|
||||
"// options: {",
|
||||
'// "compress": {',
|
||||
'// "unsafe_math": true',
|
||||
"// },",
|
||||
'// "mangle": false',
|
||||
"// }",
|
||||
].join("\n"));
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user