Moved all spec and benchmark tests

- Moved benchmark to test/benchmark
- Moved tests to test/spec
- Removed individual servers
- Implemented single test server
- Moved server assets to test/server
- Updated Gulpfile.js
- Moved tools/impact to test/impact

This commit move's nearly all code related to testing the PEG.js module into the test directory, and also ensures they run as they did before the move.
master
Futago-za Ryuu 7 years ago
parent a1ad351c2c
commit 5a833bd982

@ -1,36 +0,0 @@
#!/usr/bin/env node
"use strict";
/* eslint-env node */
// Small server whose main purpose is to ensure that both the benchmarked code
// and the benchmark get passed through Babel & Browserify before they are
// served to the browser.
let babelify = require("babelify");
let browserify = require("browserify");
let express = require("express");
let glob = require("glob");
let logger = require("morgan");
let app = express();
app.use(logger("dev"));
app.use(express.static(__dirname));
app.use("/examples", express.static(`${__dirname}/../examples`));
app.get("/bundle.js", (req, res) => {
let files = glob.sync(`${__dirname}/**/*.js`, {
ignore: `${__dirname}/vendor/**/*`
});
browserify(files)
.transform(babelify, { presets: "es2015", compact: false })
.bundle()
.pipe(res);
});
app.listen(8000, () => {
console.log("Benchmark server running at http://localhost:8000...");
});

@ -32,20 +32,16 @@ const HEADER = [
const JS_FILES = [ const JS_FILES = [
"lib/**/*.js", "lib/**/*.js",
"!lib/parser.js", "!lib/parser.js",
"test/**/*.js", "test/benchmark/**/*.js",
"test/server", "test/benchmark/run",
"!test/vendor/**/*", "test/spec/**/*.js",
"benchmark/**/*.js", "test/server/run",
"benchmark/run",
"benchmark/server",
"!benchmark/vendor/**/*",
"bin/*.js", "bin/*.js",
"gulpfile.js" "gulpfile.js"
]; ];
const TEST_FILES = [ const TEST_FILES = [
"test/**/*.js", "test/spec/**/*.js"
"!test/vendor/**/*"
]; ];
function generate(contents) { function generate(contents) {
@ -71,7 +67,7 @@ gulp.task("test", () =>
// Run benchmarks. // Run benchmarks.
gulp.task("benchmark", () => gulp.task("benchmark", () =>
spawn("node", ["benchmark/run"], { stdio: "inherit" }) spawn("node", ["test/benchmark/run"], { stdio: "inherit" })
); );
// Create the browser build. // Create the browser build.

@ -49,6 +49,7 @@
"lint": "gulp lint", "lint": "gulp lint",
"spec": "gulp test", "spec": "gulp test",
"test": "gulp", "test": "gulp",
"test:server": "node test/server/run",
"benchmark": "gulp benchmark", "benchmark": "gulp benchmark",
"browser:build": "gulp browser:build", "browser:build": "gulp browser:build",
"browser:clean": "gulp browser:build", "browser:clean": "gulp browser:build",

@ -10,12 +10,6 @@ $("#run").click(() => {
let resultsTable = $("#results-table"); let resultsTable = $("#results-table");
function appendHeading(heading) {
resultsTable.append(
"<tr class='heading'><th colspan='4'>" + heading + "</th></tr>"
);
}
function appendResult(klass, title, url, inputSize, parseTime) { function appendResult(klass, title, url, inputSize, parseTime) {
const KB = 1024; const KB = 1024;
const MS_IN_S = 1000; const MS_IN_S = 1000;
@ -76,7 +70,7 @@ $("#run").click(() => {
readFile(file) { readFile(file) {
return $.ajax({ return $.ajax({
type: "GET", type: "GET",
url: file, url: "benchmark/" + file,
dataType: "text", dataType: "text",
async: false async: false
}).responseText; }).responseText;
@ -90,14 +84,20 @@ $("#run").click(() => {
appendResult( appendResult(
"individual", "individual",
test.title, test.title,
benchmark.id + "/" + test.file, "benchmark/" + benchmark.id + "/" + test.file,
inputSize, inputSize,
parseTime parseTime
); );
}, },
benchmarkStart(benchmark) { benchmarkStart(benchmark) {
appendHeading(benchmark.title); resultsTable.append(
"<tr class='heading'><th colspan='4'>"
+ "<a href='../../examples/" + benchmark.id + ".pegjs'>"
+ benchmark.title
+ "</a>"
+ "</th></tr>"
);
}, },
benchmarkFinish(benchmark, inputSize, parseTime) { benchmarkFinish(benchmark, inputSize, parseTime) {

@ -2,7 +2,7 @@
/* global setTimeout */ /* global setTimeout */
let peg = require("../lib/peg"); let peg = require("../../lib/peg");
let Runner = { let Runner = {
run(benchmarks, runCount, options, callbacks) { run(benchmarks, runCount, options, callbacks) {
@ -53,7 +53,7 @@ let Runner = {
callbacks.benchmarkStart(benchmark); callbacks.benchmarkStart(benchmark);
state.parser = peg.generate( state.parser = peg.generate(
callbacks.readFile("../examples/" + benchmark.id + ".pegjs"), callbacks.readFile("../../examples/" + benchmark.id + ".pegjs"),
options options
); );
state.benchmarkInputSize = 0; state.benchmarkInputSize = 0;

@ -1,35 +0,0 @@
#!/usr/bin/env node
"use strict";
/* eslint-env node */
// Small server whose main purpose is to ensure that both the tested code and
// the tests get passed through Babel & Browserify before they are served to the
// browser.
let babelify = require("babelify");
let browserify = require("browserify");
let express = require("express");
let glob = require("glob");
let logger = require("morgan");
let app = express();
app.use(logger("dev"));
app.use(express.static(__dirname));
app.get("/bundle.js", (req, res) => {
let files = glob.sync(`${__dirname}/**/*.js`, {
ignore: `${__dirname}/vendor/**/*`
});
browserify(files)
.transform(babelify, { presets: "es2015", compact: false })
.bundle()
.pipe(res);
});
app.listen(8000, () => {
console.log("Test server running at http://localhost:8000...");
});

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>PEG.js Benchmark Suite</title> <title>PEG.js Benchmark Suite</title>
<link rel="stylesheet" href="index.css"> <link rel="stylesheet" href="benchmark.css">
</head> </head>
<body> <body>
<h1>PEG.js Benchmark Suite</h1> <h1>PEG.js Benchmark Suite</h1>
@ -35,6 +35,6 @@
<script src="vendor/jquery/jquery.js"></script> <script src="vendor/jquery/jquery.js"></script>
<script src="vendor/jquery.scrollto/jquery.scrollTo.js"></script> <script src="vendor/jquery.scrollto/jquery.scrollTo.js"></script>
<script src="bundle.js"></script> <script src="benchmark/bundle.js"></script>
</body> </body>
</html> </html>

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PEG.js Test Suites</title>
<style>
a {
text-decoration: none;
color: #1A0BF1;
}
a:hover {
text-decoration: underline;
color: #9D0BF1;
}
</style>
</head>
<body>
<p>
<h1>PEG.js Test Suites</h1>
</p>
&bull; <a href="/benchmark.html">Benchmark Suite</a><br />
&bull; <a href="/spec.html">Spec Suite</a>
</body>
</html>

@ -0,0 +1,34 @@
#!/usr/bin/env node
"use strict";
/* eslint-env node */
let babelify = require("babelify");
let browserify = require("browserify");
let express = require("express");
let glob = require("glob");
let logger = require("morgan");
let app = express();
app.use(logger("dev"));
app.use(express.static(__dirname));
app.use("/benchmark", express.static(`${__dirname}/../benchmark`));
app.use("/examples", express.static(`${__dirname}/../../examples`));
app.get("/:dir/bundle.js", (req, res) => {
browserify(glob.sync(
`${__dirname}/../${req.params.dir}/**/*.js`
))
.transform(babelify, {
presets: "es2015",
compact: false
})
.bundle()
.pipe(res);
});
app.listen(8000, () => {
console.log("Test server running at: http://localhost:8000/");
});

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>PEG.js Test Suite</title> <title>PEG.js Spec Suite</title>
<link rel="stylesheet" href="vendor/mocha/mocha.css"> <link rel="stylesheet" href="vendor/mocha/mocha.css">
</head> </head>
<body> <body>
@ -11,7 +11,7 @@
<script> <script>
mocha.setup('bdd'); mocha.setup('bdd');
</script> </script>
<script src="bundle.js"></script> <script src="spec/bundle.js"></script>
<script> <script>
mocha.run(); mocha.run();
</script> </script>

@ -3,7 +3,7 @@
/* global console */ /* global console */
let chai = require("chai"); let chai = require("chai");
let peg = require("../../lib/peg"); let peg = require("../../../lib/peg");
let sinon = require("sinon"); let sinon = require("sinon");
let expect = chai.expect; let expect = chai.expect;

@ -1,7 +1,7 @@
"use strict"; "use strict";
let chai = require("chai"); let chai = require("chai");
let peg = require("../../lib/peg"); let peg = require("../../../lib/peg");
let sinon = require("sinon"); let sinon = require("sinon");
let expect = chai.expect; let expect = chai.expect;

@ -1,7 +1,7 @@
"use strict"; "use strict";
let chai = require("chai"); let chai = require("chai");
let peg = require("../../lib/peg"); let peg = require("../../../lib/peg");
let expect = chai.expect; let expect = chai.expect;

@ -3,7 +3,7 @@
/* global console */ /* global console */
let chai = require("chai"); let chai = require("chai");
let peg = require("../../lib/peg"); let peg = require("../../../lib/peg");
let sinon = require("sinon"); let sinon = require("sinon");
let expect = chai.expect; let expect = chai.expect;

@ -2,7 +2,7 @@
let chai = require("chai"); let chai = require("chai");
let helpers = require("./helpers"); let helpers = require("./helpers");
let pass = require("../../../../lib/compiler/passes/generate-bytecode"); let pass = require("../../../../../lib/compiler/passes/generate-bytecode");
chai.use(helpers); chai.use(helpers);

@ -1,6 +1,6 @@
"use strict"; "use strict";
let parser = require("../../../../lib/parser"); let parser = require("../../../../../lib/parser");
module.exports = function(chai, utils) { module.exports = function(chai, utils) {
let Assertion = chai.Assertion; let Assertion = chai.Assertion;

@ -2,7 +2,7 @@
let chai = require("chai"); let chai = require("chai");
let helpers = require("./helpers"); let helpers = require("./helpers");
let pass = require("../../../../lib/compiler/passes/remove-proxy-rules"); let pass = require("../../../../../lib/compiler/passes/remove-proxy-rules");
chai.use(helpers); chai.use(helpers);

@ -2,7 +2,7 @@
let chai = require("chai"); let chai = require("chai");
let helpers = require("./helpers"); let helpers = require("./helpers");
let pass = require("../../../../lib/compiler/passes/report-duplicate-labels"); let pass = require("../../../../../lib/compiler/passes/report-duplicate-labels");
chai.use(helpers); chai.use(helpers);

@ -2,7 +2,7 @@
let chai = require("chai"); let chai = require("chai");
let helpers = require("./helpers"); let helpers = require("./helpers");
let pass = require("../../../../lib/compiler/passes/report-duplicate-rules"); let pass = require("../../../../../lib/compiler/passes/report-duplicate-rules");
chai.use(helpers); chai.use(helpers);

@ -2,7 +2,7 @@
let chai = require("chai"); let chai = require("chai");
let helpers = require("./helpers"); let helpers = require("./helpers");
let pass = require("../../../../lib/compiler/passes/report-infinite-recursion"); let pass = require("../../../../../lib/compiler/passes/report-infinite-recursion");
chai.use(helpers); chai.use(helpers);

@ -2,7 +2,7 @@
let chai = require("chai"); let chai = require("chai");
let helpers = require("./helpers"); let helpers = require("./helpers");
let pass = require("../../../../lib/compiler/passes/report-infinite-repetition"); let pass = require("../../../../../lib/compiler/passes/report-infinite-repetition");
chai.use(helpers); chai.use(helpers);

@ -2,7 +2,7 @@
let chai = require("chai"); let chai = require("chai");
let helpers = require("./helpers"); let helpers = require("./helpers");
let pass = require("../../../../lib/compiler/passes/report-undefined-rules"); let pass = require("../../../../../lib/compiler/passes/report-undefined-rules");
chai.use(helpers); chai.use(helpers);

@ -1,7 +1,7 @@
"use strict"; "use strict";
let chai = require("chai"); let chai = require("chai");
let parser = require("../../lib/parser"); let parser = require("../../../lib/parser");
let expect = chai.expect; let expect = chai.expect;
Loading…
Cancel
Save