aboutsummaryrefslogtreecommitdiff
path: root/test/compress
diff options
context:
space:
mode:
authoralexlamsl <alexlamsl@gmail.com>2017-02-18 19:27:31 +0800
committeralexlamsl <alexlamsl@gmail.com>2017-02-21 13:29:58 +0800
commite275148998638bdcf795257ed03941ca34e33018 (patch)
treec9019dec5f4a26a2ecfa47161cada4deff1c1bf7 /test/compress
parent974247c8c0e57901ef776e86784c8c9a1b87b5de (diff)
downloadtracifyjs-e275148998638bdcf795257ed03941ca34e33018.tar.gz
tracifyjs-e275148998638bdcf795257ed03941ca34e33018.zip
enhance `global_defs`
- support arrays, objects & AST_Node - support `"a.b":1` on both cli & API - emit warning if variable is modified - override top-level variables fixes #1416 closes #1198 closes #1469
Diffstat (limited to 'test/compress')
-rw-r--r--test/compress/global_defs.js147
-rw-r--r--test/compress/issue-208.js41
2 files changed, 188 insertions, 0 deletions
diff --git a/test/compress/global_defs.js b/test/compress/global_defs.js
new file mode 100644
index 00000000..a69d031e
--- /dev/null
+++ b/test/compress/global_defs.js
@@ -0,0 +1,147 @@
+must_replace: {
+ options = {
+ global_defs: {
+ D: "foo bar",
+ }
+ }
+ input: {
+ console.log(D);
+ }
+ expect: {
+ console.log("foo bar");
+ }
+}
+
+keyword: {
+ options = {
+ global_defs: {
+ undefined: 0,
+ NaN: 1,
+ Infinity: 2,
+ },
+ }
+ input: {
+ console.log(undefined, NaN, Infinity);
+ }
+ expect: {
+ console.log(0, 1, 2);
+ }
+}
+
+object: {
+ options = {
+ evaluate: true,
+ global_defs: {
+ CONFIG: {
+ DEBUG: [ 0 ],
+ VALUE: 42,
+ },
+ },
+ unsafe: true,
+ }
+ input: {
+ function f(CONFIG) {
+ // CONFIG not global - do not replace
+ return CONFIG.VALUE;
+ }
+ function g() {
+ var CONFIG = { VALUE: 1 };
+ // CONFIG not global - do not replace
+ return CONFIG.VALUE;
+ }
+ function h() {
+ return CONFIG.VALUE;
+ }
+ if (CONFIG.DEBUG[0])
+ console.debug("foo");
+ }
+ expect: {
+ function f(CONFIG) {
+ return CONFIG.VALUE;
+ }
+ function g() {
+ var CONFIG = { VALUE: 1 };
+ return CONFIG.VALUE;
+ }
+ function h() {
+ return 42;
+ }
+ if (0)
+ console.debug("foo");
+ }
+}
+
+expanded: {
+ options = {
+ global_defs: {
+ "CONFIG.DEBUG": [ 0 ],
+ "CONFIG.VALUE": 42,
+ },
+ }
+ input: {
+ function f(CONFIG) {
+ // CONFIG not global - do not replace
+ return CONFIG.VALUE;
+ }
+ function g() {
+ var CONFIG = { VALUE: 1 };
+ // CONFIG not global - do not replace
+ return CONFIG.VALUE;
+ }
+ function h() {
+ return CONFIG.VALUE;
+ }
+ if (CONFIG.DEBUG[0])
+ console.debug("foo");
+ }
+ expect: {
+ function f(CONFIG) {
+ return CONFIG.VALUE;
+ }
+ function g() {
+ var CONFIG = { VALUE: 1 };
+ return CONFIG.VALUE;
+ }
+ function h() {
+ return 42;
+ }
+ if ([0][0])
+ console.debug("foo");
+ }
+}
+
+mixed: {
+ options = {
+ evaluate: true,
+ global_defs: {
+ "CONFIG.VALUE": 42,
+ "FOO.BAR": "moo",
+ },
+ properties: true,
+ }
+ input: {
+ const FOO = { BAR: 0 };
+ console.log(FOO.BAR);
+ console.log(++CONFIG.DEBUG);
+ console.log(++CONFIG.VALUE);
+ console.log(++CONFIG["VAL" + "UE"]);
+ console.log(++DEBUG[CONFIG.VALUE]);
+ CONFIG.VALUE.FOO = "bar";
+ console.log(CONFIG);
+ }
+ expect: {
+ const FOO = { BAR: 0 };
+ console.log("moo");
+ console.log(++CONFIG.DEBUG);
+ console.log(++CONFIG.VALUE);
+ console.log(++CONFIG.VALUE);
+ console.log(++DEBUG[42]);
+ CONFIG.VALUE.FOO = "bar";
+ console.log(CONFIG);
+ }
+ expect_warnings: [
+ 'WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:126,22]',
+ 'WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:127,22]',
+ 'WARN: global_defs CONFIG.VALUE redefined [test/compress/global_defs.js:129,8]',
+ ]
+}
diff --git a/test/compress/issue-208.js b/test/compress/issue-208.js
index 2f103786..fb9861f6 100644
--- a/test/compress/issue-208.js
+++ b/test/compress/issue-208.js
@@ -27,3 +27,44 @@ do_update_rhs: {
MY_DEBUG += 0;
}
}
+
+mixed: {
+ options = {
+ evaluate: true,
+ global_defs: {
+ DEBUG: 0,
+ ENV: 1,
+ FOO: 2,
+ }
+ }
+ input: {
+ const ENV = 3;
+ var FOO = 4;
+ f(ENV * 10);
+ --FOO;
+ DEBUG = 1;
+ DEBUG++;
+ DEBUG += 1;
+ f(DEBUG);
+ x = DEBUG;
+ }
+ expect: {
+ const ENV = 3;
+ var FOO = 4;
+ f(10);
+ --FOO;
+ DEBUG = 1;
+ DEBUG++;
+ DEBUG += 1;
+ f(0);
+ x = 0;
+ }
+ expect_warnings: [
+ 'WARN: global_defs ENV redefined [test/compress/issue-208.js:41,14]',
+ 'WARN: global_defs FOO redefined [test/compress/issue-208.js:42,12]',
+ 'WARN: global_defs FOO redefined [test/compress/issue-208.js:44,10]',
+ 'WARN: global_defs DEBUG redefined [test/compress/issue-208.js:45,8]',
+ 'WARN: global_defs DEBUG redefined [test/compress/issue-208.js:46,8]',
+ 'WARN: global_defs DEBUG redefined [test/compress/issue-208.js:47,8]',
+ ]
+}