Browse Source

Merge the test suites into the website

master
Futago-za Ryuu 3 years ago
parent
commit
5e7134936b
  1. 1
      package.json
  2. 32
      server.js
  3. 9
      test/README.md
  4. 2
      test/benchmark/index.js
  5. 40
      test/server/benchmark.html
  6. 24
      test/server/index.html
  7. 31
      test/server/run
  8. 19
      test/server/spec.html
  9. 5
      test/server/vendor/jquery/jquery.js
  10. 22
      test/server/vendor/mocha/LICENSE
  11. 15559
      test/server/vendor/mocha/mocha.js
  12. 0
      website/css/benchmark.css
  13. 13
      website/css/content.css
  14. 11
      website/css/layout-default.css
  15. 3
      website/css/spec.css
  16. 0
      website/vendor/jquery.scrollto/LICENSE
  17. 0
      website/vendor/jquery.scrollto/jquery.scrollTo.js
  18. 0
      website/vendor/jquery/LICENSE.txt
  19. 10
      website/vendor/jquery/jquery.js
  20. 30
      website/views/benchmark.ejs
  21. 3
      website/views/development.ejs
  22. 16
      website/views/spec.ejs

1
package.json

@ -35,7 +35,6 @@
"clean": "gulp clean",
"start": "node server.js",
"test:impact": "node test/impact master",
"test:server": "node test/server/run",
"test": "nyc gulp",
"coverage": "nyc report --reporter=text-lcov | coveralls"
},

32
server.js

@ -1,20 +1,27 @@
"use strict";
const babelify = require( "babelify" );
const bodyParser = require( "body-parser" );
const browserify = require( "browserify" );
const express = require( "express" );
const layout = require( "express-layout" );
const glob = require( "glob" ).sync;
const logger = require( "morgan" );
const { join } = require( "path" );
const path = ( ...parts ) => join( __dirname, ...parts );
/* Setup */
const app = express();
app.set( "views", join( __dirname, "website", "views" ) );
app.set( "views", path( "website", "views" ) );
app.set( "view engine", "ejs" );
app.use( logger( "dev" ) );
app.use( express.static( join( __dirname, "website" ) ) );
app.use( express.static( path( "website" ) ) );
app.use( "/benchmark", express.static( path( "test", "benchmark" ) ) );
app.use( "/examples", express.static( path( "examples" ) ) );
app.use( layout() );
app.use( ( req, res, next ) => {
@ -72,6 +79,27 @@ app.get( "/download", ( req, res ) => {
} );
app.get( "/spec", ( req, res ) => {
res.render( "spec", { title: "Spec Suite" } );
} );
app.get( "/benchmark", ( req, res ) => {
res.render( "benchmark", { title: "Benchmark Suite" } );
} );
app.get( "/:dir/bundle.js", ( req, res ) => {
browserify( glob( `${ __dirname }/test/${ req.params.dir }/**/*.js` ) )
.transform( babelify )
.bundle()
.pipe( res );
} );
/* Main */
app.listen( 80, () => {

9
test/README.md

@ -68,10 +68,7 @@ The commands below need to be executed via the console from the PEG.js root dire
## Running in the Browser
1. Serve the test suites using a web server:
* [Benchmark Suite](https://pegjs.org/benchmark)
* [Spec Suite](https://pegjs.org/spec)
```console
$ node test/server/run
```
2. Point your browser to the [test suite](http://localhost:8000/)
You also have the option of running the website locally by running `node server.js` or `npm start` from the root of this repository. After that just go to the development page and click the link `Benchmark Suite` or `Spec Suite`.

2
test/benchmark/index.js

@ -76,7 +76,7 @@ $( "#run" ).click( () => {
return $.ajax( {
type: "GET",
url: "benchmark/" + file,
url: file,
dataType: "text",
async: false
} ).responseText;

40
test/server/benchmark.html

@ -1,40 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PEG.js Benchmark Suite</title>
<link rel="stylesheet" href="benchmark.css">
</head>
<body>
<h1>PEG.js Benchmark Suite</h1>
<div id="options">
<label for="run-count">Run each test</label>
<input type="text" id="run-count" value="10"> times
<input type="checkbox" id="cache">
<label for="cache">Use results cache</label>
<label for="optimize">Optimize:</label>
<select id="optimize">
<option value="speed">Speed</option>
<option value="size">Size</option>
</select>
<input type="button" id="run" value="Run">
</div>
<table id="results-table">
<tr class="columns">
<th>Test</th>
<th>Input Size</th>
<th>Average Parse Time</th>
<th>Average Parse Speed</th>
</tr>
<tr>
<td class="no-results" colspan="4">No results available yet.</td>
</tr>
</table>
<script src="vendor/jquery/jquery.js"></script>
<script src="vendor/jquery.scrollto/jquery.scrollTo.js"></script>
<script src="benchmark/bundle.js"></script>
</body>
</html>

24
test/server/index.html

@ -1,24 +0,0 @@
<!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>

31
test/server/run

@ -1,31 +0,0 @@
#!/usr/bin/env node
"use strict";
const babelify = require( "babelify" );
const browserify = require( "browserify" );
const express = require( "express" );
const glob = require( "glob" );
const logger = require( "morgan" );
const 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 )
.bundle()
.pipe( res );
} );
app.listen( 8000, () => {
console.log( "Test server running at: http://localhost:8000/" );
} );

19
test/server/spec.html

@ -1,19 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PEG.js Spec Suite</title>
<link rel="stylesheet" href="vendor/mocha/mocha.css">
</head>
<body>
<div id="mocha"></div>
<script src="vendor/mocha/mocha.js"></script>
<script>
mocha.setup('bdd');
</script>
<script src="spec/bundle.js"></script>
<script>
mocha.run();
</script>
</body>
</html>

5
test/server/vendor/jquery/jquery.js
File diff suppressed because it is too large
View File

22
test/server/vendor/mocha/LICENSE

@ -1,22 +0,0 @@
(The MIT License)
Copyright (c) 2016 JS Foundation and contributors, https://js.foundation
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

15559
test/server/vendor/mocha/mocha.js
File diff suppressed because it is too large
View File

0
test/server/benchmark.css → website/css/benchmark.css

13
website/css/content.css

@ -14,7 +14,16 @@
background-color: #f0f0f0;
}
#content table { border-spacing: 0; }
#content a, #content a:visited { color: #3d586c; }
#content a {
text-decoration: none;
color: #1A0BF1;
}
#content a:hover {
text-decoration: underline;
color: #9D0BF1;
}
#content .center { text-align: center; }
@ -148,4 +157,4 @@
#output {
max-width: 50vw;
}
}

11
website/css/layout-default.css

@ -40,6 +40,13 @@
#footer {
margin-bottom: 2em;
text-align: center; font-size: 75%;
color: silver;
color: #3d586c;
}
#footer a {
text-decoration: none;
color: #1A0BF1;
}
#footer a:hover {
text-decoration: underline;
color: #9D0BF1;
}
#footer a, #footer a:visited { color: silver; }

3
test/server/vendor/mocha/mocha.css → website/css/spec.css

@ -259,9 +259,6 @@ body {
}
#mocha-stats {
position: fixed;
top: 15px;
right: 10px;
font-size: 12px;
margin: 0;
color: #888;

0
test/server/vendor/jquery.scrollto/LICENSE → website/vendor/jquery.scrollto/LICENSE

0
test/server/vendor/jquery.scrollto/jquery.scrollTo.js → website/vendor/jquery.scrollto/jquery.scrollTo.js

0
test/server/vendor/jquery/LICENSE.txt → website/vendor/jquery/LICENSE.txt

10
website/vendor/jquery/jquery.js
File diff suppressed because it is too large
View File

30
website/views/benchmark.ejs

@ -0,0 +1,30 @@
<link rel="stylesheet" href="/css/benchmark.css">
<div id="options">
<label for="run-count">Run each test</label>
<input type="text" id="run-count" value="10"> times
<input type="checkbox" id="cache">
<label for="cache">Use results cache</label>
<label for="optimize">Optimize:</label>
<select id="optimize">
<option value="speed">Speed</option>
<option value="size">Size</option>
</select>
<input type="button" id="run" value="Run">
</div>
<table id="results-table">
<tr class="columns">
<th>Test</th>
<th>Input Size</th>
<th>Average Parse Time</th>
<th>Average Parse Speed</th>
</tr>
<tr>
<td class="no-results" colspan="4">No results available yet.</td>
</tr>
</table>
<script src="/vendor/jquery/jquery.js"></script>
<script src="/vendor/jquery.scrollto/jquery.scrollTo.js"></script>
<script src="/benchmark/bundle.js"></script>

3
website/views/development.ejs

@ -1,9 +1,10 @@
<h1>Development</h1>
<ul>
<li><a href="https://pegjs.org/">Project website</a></li>
<li><a href="https://github.com/pegjs/pegjs/wiki">Wiki</a></li>
<li><a href="https://github.com/pegjs/pegjs">Source code</a></li>
<li><a href="/benchmark">Benchmark Suite</a></li>
<li><a href="/spec">Spec Suite</a></li>
<li><a href="https://github.com/pegjs/pegjs/issues">Issue tracker</a></li>
<li><a href="https://groups.google.com/group/pegjs">Google Group</a></li>
<li><a href="https://twitter.com/peg_js">Twitter</a></li>

16
website/views/spec.ejs

@ -0,0 +1,16 @@
<div id="mocha"></div>
<link href="/css/spec.css" rel="stylesheet" />
<script src="https://unpkg.com/mocha@5.2.0/mocha.js"></script>
<script>
mocha.setup( {
ui: "bdd"
} );
</script>
<script src="/spec/bundle.js"></script>
<script>
mocha.run();
</script>
Loading…
Cancel
Save