fix duplicated test names
authoralexlamsl <alexlamsl@gmail.com>
Sat, 18 Feb 2017 11:15:09 +0000 (19:15 +0800)
committeralexlamsl <alexlamsl@gmail.com>
Tue, 21 Feb 2017 05:29:58 +0000 (13:29 +0800)
previously test cases with the same name would be skipped except for the last one

`test/run-test.js` will now report duplicated names as errors

closes #1461

test/compress/drop-console.js
test/compress/hoist_vars.js [new file with mode: 0644]
test/compress/negate-iife.js
test/run-tests.js

index 162b339..2333722 100644 (file)
@@ -10,7 +10,7 @@ drop_console_1: {
     }\r
 }\r
 \r
-drop_console_1: {\r
+drop_console_2: {\r
     options = { drop_console: true };\r
     input: {\r
         console.log('foo');\r
diff --git a/test/compress/hoist_vars.js b/test/compress/hoist_vars.js
new file mode 100644 (file)
index 0000000..6fe1c77
--- /dev/null
@@ -0,0 +1,90 @@
+statements: {
+    options = {
+        hoist_funs: false,
+        hoist_vars: true,
+    }
+    input: {
+        function f() {
+            var a = 1;
+            var b = 2;
+            var c = 3;
+            function g() {}
+            return g(a, b, c);
+        }
+    }
+    expect: {
+        function f() {
+            var a = 1, b = 2, c = 3;
+            function g() {}
+            return g(a, b, c);
+        }
+    }
+}
+
+statements_funs: {
+    options = {
+        hoist_funs: true,
+        hoist_vars: true,
+    }
+    input: {
+        function f() {
+            var a = 1;
+            var b = 2;
+            var c = 3;
+            function g() {}
+            return g(a, b, c);
+        }
+    }
+    expect: {
+        function f() {
+            function g() {}
+            var a = 1, b = 2, c = 3;
+            return g(a, b, c);
+        }
+    }
+}
+
+sequences: {
+    options = {
+        hoist_funs: false,
+        hoist_vars: true,
+    }
+    input: {
+        function f() {
+            var a = 1, b = 2;
+            function g() {}
+            var c = 3;
+            return g(a, b, c);
+        }
+    }
+    expect: {
+        function f() {
+            var c, a = 1, b = 2;
+            function g() {}
+            c = 3;
+            return g(a, b, c);
+        }
+    }
+}
+
+sequences_funs: {
+    options = {
+        hoist_funs: true,
+        hoist_vars: true,
+    }
+    input: {
+        function f() {
+            var a = 1, b = 2;
+            function g() {}
+            var c = 3;
+            return g(a, b, c);
+        }
+    }
+    expect: {
+        function f() {
+            function g() {}
+            var a = 1, b = 2, c = 3;
+            return g(a, b, c);
+        }
+    }
+}
index 312e0f2..001795c 100644 (file)
@@ -58,7 +58,7 @@ negate_iife_3_off: {
     }
 }
 
-negate_iife_3: {
+negate_iife_4: {
     options = {
         negate_iife: true,
         conditionals: true,
@@ -112,7 +112,7 @@ sequence_off: {
     }
 }
 
-negate_iife_4: {
+negate_iife_5: {
     options = {
         negate_iife: true,
         sequences: true,
@@ -135,7 +135,7 @@ negate_iife_4: {
     }
 }
 
-negate_iife_4_off: {
+negate_iife_5_off: {
     options = {
         negate_iife: false,
         sequences: true,
index a472139..15a12c6 100755 (executable)
@@ -194,6 +194,9 @@ function parse_test(file) {
         if (node instanceof U.AST_LabeledStatement
             && tw.parent() instanceof U.AST_Toplevel) {
             var name = node.label.name;
+            if (name in tests) {
+                throw new Error('Duplicated test name "' + name + '" in ' + file);
+            }
             tests[name] = get_one_test(name, node.body);
             return true;
         }