This commit is contained in:
dsimard 2012-12-27 08:03:51 -08:00
commit b248b45696
3 changed files with 156 additions and 151 deletions

1
index.js Normal file
View File

@ -0,0 +1 @@
module.exports = require("./tools/node")

View File

@ -21,5 +21,6 @@
"bin": {
"uglifyjs" : "bin/uglifyjs"
},
"main": "./tools/node",
"scripts": {"test": "node test/run-tests.js"}
}

View File

@ -1,39 +1,41 @@
#! /usr/bin/env node
var U = require("../tools/node");
var path = require("path");
var fs = require("fs");
var assert = require("assert");
var sys = require("util");
// Test the two requires
["../tools/node", "../"].forEach(function(requireFile) {
var U = require(requireFile);
var path = require("path");
var fs = require("fs");
var assert = require("assert");
var sys = require("util");
var tests_dir = path.dirname(module.filename);
var tests_dir = path.dirname(module.filename);
run_compress_tests();
run_compress_tests();
/* -----[ utils ]----- */
/* -----[ utils ]----- */
function tmpl() {
function tmpl() {
return U.string_template.apply(this, arguments);
}
}
function log() {
function log() {
var txt = tmpl.apply(this, arguments);
sys.puts(txt);
}
}
function log_directory(dir) {
function log_directory(dir) {
log("*** Entering [{dir}]", { dir: dir });
}
}
function log_start_file(file) {
function log_start_file(file) {
log("--- {file}", { file: file });
}
}
function log_test(name) {
function log_test(name) {
log(" Running test [{name}]", { name: name });
}
}
function find_test_files(dir) {
function find_test_files(dir) {
var files = fs.readdirSync(dir).filter(function(name){
return /\.js$/i.test(name);
});
@ -44,22 +46,22 @@ function find_test_files(dir) {
});
}
return files;
}
}
function test_directory(dir) {
function test_directory(dir) {
return path.resolve(tests_dir, dir);
}
}
function as_toplevel(input) {
function as_toplevel(input) {
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 });
toplevel.figure_out_scope();
return toplevel;
}
}
function run_compress_tests() {
function run_compress_tests() {
var dir = test_directory("compress");
log_directory("compress");
var files = find_test_files(dir);
@ -93,9 +95,9 @@ function run_compress_tests() {
files.forEach(function(file){
test_file(file);
});
}
}
function parse_test(file) {
function parse_test(file) {
var script = fs.readFileSync(file, "utf8");
var ast = U.parse(script, {
filename: file
@ -154,17 +156,18 @@ function parse_test(file) {
block.walk(tw);
return test;
};
}
}
function make_code(ast, beautify) {
function make_code(ast, beautify) {
if (arguments.length == 1) beautify = true;
var stream = U.OutputStream({ beautify: beautify });
ast.print(stream);
return stream.get();
}
}
function evaluate(code) {
function evaluate(code) {
if (code instanceof U.AST_Node)
code = make_code(code);
return new Function("return(" + code + ")")();
}
}
});