From fb092839c26ddaa0614df5295be85ea207bda9f7 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Sat, 18 Mar 2017 01:56:15 +0800 Subject: [PATCH] fix top-level directives in compress tests (#1615) `input` and `expect` are parsed as `AST_BlockStatement` which does not support `AST_Directive` by default. Emulate that by transforming preceding `AST_SimpleStatement`s of `AST_String` into `AST_Directive`. --- test/compress/issue-1202.js | 1 - test/compress/screw-ie8.js | 31 ++++++++++++++++++++----------- test/run-tests.js | 17 +++++++++-------- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/test/compress/issue-1202.js b/test/compress/issue-1202.js index 136515fd..27bc4248 100644 --- a/test/compress/issue-1202.js +++ b/test/compress/issue-1202.js @@ -49,4 +49,3 @@ mangle_keep_fnames_true: { } } } - diff --git a/test/compress/screw-ie8.js b/test/compress/screw-ie8.js index 4fbb95c8..0fb68c25 100644 --- a/test/compress/screw-ie8.js +++ b/test/compress/screw-ie8.js @@ -1,20 +1,29 @@ do_screw: { - options = { screw_ie8: true }; + options = { + screw_ie8: true, + } beautify = { screw_ie8: true, - ascii_only: true - }; - - input: f("\v"); - expect_exact: 'f("\\v");'; + ascii_only: true, + } + input: { + f("\v"); + } + expect_exact: 'f("\\v");' } dont_screw: { - options = { screw_ie8: false }; - beautify = { screw_ie8: false, ascii_only: true }; - - input: f("\v"); - expect_exact: 'f("\\x0B");'; + options = { + screw_ie8: false, + } + beautify = { + screw_ie8: false, + ascii_only: true, + } + input: { + f("\v"); + } + expect_exact: 'f("\\x0B");' } do_screw_constants: { diff --git a/test/run-tests.js b/test/run-tests.js index 898bb793..c3c142d1 100755 --- a/test/run-tests.js +++ b/test/run-tests.js @@ -72,10 +72,15 @@ function test_directory(dir) { } function as_toplevel(input, mangle_options) { - if (input instanceof U.AST_BlockStatement) input = input.body; - else if (input instanceof U.AST_Statement) input = [ input ]; - else throw new Error("Unsupported input syntax"); - var toplevel = new U.AST_Toplevel({ body: input }); + if (!(input instanceof U.AST_BlockStatement)) + throw new Error("Unsupported input syntax"); + for (var i = 0; i < input.body.length; i++) { + var stat = input.body[i]; + if (stat instanceof U.AST_SimpleStatement && stat.body instanceof U.AST_String) + input.body[i] = new U.AST_Directive(stat.body); + else break; + } + var toplevel = new U.AST_Toplevel(input); toplevel.figure_out_scope(mangle_options); return toplevel; } @@ -299,10 +304,6 @@ function parse_test(file) { }) ); var stat = node.body; - if (stat instanceof U.AST_BlockStatement) { - if (stat.body.length == 1) stat = stat.body[0]; - else if (stat.body.length == 0) stat = new U.AST_EmptyStatement(); - } if (label.name == "expect_exact") { test[label.name] = read_string(stat); } else if (label.name == "expect_stdout") { -- 2.34.1