cache web assets between CI runs (#2089)
- skip `test/jetstream.js` for `node@0.12`
This commit is contained in:
@@ -10,3 +10,5 @@ env:
|
|||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
sudo: false
|
sudo: false
|
||||||
|
cache:
|
||||||
|
directories: tmp
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var createHash = require("crypto").createHash;
|
var createHash = require("crypto").createHash;
|
||||||
|
var fetch = require("./fetch");
|
||||||
var fork = require("child_process").fork;
|
var fork = require("child_process").fork;
|
||||||
var args = process.argv.slice(2);
|
var args = process.argv.slice(2);
|
||||||
if (!args.length) {
|
if (!args.length) {
|
||||||
@@ -52,7 +53,8 @@ urls.forEach(function(url) {
|
|||||||
output: 0,
|
output: 0,
|
||||||
log: ""
|
log: ""
|
||||||
};
|
};
|
||||||
require(url.slice(0, url.indexOf(":"))).get(url, function(res) {
|
fetch(url, function(err, res) {
|
||||||
|
if (err) throw err;
|
||||||
var uglifyjs = fork("bin/uglifyjs", args, { silent: true });
|
var uglifyjs = fork("bin/uglifyjs", args, { silent: true });
|
||||||
res.on("data", function(data) {
|
res.on("data", function(data) {
|
||||||
results[url].input += data.length;
|
results[url].input += data.length;
|
||||||
|
|||||||
31
test/fetch.js
Normal file
31
test/fetch.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
var fs = require("fs");
|
||||||
|
var path = require("path");
|
||||||
|
|
||||||
|
try {
|
||||||
|
fs.mkdirSync("./tmp");
|
||||||
|
} catch (e) {
|
||||||
|
if (e.code != "EEXIST") throw e;
|
||||||
|
}
|
||||||
|
|
||||||
|
function local(url) {
|
||||||
|
return path.join("./tmp", encodeURIComponent(url));
|
||||||
|
}
|
||||||
|
|
||||||
|
function read(url) {
|
||||||
|
return fs.createReadStream(local(url));
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = function(url, callback) {
|
||||||
|
var result = read(url);
|
||||||
|
result.on("error", function(e) {
|
||||||
|
if (e.code != "ENOENT") return callback(e);
|
||||||
|
require(url.slice(0, url.indexOf(":"))).get(url, function(res) {
|
||||||
|
if (res.statusCode !== 200) return callback(res);
|
||||||
|
res.pipe(fs.createWriteStream(local(url)).on("close", function() {
|
||||||
|
callback(null, read(url));
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}).on("open", function() {
|
||||||
|
callback(null, result);
|
||||||
|
});
|
||||||
|
};
|
||||||
@@ -23,13 +23,19 @@ if (typeof phantom == "undefined") {
|
|||||||
}
|
}
|
||||||
args.push("--timings");
|
args.push("--timings");
|
||||||
var child_process = require("child_process");
|
var child_process = require("child_process");
|
||||||
|
var fetch = require("./fetch");
|
||||||
var http = require("http");
|
var http = require("http");
|
||||||
var server = http.createServer(function(request, response) {
|
var server = http.createServer(function(request, response) {
|
||||||
request.resume();
|
request.resume();
|
||||||
var url = site + request.url;
|
var url = site + request.url;
|
||||||
http.get(url, function(res) {
|
fetch(url, function(err, res) {
|
||||||
response.writeHead(res.statusCode, {
|
if (err) throw err;
|
||||||
"Content-Type": res.headers["content-type"]
|
response.writeHead(200, {
|
||||||
|
"Content-Type": {
|
||||||
|
css: "text/css",
|
||||||
|
js: "application/javascript",
|
||||||
|
png: "image/png"
|
||||||
|
}[url.slice(url.lastIndexOf(".") + 1)] || "text/html; charset=utf-8"
|
||||||
});
|
});
|
||||||
if (/\.js$/.test(url)) {
|
if (/\.js$/.test(url)) {
|
||||||
var stderr = "";
|
var stderr = "";
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
var assert = require("assert");
|
var assert = require("assert");
|
||||||
|
var semver = require("semver");
|
||||||
var spawn = require("child_process").spawn;
|
var spawn = require("child_process").spawn;
|
||||||
|
|
||||||
if (!process.env.UGLIFYJS_TEST_ALL) return;
|
if (!process.env.UGLIFYJS_TEST_ALL) return;
|
||||||
@@ -32,6 +33,7 @@ describe("test/benchmark.js", function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (semver.satisfies(process.version, "0.12")) return;
|
||||||
describe("test/jetstream.js", function() {
|
describe("test/jetstream.js", function() {
|
||||||
this.timeout(20 * 60 * 1000);
|
this.timeout(20 * 60 * 1000);
|
||||||
[
|
[
|
||||||
|
|||||||
Reference in New Issue
Block a user