That particular version of Node.js has messed up error messages, so provide a version-specific workaround.
Also fixed an formatting issue which would cause `expect_stdout` to fail if error message contains excerpts of input.
Apply `expect_stdout` to more applicable tests.
z = i += 4;
log(x, z, y, i);
}
+ f1(), f2(), f3(), f4();
}
expect: {
function f1() {
y = i += 3;
log(x, i += 4, y, i);
}
+ f1(), f2(), f3(), f4();
}
+ expect_stdout: true
}
collapse_vars_side_effects_2: {
console.log(e + "!");
})("!");
}
+ expect_stdout: true
}
collapse_vars_closures: {
return function() { with (o) console.log(a) };
})()();
}
+ expect_stdout: true
}
collapse_vars_constants: {
(function(){console.log(arguments);})(7, 1);
})();
}
+ expect_stdout: true
}
collapse_vars_short_circuit: {
console.log(result[0]);
})();
}
+ expect_stdout: true
}
issue_1537: {
"1" + "2" + "3"
);
}
+ expect_stdout: true
}
concat_3: {
1 + 2 + "3" + "4" + "5"
);
}
+ expect_stdout: true
}
concat_4: {
1 + "2" + "3" + "4" + "5"
);
}
+ expect_stdout: true
}
concat_5: {
"1" + 2 + "3" + "4" + "5"
);
}
+ expect_stdout: true
}
concat_6: {
"1" + "2" + "3" + "4" + "5"
);
}
+ expect_stdout: true
}
concat_7: {
x += "foo"
);
}
+ expect_stdout: true
}
concat_8: {
x += "foo"
);
}
+ expect_stdout: true
}
while (result = REGEXP_LITERAL.exec("acdabcdeabbb")) console.log(result[0]);
})();
}
+ expect_stdout: true
}
var x = 10, y;
var moo;
}
+ expect_stdout: true
}
dead_code_const_declaration: {
var moo;
function bar() {}
}
+ expect_stdout: true
}
dead_code_const_annotation: {
var moo;
function bar() {}
}
+ expect_stdout: true
}
dead_code_const_annotation_regex: {
var CONST_FOO_ANN = !1;
CONST_FOO_ANN && console.log('reachable');
}
+ expect_stdout: true
}
dead_code_const_annotation_complex_scope: {
var meat = 'beef';
var pork = 'bad';
}
+ expect_stdout: true
}
(void 0).a
);
}
+ expect_stdout: true
}
unsafe_object: {
1..b + 1
);
}
+ expect_stdout: true
}
unsafe_object_nested: {
2
);
}
+ expect_stdout: true
}
unsafe_object_complex: {
2
);
}
+ expect_stdout: true
}
unsafe_object_repeated: {
1..b + 1
);
}
+ expect_stdout: true
}
unsafe_object_accessor: {
({a:{b:1},b:function(){}}).a.b + 1
);
}
+ expect_stdout: true
}
unsafe_integer_key: {
(void 0)[1] + 1
);
}
+ expect_stdout: true
}
unsafe_string: {
console.log(1);
+(1, 1);
}
+ expect_stdout: true
}
call_args_drop_param: {
console.log(1);
+(b, 1);
}
+ expect_stdout: true
}
in_boolean_context: {
(foo(), !1)
);
}
+ expect_stdout: true
}
unsafe_charAt: {
console.log(6);
console.log((a(), b(), 6));
}
+ expect_stdout: true
}
iifes_returning_constants_keep_fargs_false: {
console.log(6);
console.log((a(), b(), 6));
}
+ expect_stdout: true
}
issue_485_crashing_1530: {
}
foo();
}
+ expect_stdout: true
}
x["a"] = 2 * x.b;
console.log(x.b, x["a"]);
}
+ expect_stdout: true
}
issue_1321_debug: {
x["_$foo$_"] = 2 * x.a;
console.log(x.a, x["_$foo$_"]);
}
+ expect_stdout: true
}
issue_1321_with_quoted: {
x["b"] = 2 * x.a;
console.log(x.a, x["b"]);
}
+ expect_stdout: true
}
}
}
expect_exact: "for(var i=1;i<=4;++i)if(!(i<=2))console.log(i);"
+ expect_stdout: true
}
var CONST_FOO_ANN = !1;
if (CONST_FOO_ANN) console.log('reachable');
}
+ expect_stdout: true
}
drop_console_2: {
})()();
}
expect_exact: '(function(){return function(){console.log("test")}})()();'
+ expect_stdout: true
}
issue_1254_negate_iife_nested: {
})()()()()();
}
expect_exact: '(function(){return function(){console.log("test")}})()()()()();'
+ expect_stdout: true
}
conditional: {
})(5,6,7);
}
expect_exact: "(function(){var arguments=arguments,o=9;console.log(o,arguments)})(5,6,7);"
+ expect_stdout: true
}
eval("console.log(a);");
})(eval);
}
+ expect_stdout: true
}
eval_unused: {
expect: {
foo || console.log("bar");
}
+ expect_stdout: true
}
labels_2: {
for (var i = 0; i < 5; ++i)
i < 3 || console.log(i);
}
+ expect_stdout: true
}
labels_4: {
for (var i = 0; i < 5; ++i)
i < 3 || console.log(i);
}
+ expect_stdout: true
}
labels_5: {
console.log(i);
console.log(c);
}
+ expect_stdout: true
}
keep_collapse_const_in_own_block_scope_2: {
console.log(i);
console.log(c);
}
+ expect_stdout: true
}
evaluate: {
expect: {
console.log(true);
}
+ expect_stdout: true
}
negate_iife_3_side_effects: {
expect: {
console.log(true);
}
+ expect_stdout: true
}
negate_iife_4: {
}(7);
}).f();
}
+ expect_stdout: true
}
negate_iife_nested_off: {
})(7);
}).f();
}
+ expect_stdout: true
}
negate_iife_issue_1073: {
};
}(7))();
}
+ expect_stdout: true
}
issue_1254_negate_iife_false: {
})()();
}
expect_exact: '(function(){return function(){console.log("test")}})()();'
+ expect_stdout: true
}
issue_1254_negate_iife_true: {
})()();
}
expect_exact: '!function(){return function(){console.log("test")}}()();'
+ expect_stdout: true
}
issue_1254_negate_iife_nested: {
})()()()()();
}
expect_exact: '!function(){return function(){console.log("test")}}()()()()();'
+ expect_stdout: true
}
issue_1288: {
})();
console.log(2);
}
+ expect_stdout: true
}
modified: {
console.log(A ? 'yes' : 'no');
console.log(B ? 'yes' : 'no');
}
- }
+ }
}
unsafe_evaluate: {
console.log(0, 1 * b, 5);
}(1, 2, 3);
}
+ expect_stdout: true
}
iife_new: {
console.log(0, 1 * b, 5);
}(1, 2, 3);
}
+ expect_stdout: true
}
multi_def: {
expect: {
console.log(3);
}
+ expect_stdout: true
}
toplevel_off: {
var x = 3;
console.log(x);
}
+ expect_stdout: true
}
toplevel_on_loops_1: {
})();
while (x);
}
+ expect_stdout: true
}
toplevel_off_loops_1: {
bar();
while (x);
}
+ expect_stdout: true
}
toplevel_on_loops_2: {
}(2));
}();
}
+ expect_stdout: true
}
double_reference: {
return f;
});
}
+ expect_stdout: true
}
iife_arguments_2: {
}() === arguments[0]);
})();
}
+ expect_stdout: true
}
iife_eval_1: {
return f;
});
}
+ expect_stdout: true
}
iife_eval_2: {
console.log(x() === eval("x"));
})();
}
+ expect_stdout: true
}
iife_func_side_effects: {
if (a) iife(a - 1, b, c);
})(3, 4, 5);
}
+ expect_stdout: true
}
issue_1606: {
return void 0===o
}
}
+ expect_stdout: true
}
dont_screw_try_catch_undefined: {
return n === undefined
}
}
+ expect_stdout: true
}
reduce_vars: {
}
}
expect_exact: "function f(){try{}catch(c){console.log(c.message)}}"
+ expect_stdout: true
}
issue_1586_2: {
}
}
expect_exact: "function f(){try{}catch(c){console.log(c.message)}}"
+ expect_stdout: true
}
switch (x = 5, y) {}
with (x = 5, obj);
}
+ expect_stdout: true
}
lift_sequences_1: {
for (!function() {}(), i = 0; i < 5; i++) console.log(i);
for (function() {}(); i < 5; i++) console.log(i);
}
+ expect_stdout: true
}
iife: {
console.log(!0, !0);
console.log(!1, !1);
}
+ expect_stdout: true
}
booleans_global_defs: {
expect: {
console.log(!0);
}
+ expect_stdout: true
}
condition_evaluate: {
var tests_dir = path.dirname(module.filename);
var failures = 0;
var failed_files = {};
+var same_stdout = ~process.version.lastIndexOf("v0.12.", 0) ? function(expected, actual) {
+ if (typeof expected != typeof actual) return false;
+ if (typeof expected != "string") {
+ if (expected.name != actual.name) return false;
+ expected = expected.message.slice(expected.message.lastIndexOf("\n") + 1);
+ actual = actual.message.slice(actual.message.lastIndexOf("\n") + 1);
+ }
+ return expected == actual;
+} : function(expected, actual) {
+ return typeof expected == typeof actual && expected.toString() == actual.toString();
+};
run_compress_tests();
if (failures) {
}
}
if (test.expect_stdout) {
- var stdout = run_code(input_code);
+ var stdout = run_code(make_code(input, output_options));
if (test.expect_stdout === true) {
test.expect_stdout = stdout;
}
process.stdout.write = original_write;
}
}
-
-function same_stdout(expected, actual) {
- return typeof expected == typeof actual && expected.toString() == actual.toString();
-}