diff --git a/packages/minifier-js/tests/minifier-tests.js b/packages/minifier-js/tests/minifier-tests.js index 20f6f51703..0805734b33 100644 --- a/packages/minifier-js/tests/minifier-tests.js +++ b/packages/minifier-js/tests/minifier-tests.js @@ -1,4 +1,4 @@ - +// this test case is just for general minification tests that are not specific to any single setting Tinytest.add('minifier-js - verify simple JS minifications work', (test) => { let result = meteorJsMinify('function add(first,second){return first + second; }\n'); test.equal(result.code, 'function add(n,d){return n+d}'); @@ -6,20 +6,33 @@ Tinytest.add('minifier-js - verify simple JS minifications work', (test) => { result = meteorJsMinify('let foo;if (typeof foo == "undefined") { console.log("undefined variable"); }\n'); test.equal(result.code, 'let foo;void 0===foo&&console.log("undefined variable");'); + result = meteorJsMinify('let z = [1, undefined, 3];\n'); + test.equal(result.code, 'let z=[1,void 0,3];'); + result = meteorJsMinify('function a(z) { let returnValue = z == 10; return returnValue; }\n'); test.equal(result.code,'function a(n){let t;return 10==n}'); }); + // properties -- default(true) Tinytest.add('minifier-js - verify properties setting', (test) => { let result = meteorJsMinify('const person = {};person["name"] = "brian";person["age"] = 100; function printName(person){console.log(person["name"])};printName(person);\n'); test.equal(result.code, 'const person={};function printName(n){console.log(n.name)}person.name="brian",person.age=100,printName(person);'); }); + // evaluate -- default(true) Tinytest.add('minifier-js - verify evaluate setting', (test) => { let result = meteorJsMinify('let a = 10 + 20 + 30;\n'); test.equal(result.code, 'let a=60;'); + +}); + +// this test is an evaluation, but since unsafe is false it won't get evaluated +Tinytest.add('minifier-js - verify that an unsafe evaluation will fail', (test) => { + + let result = meteorJsMinify('var a = [ "foo", "bar", "baz" ].join("");\n'); + test.equal(result.code, 'var a=["foo","bar","baz"].join("");'); }); // keep_infinity -- default(false) @@ -28,6 +41,7 @@ Tinytest.add('minifier-js - verify keep_infinity setting', (test) => { test.equal(result.code, 'let a=1/0;'); }); + // sequences -- default(true) Tinytest.add('minifier-js - verify sequences setting', (test) => { let result = meteorJsMinify('var name = "meteor"; var website = "www.meteor.com";var memberCount = 56;\n'); @@ -40,9 +54,9 @@ Tinytest.add('minifier-js - verify sequences setting', (test) => { test.equal(result.code, 'const name="meteor",website="www.meteor.com",memberCount=56;'); }); + // dead_code -- default(true) -Tinytest.add('minifier-js - verify dead_code setting', (test) => { - +Tinytest.add('minifier-js - verify dead_code setting', (test) => { let result = meteorJsMinify('function f() {a();b();x = 10;return;if (x) {y();}}\n'); test.equal(result.code, 'function f(){a(),b(),x=10}'); @@ -50,6 +64,14 @@ Tinytest.add('minifier-js - verify dead_code setting', (test) => { test.equal(result.code,'0;'); }); + +// unsafe_proto -- default(false) +Tinytest.add('minifier-js - verify unsafe_proto setting', (test) => { + let result = meteorJsMinify('Array.prototype.slice.call(a);\n'); + test.equal(result.code, 'Array.prototype.slice.call(a);'); +}); + + //keep_numbers -- default(false) Tinytest.add('minifier-js - verify keep_numbers setting', (test) => { let result = meteorJsMinify('let number = 1_000_000_000_000;\n'); @@ -60,13 +82,13 @@ Tinytest.add('minifier-js - verify keep_numbers setting', (test) => { }); -// unused -- default(true) +// unused -- default(true) we set it to false Tinytest.add('minifier-js - verify unused setting', (test) => { let result = meteorJsMinify('function foo(){let name = "ron";let firstName = "roger";console.log(firstName)};function bar(){let name = "ron";let firstName = "roger";console.log(firstName)};foo()\n'); test.equal(result.code, 'function foo(){let o="ron",r="roger";console.log("roger")}function bar(){let o="ron",r="roger";console.log("roger")}foo();'); }); -// drop_debugger -- default(true) +// drop_debugger -- default(true) we set it to false Tinytest.add('minifier-js - verify drop_debugger setting', (test) => { let result = meteorJsMinify('let name = "meteor"; debugger; let age = 100;\n'); test.equal(result.code, 'let name="meteor";debugger;let age=100;');