51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
#! /usr/bin/env node
|
|
|
|
// Runs a test262(-like) script through the uglifyjs minifier with default options
|
|
// It is expected to minify and execute the script without problems
|
|
// as a failed test is indicated by throwing an exception.
|
|
|
|
// argv number 2 is assumed to be the input file
|
|
var file = process.argv[2];
|
|
|
|
var fs = require("fs");
|
|
var vm = require("vm");
|
|
var UglifyJS = require("./node.js");
|
|
|
|
console.log("Using node " + process.versions.node);
|
|
console.log(process.versions);
|
|
|
|
var result = "[Nothing]";
|
|
try {
|
|
// Compress file
|
|
result = UglifyJS.minify(file).code;
|
|
// Run result to make sure the script is still runable
|
|
vm.runInNewContext(result, {});
|
|
|
|
} catch(e) {
|
|
// Report
|
|
console.log("A minified script failed to run");
|
|
console.log("file: " + file);
|
|
console.log("minified output:");
|
|
console.log(result);
|
|
console.log();
|
|
console.log("==========");
|
|
console.log(e);
|
|
console.log(e.stack);
|
|
console.log();
|
|
console.log("Now running script without minification...");
|
|
console.log();
|
|
|
|
// Make sure script runs fine without compiling as well
|
|
input = fs.readFileSync(file, {encoding: 'utf8'});
|
|
try {
|
|
vm.runInNewContext(input, {});
|
|
console.log("Ran without problems unminified");
|
|
} catch (e2) {
|
|
console.log("Failed to run script unminified as well");
|
|
console.log(e2.stack);
|
|
|
|
process.exit(2); // Nope...
|
|
}
|
|
|
|
process.exit(1); // We found a great mystery to solve
|
|
} |