aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-01-21 06:33:31 +0000
committerGitHub <noreply@github.com>2021-01-21 14:33:31 +0800
commite675262d51103122720aded924f5571e12086fc9 (patch)
tree517855b5eb23c0850c97e0fafa158747befb11ee
parentc1e771a89a65751016bbafd56d710accf6d7bf21 (diff)
downloadtracifyjs-e675262d51103122720aded924f5571e12086fc9.tar.gz
tracifyjs-e675262d51103122720aded924f5571e12086fc9.zip
suppress false positives in `ufuzz` (#4577)
-rw-r--r--test/sandbox.js23
-rw-r--r--test/ufuzz/index.js12
2 files changed, 23 insertions, 12 deletions
diff --git a/test/sandbox.js b/test/sandbox.js
index 540b2339..bd4c7a8d 100644
--- a/test/sandbox.js
+++ b/test/sandbox.js
@@ -235,17 +235,26 @@ function run_code_exec(code, toplevel, timeout) {
} catch (ex) {
var msg = ex.message.replace(/\r\n/g, "\n");
if (/ETIMEDOUT/.test(msg)) return new Error("Script execution timed out.");
- var value = msg.slice(msg.indexOf("\n") + 1, msg.indexOf("\n\n-----===== UNCAUGHT EXCEPTION =====-----\n\n"));
- try {
- value = vm.runInNewContext("(" + value.replace(/<([1-9][0-9]*) empty items?>/g, function(match, count) {
+ var end = msg.indexOf("\n\n-----===== UNCAUGHT EXCEPTION =====-----\n\n");
+ var details;
+ if (end >= 0) {
+ var start = msg.indexOf("\n") + 1;
+ details = msg.slice(start, end).replace(/<([1-9][0-9]*) empty items?>/g, function(match, count) {
return new Array(+count).join();
- }) + ")");
- } catch (e) {}
+ });
+ try {
+ details = vm.runInNewContext("(" + details + ")");
+ } catch (e) {}
+ }
var match = /\n([^:\s]*Error)(?:: ([\s\S]+?))?\n( at [\s\S]+)\n$/.exec(msg);
- if (!match) return value;
+ if (!match) return details;
ex = new global[match[1]](match[2]);
ex.stack = ex.stack.slice(0, ex.stack.indexOf(" at ")) + match[3];
- for (var name in value) ex[name] = value[name];
+ if (typeof details == "object") {
+ for (var name in details) ex[name] = details[name];
+ } else if (end >= 0) {
+ ex.details = details;
+ }
return ex;
}
}
diff --git a/test/ufuzz/index.js b/test/ufuzz/index.js
index 74bd8df9..01863e1a 100644
--- a/test/ufuzz/index.js
+++ b/test/ufuzz/index.js
@@ -1761,11 +1761,10 @@ function sort_globals(code) {
errorln("//-------------------------------------------------------------");
errorln("// !!! sort_globals() failed !!!");
errorln("// expected Array, got:");
- try {
- errorln("// " + JSON.stringify(globals));
- } catch (e) {
- errorln("// " + globals);
- }
+ if (!sandbox.is_error(globals)) try {
+ globals = JSON.stringify(globals);
+ } catch (e) {}
+ errorln(globals);
errorln("//");
errorln(code);
errorln();
@@ -1922,6 +1921,7 @@ for (var round = 1; round <= num_iterations; round++) {
println("original result:");
println(orig_result[0]);
println();
+ // ignore v8 parser bug
if (is_bug_async_arrow_rest(orig_result[0])) continue;
}
minify_options.forEach(function(options) {
@@ -1934,6 +1934,8 @@ for (var round = 1; round <= num_iterations; round++) {
uglify_code = uglify_code.code;
uglify_result = sandbox.run_code(uglify_code, toplevel);
ok = sandbox.same_stdout(original_result, uglify_result);
+ // ignore v8 parser bug
+ if (!ok && is_bug_async_arrow_rest(uglify_result)) ok = true;
// ignore declaration order of global variables
if (!ok && !toplevel) {
ok = sandbox.same_stdout(sandbox.run_code(sort_globals(original_code)), sandbox.run_code(sort_globals(uglify_code)));