diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2021-01-21 06:33:31 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-21 14:33:31 +0800 |
commit | e675262d51103122720aded924f5571e12086fc9 (patch) | |
tree | 517855b5eb23c0850c97e0fafa158747befb11ee | |
parent | c1e771a89a65751016bbafd56d710accf6d7bf21 (diff) | |
download | tracifyjs-e675262d51103122720aded924f5571e12086fc9.tar.gz tracifyjs-e675262d51103122720aded924f5571e12086fc9.zip |
suppress false positives in `ufuzz` (#4577)
-rw-r--r-- | test/sandbox.js | 23 | ||||
-rw-r--r-- | test/ufuzz/index.js | 12 |
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))); |