From b0eab71470fa887752bcf5442fbb26da3f724ef1 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Tue, 6 Jun 2017 19:28:12 +0800 Subject: [PATCH] implement `test/jetstream.js --debug` (#2058) --- test/jetstream.js | 85 +++++++++++++++++++++++++------------------ test/mocha/release.js | 3 -- 2 files changed, 49 insertions(+), 39 deletions(-) diff --git a/test/jetstream.js b/test/jetstream.js index cb8f111f..8279975c 100644 --- a/test/jetstream.js +++ b/test/jetstream.js @@ -3,7 +3,7 @@ "use strict"; -var site = "http://browserbench.org/JetStream/"; +var site = "http://browserbench.org/JetStream"; if (typeof phantom == "undefined") { // workaround for tty output truncation upon process.exit() [process.stdout, process.stderr].forEach(function(stream){ @@ -11,45 +11,62 @@ if (typeof phantom == "undefined") { stream._handle.setBlocking(true); }); var args = process.argv.slice(2); + var debug = args.indexOf("--debug"); + if (debug >= 0) { + args.splice(debug, 1); + debug = true; + } else { + debug = false; + } if (!args.length) { args.push("-mcb", "beautify=false,webkit"); } args.push("--timings"); var child_process = require("child_process"); - try { - require("phantomjs-prebuilt"); - } catch(e) { - child_process.execSync("npm install phantomjs-prebuilt@2.1.14 --no-save"); - } var http = require("http"); var server = http.createServer(function(request, response) { request.resume(); - var url = decodeURIComponent(request.url.slice(1)); - var stderr = ""; - var uglifyjs = child_process.fork("bin/uglifyjs", args, { - silent: true - }).on("exit", function(code) { - console.log("uglifyjs", url.indexOf(site) == 0 ? url.slice(site.length) : url, args.join(" ")); - console.log(stderr); - if (code) throw new Error("uglifyjs failed with code " + code); - }); - uglifyjs.stderr.on("data", function(data) { - stderr += data; - }).setEncoding("utf8"); - uglifyjs.stdout.pipe(response); + var url = site + request.url; http.get(url, function(res) { - res.pipe(uglifyjs.stdin); - }); - }).listen().on("listening", function() { - var phantomjs = require("phantomjs-prebuilt"); - var program = phantomjs.exec(process.argv[1], server.address().port); - program.stdout.pipe(process.stdout); - program.stderr.pipe(process.stderr); - program.on("exit", function(code) { - server.close(); - if (code) throw new Error("JetStream failed!"); - console.log("JetStream completed successfully."); + response.writeHead(res.statusCode, { + "Content-Type": res.headers["content-type"] + }); + if (/\.js$/.test(url)) { + var stderr = ""; + var uglifyjs = child_process.fork("bin/uglifyjs", args, { + silent: true + }).on("exit", function(code) { + console.log("uglifyjs", url.slice(site.length + 1), args.join(" ")); + console.log(stderr); + if (code) throw new Error("uglifyjs failed with code " + code); + }); + uglifyjs.stderr.on("data", function(data) { + stderr += data; + }).setEncoding("utf8"); + uglifyjs.stdout.pipe(response); + res.pipe(uglifyjs.stdin); + } else { + res.pipe(response); + } }); + }).listen(); + server.on("listening", function() { + var port = server.address().port; + if (debug) { + console.log("http://localhost:" + port + "/"); + } else { + child_process.exec("npm install phantomjs-prebuilt@2.1.14 --no-save", function(error) { + if (error) throw error; + var program = require("phantomjs-prebuilt").exec(process.argv[1], port); + program.stdout.pipe(process.stdout); + program.stderr.pipe(process.stderr); + program.on("exit", function(code) { + server.close(); + if (code) throw new Error("JetStream failed!"); + console.log("JetStream completed successfully."); + }); + }); + } }); server.timeout = 0; } else { @@ -63,10 +80,6 @@ if (typeof phantom == "undefined") { phantom.exit(1); }; var url = "http://localhost:" + require("system").args[1] + "/"; - page.onResourceRequested = function(requestData, networkRequest) { - if (/\.js$/.test(requestData.url)) - networkRequest.changeUrl(url + encodeURIComponent(requestData.url)); - } page.onConsoleMessage = function(msg) { if (/Error:/i.test(msg)) { console.error(msg); @@ -77,8 +90,8 @@ if (typeof phantom == "undefined") { phantom.exit(); } }; - page.open(site, function(status) { - if (status != "success") phantomjs.exit(1); + page.open(url, function(status) { + if (status != "success") phantom.exit(1); page.evaluate(function() { JetStream.switchToQuick(); JetStream.start(); diff --git a/test/mocha/release.js b/test/mocha/release.js index c96a7926..9f894b3d 100644 --- a/test/mocha/release.js +++ b/test/mocha/release.js @@ -38,9 +38,6 @@ describe("test/benchmark.js", function() { describe("test/jetstream.js", function() { this.timeout(20 * 60 * 1000); - it("Should install phantomjs-prebuilt", function(done) { - run("npm", ["install", "phantomjs-prebuilt@2.1.14"], done); - }); [ "-mc", "-mc keep_fargs=false,passes=3,pure_getters,unsafe,unsafe_comps,unsafe_math,unsafe_proto", -- 2.34.1