Added benchmarks.
parent
f2b04930c1
commit
1e14d47bb7
@ -0,0 +1,14 @@
|
||||
var readability = require("./index.js");
|
||||
var Readability = readability.Readability;
|
||||
var JSDOMParser = readability.JSDOMParser;
|
||||
|
||||
suite("Readability test suite benchmarks", function () {
|
||||
set("iterations", 100);
|
||||
set("type", "static");
|
||||
|
||||
require("./test/bootstrap").getTestPages().forEach(function(testPage) {
|
||||
bench(testPage.dir + " perf", function() {
|
||||
new JSDOMParser().parse(testPage.source);
|
||||
});
|
||||
});
|
||||
});
|
@ -0,0 +1,31 @@
|
||||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
var prettyPrint = require("html").prettyPrint;
|
||||
var chai = require("chai");
|
||||
chai.config.includeStack = true;
|
||||
var expect = chai.expect;
|
||||
|
||||
// We want to load Readability and JSDOMParser, which aren't set up as commonjs libraries,
|
||||
// and so we need to do some hocus-pocus with 'vm' to import them on a separate scope
|
||||
// (identical) scope context.
|
||||
var vm = require("vm");
|
||||
var readabilityPath = path.join(__dirname, "Readability.js");
|
||||
var jsdomPath = path.join(__dirname, "JSDOMParser.js");
|
||||
|
||||
|
||||
var scopeContext = {};
|
||||
// We generally expect dump() and console.{whatever} to work, so make these available
|
||||
// in the scope we're using:
|
||||
scopeContext.dump = console.log
|
||||
scopeContext.console = console;
|
||||
|
||||
// Actually load files. NB: if either of the files has parse errors,
|
||||
// node is dumb and shows you a syntax error *at this callsite* . Don't try to find
|
||||
// a syntax error on this line, there isn't one. Go look in the file it's loading instead.
|
||||
vm.runInNewContext(fs.readFileSync(jsdomPath), scopeContext, jsdomPath);
|
||||
vm.runInNewContext(fs.readFileSync(readabilityPath), scopeContext, readabilityPath);
|
||||
|
||||
module.exports = {
|
||||
Readability: scopeContext.Readability,
|
||||
JSDOMParser: scopeContext.JSDOMParser
|
||||
};
|
@ -0,0 +1,23 @@
|
||||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
|
||||
function readFile(path) {
|
||||
return fs.readFileSync(path, {encoding: "utf-8"}).trim();
|
||||
}
|
||||
|
||||
function readJSON(path) {
|
||||
return JSON.parse(readFile(path));
|
||||
}
|
||||
|
||||
var testPageRoot = path.join(__dirname, "test-pages");
|
||||
|
||||
exports.getTestPages = function() {
|
||||
return fs.readdirSync(testPageRoot).map(function(dir) {
|
||||
return {
|
||||
dir: dir,
|
||||
source: readFile(path.join(testPageRoot, dir, "source.html")),
|
||||
expectedContent: readFile(path.join(testPageRoot, dir, "expected.html")),
|
||||
expectedMetadata: readJSON(path.join(testPageRoot, dir, "expected-metadata.json")),
|
||||
};
|
||||
});
|
||||
};
|
Loading…
Reference in New Issue