improve testing compatibility with Node.js (#5204)
authorAlex Lam S.L <alexlamsl@gmail.com>
Mon, 6 Dec 2021 14:42:45 +0000 (14:42 +0000)
committerGitHub <noreply@github.com>
Mon, 6 Dec 2021 14:42:45 +0000 (22:42 +0800)
test/compress/bigint.js
test/compress/default-values.js
test/compress/destructured.js
test/compress/exponentiation.js
test/compress/rests.js
test/compress/spreads.js
test/compress/templates.js
test/compress/yields.js
test/sandbox.js

index b417268..aab50ca 100644 (file)
@@ -4,7 +4,7 @@ arithmetic: {
     }
     expect_exact: "console.log((1n+0x2n)*(0o3n- -4n)>>5n-6n);"
     expect_stdout: "42n"
-    node_version: ">=10"
+    node_version: ">=10.4.0"
 }
 
 minus_dot: {
@@ -13,7 +13,7 @@ minus_dot: {
     }
     expect_exact: "console.log(typeof-42n.toString(),typeof(-42n).toString());"
     expect_stdout: "number string"
-    node_version: ">=10"
+    node_version: ">=10.4.0"
 }
 
 evaluate: {
@@ -28,7 +28,7 @@ evaluate: {
         console.log(0xdeadbeefn.toString(16));
     }
     expect_stdout: "deadbeef"
-    node_version: ">=10"
+    node_version: ">=10.4.0"
 }
 
 Number: {
@@ -42,7 +42,7 @@ Number: {
         console.log(+("" + -0xfeed_dead_beef_badn));
     }
     expect_stdout: "-1148098955808013200"
-    node_version: ">=10"
+    node_version: ">=10.4.0"
 }
 
 issue_4590: {
@@ -58,7 +58,7 @@ issue_4590: {
         0n || console.log("PASS");
     }
     expect_stdout: "PASS"
-    node_version: ">=10"
+    node_version: ">=10.4.0"
 }
 
 issue_4801: {
@@ -88,5 +88,5 @@ issue_4801: {
         }
     }
     expect_stdout: "PASS"
-    node_version: ">=10"
+    node_version: ">=10.4.0"
 }
index a7c0ed2..260a35d 100644 (file)
@@ -1037,7 +1037,7 @@ mangle_arrow_1: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=6"
+    node_version: ">=6.9.3"
 }
 
 mangle_arrow_1_toplevel: {
@@ -1073,7 +1073,7 @@ mangle_arrow_1_toplevel: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=6"
+    node_version: ">=6.9.3"
 }
 
 mangle_arrow_2: {
@@ -1109,7 +1109,7 @@ mangle_arrow_2: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=6"
+    node_version: ">=6.9.3"
 }
 
 mangle_arrow_2_toplevel: {
@@ -1145,7 +1145,7 @@ mangle_arrow_2_toplevel: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=6"
+    node_version: ">=6.9.3"
 }
 
 issue_4444: {
@@ -1587,7 +1587,7 @@ issue_4510_2: {
         };
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_4523: {
index 0406748..5acc7f6 100644 (file)
@@ -220,7 +220,7 @@ funarg_side_effects_2: {
         }
     }
     expect_stdout: "PASS"
-    node_version: ">=6"
+    node_version: ">=6.9.2"
 }
 
 funarg_side_effects_3: {
@@ -254,7 +254,7 @@ funarg_side_effects_3: {
         }
     }
     expect_stdout: "PASS"
-    node_version: ">=6"
+    node_version: ">=6.9.2"
 }
 
 funarg_unused_1: {
index 084e005..702add8 100644 (file)
@@ -62,7 +62,7 @@ assignment_2: {
     }
     expect_exact: "var a=8n;a**=a;console.log(a);"
     expect_stdout: "16777216n"
-    node_version: ">=10"
+    node_version: ">=10.4.0"
 }
 
 evaluate: {
index 1a557bc..f377f63 100644 (file)
@@ -51,7 +51,7 @@ arrow_destructured_object_1: {
     }
     expect_exact: "var f=({...a})=>a,o=f({PASS:42});for(var k in o)console.log(k,o[k]);"
     expect_stdout: "PASS 42"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 arrow_destructured_object_2: {
@@ -62,7 +62,7 @@ arrow_destructured_object_2: {
     }
     expect_exact: "var f=({FAIL:a,...b})=>b,o=f({PASS:42,FAIL:null});for(var k in o)console.log(k,o[k]);"
     expect_stdout: "PASS 42"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 arrow_destructured_object_3: {
@@ -79,7 +79,7 @@ arrow_destructured_object_3: {
         "2 S",
         "3 S",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 funarg_1: {
@@ -131,7 +131,7 @@ destructured_object_1: {
     }
     expect_exact: 'var{...a}=["FAIL","PASS",42];console.log(a[1],a[2]);'
     expect_stdout: "PASS 42"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 destructured_object_2: {
@@ -141,7 +141,7 @@ destructured_object_2: {
     }
     expect_exact: 'var{0:a,...b}=["FAIL","PASS",42];console.log(b[1],b[2]);'
     expect_stdout: "PASS 42"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 drop_fargs: {
@@ -231,7 +231,7 @@ reduce_destructured_object: {
         console.log(a[0]);
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 retain_destructured_array: {
@@ -270,7 +270,7 @@ retain_destructured_object_1: {
         "1 PASS",
         "2 42",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 retain_destructured_object_2: {
@@ -292,7 +292,7 @@ retain_destructured_object_2: {
         "bar PASS",
         "baz 42",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 retain_funarg_destructured_array_1: {
@@ -344,7 +344,7 @@ retain_funarg_destructured_object_1: {
         console.log((({ ...a }) => a)([ "PASS" ])[0]);
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 retain_funarg_destructured_object_2: {
@@ -362,7 +362,7 @@ retain_funarg_destructured_object_2: {
         }({ p: "FAIL" }).p || "PASS");
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 drop_unused_call_args_1: {
@@ -482,7 +482,7 @@ merge_funarg_destructured_object: {
         })([ "PASS" ]);
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 keep_arguments: {
@@ -992,7 +992,7 @@ issue_5089_1: {
         console.log(o.p);
     }
     expect_stdout: "undefined"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_5089_2: {
@@ -1019,7 +1019,7 @@ issue_5089_2: {
         console.log(o.p);
     }
     expect_stdout: "undefined"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_5100_1: {
@@ -1054,7 +1054,7 @@ issue_5100_1: {
         console.log(a.r);
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_5100_2: {
@@ -1085,7 +1085,7 @@ issue_5100_2: {
         } ][0]);
     }
     expect_stdout: "PASS"
-    node_version: ">=10"
+    node_version: ">=10.22.0"
 }
 
 issue_5108: {
index 3b1ec46..8c34a0d 100644 (file)
@@ -341,7 +341,7 @@ convert_setter: {
             console.log(k, o[k]);
     }
     expect_stdout: "PASS undefined"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 keep_getter_1: {
@@ -370,7 +370,7 @@ keep_getter_1: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 keep_getter_2: {
@@ -399,7 +399,7 @@ keep_getter_2: {
         "foo",
         "bar",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 keep_getter_3: {
@@ -429,7 +429,7 @@ keep_getter_3: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 keep_getter_4: {
@@ -460,7 +460,7 @@ keep_getter_4: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 keep_accessor: {
@@ -508,7 +508,7 @@ keep_accessor: {
         "q undefined",
         "r null",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 object_key_order_1: {
@@ -538,7 +538,7 @@ object_key_order_1: {
         "a 3",
         "b 2",
     ]
-    node_version: ">=8 <=10"
+    node_version: ">=8.3.0 <=10"
 }
 
 object_key_order_2: {
@@ -568,7 +568,7 @@ object_key_order_2: {
         "a 3",
         "b 2",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 object_key_order_3: {
@@ -598,7 +598,7 @@ object_key_order_3: {
         "a 3",
         "b 2",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 object_key_order_4: {
@@ -628,7 +628,7 @@ object_key_order_4: {
         "a 3",
         "b 2",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 object_spread_array: {
@@ -654,7 +654,7 @@ object_spread_array: {
         "0 foo",
         "1 bar",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 object_spread_string: {
@@ -681,7 +681,7 @@ object_spread_string: {
         "1 o",
         "2 o",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 unused_var_side_effects: {
@@ -711,7 +711,7 @@ unused_var_side_effects: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 unsafe_join_1: {
@@ -793,7 +793,7 @@ issue_4329: {
         }[0]);
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_4331: {
@@ -871,7 +871,7 @@ issue_4345: {
         }[42]);
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_4361: {
@@ -901,7 +901,7 @@ issue_4361: {
         "foo",
         "undefined",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_4363: {
@@ -922,7 +922,7 @@ issue_4363: {
         });
     }
     expect_stdout: "PASS"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_4556: {
@@ -994,7 +994,7 @@ issue_4849: {
         }()));
     }
     expect_stdout: "object"
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_4882_1: {
@@ -1026,7 +1026,7 @@ issue_4882_1: {
         "PASS",
         "undefined",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_4882_2: {
@@ -1052,7 +1052,7 @@ issue_4882_2: {
         "42",
         "PASS",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_4882_3: {
@@ -1082,7 +1082,7 @@ issue_4882_3: {
         "PASS",
         "42",
     ]
-    node_version: ">=8"
+    node_version: ">=8.3.0"
 }
 
 issue_5006: {
index a50470d..db3ab20 100644 (file)
@@ -337,7 +337,7 @@ malformed_evaluate_4: {
         console.log("\\u00b5");
     }
     expect_stdout: "\\u00b5"
-    node_version: ">=8"
+    node_version: ">=8.10.0"
 }
 
 unsafe_evaluate: {
@@ -353,7 +353,7 @@ unsafe_evaluate: {
         console.log("\\uFo");
     }
     expect_stdout: "\\uFo"
-    node_version: ">=8"
+    node_version: ">=8.10.0"
 }
 
 side_effects_1: {
index d10321e..f0ffded 100644 (file)
@@ -970,7 +970,7 @@ issue_4639_1: {
         }().next().value());
     }
     expect_stdout: "PASS"
-    node_version: ">=4"
+    node_version: ">=4 <7 || >=8.7.0"
 }
 
 issue_4639_2: {
index 355b9c0..79b98a2 100644 (file)
@@ -253,7 +253,10 @@ function run_code_vm(code, toplevel, timeout) {
         // for Node.js v6
         vm.runInContext(setup_code, ctx);
         vm.runInContext(toplevel ? "(function(){" + code + "})();" : code, ctx, { timeout: timeout });
-        return strip_color_codes(stdout);
+        // for Node.js v4
+        return strip_color_codes(stdout.replace(/\b(Array \[|Object {)/g, function(match) {
+            return match.slice(-1);
+        }));
     } catch (ex) {
         return ex;
     } finally {
@@ -292,7 +295,7 @@ function run_code_exec(code, toplevel, timeout) {
         } catch (e) {}
     }
     var match = /\n([^:\s]*Error)(?:: ([\s\S]+?))?\n(    at [\s\S]+)\n$/.exec(msg);
-    if (!match) return details;
+    if (!match) return details || new Error(msg);
     var ex = new global[match[1]](match[2]);
     ex.stack = ex.stack.slice(0, ex.stack.indexOf("    at ")) + match[3];
     if (typeof details == "object") {