reorganising testing directory

This commit is contained in:
Yotam Mann 2019-11-16 17:45:22 -05:00
parent 3068ab1cc8
commit 472afc7d1d
12 changed files with 21 additions and 251 deletions

View file

@ -15,26 +15,22 @@
"scripts": {
"build": "npm run increment-ts && rm -rf build && npm run ts:build && npm run webpack:build",
"codecov": "codecov",
"collect": "npm run collect:deps",
"collect:deps": "node scripts/collect_deps.js",
"collect:tests": "cross-var node scripts/collect_tests.js --file $npm_config_file --dir $npm_config_dir",
"docs": "node scripts/generate_docs.js",
"docs:json": "cross-var typedoc --options \"./scripts/typedoc.json\" --json \"$npm_config_docs_json\"",
"increment": "node scripts/increment_version.js",
"increment-ts": "node scripts/increment_version_ts.js",
"karma": "cross-var karma start scripts/karma.conf.js --single-run --file $npm_config_file --dir $npm_config_dir",
"karma:browser": "cross-var karma start scripts/karma.conf.js --auto-watch --browsers OnlineChrome --file $npm_config_file --dir $npm_config_dir",
"karma:watch": "cross-var karma start scripts/karma.conf.js --auto-watch --file $npm_config_file --dir $npm_config_dir",
"karma": "cross-var karma start ./test/karma.conf.js --single-run --file $npm_config_file --dir $npm_config_dir",
"karma:browser": "cross-var karma start ./test/karma.conf.js --auto-watch --browsers OnlineChrome --file $npm_config_file --dir $npm_config_dir",
"karma:watch": "cross-var karma start ./test/karma.conf.js --auto-watch --file $npm_config_file --dir $npm_config_dir",
"lint": "eslint --ignore-pattern ./Tone/**/*.test.ts --ext ts ./Tone",
"lint:fix": "eslint --ext ts --fix ./Tone",
"scratch": "webpack -w --env.scratch --mode=development",
"test": "npm run karma",
"test:watch": "npm run collect:tests && npm run karma:watch",
"test:browser": "npm run karma:browser",
"test:examples": "node ./test/scripts/test_examples",
"test:node": "node ./test/scripts/node_test.js",
"test:travis": "npm run build && npm run lint && npm run test",
"test:examples": "node scripts/test_examples",
"test:html": "mocha ./test/html/testHTML.js --timeout 30000",
"test:node": "node ./test/html/node_test.js",
"test:watch": "npm run collect:tests && npm run karma:watch",
"ts:build": "tsc --project ./scripts/tsconfig.build.json",
"watch": "tsc --watch",
"webpack:watch": "webpack -w --env.production --mode=development",

View file

@ -1,23 +0,0 @@
const glob = require("glob");
const { posix } = require("path");
const fs = require("fs");
/**
* COLLECT DEPENDENCIES
*/
function collectDependencies(){
const files = glob.sync(posix.resolve(__dirname, "../Tone/!(shim)/!(Tone).js"));
const modules = files.map(f => f.slice(0, -3));
let reqString = modules.map(r => {
const relativePath = posix.relative(posix.resolve(__dirname, "../Tone"), r);
// const exportName = r.split("/")[r.split("/").length - 1];
// return `export { default as ${exportName} } from "./${relativePath}";`;
// return `import "./${relativePath}";`;
return `require("./${relativePath}");`;
}).join("\n");
// reqString += "\nexport { default } from \"./core/Tone\";\n";
reqString += "\nmodule.exports = require(\"./core/Tone\").default;\n";
fs.writeFileSync(posix.resolve(__dirname, "../Tone/index.js"), reqString);
}
collectDependencies();

View file

@ -1,24 +0,0 @@
const glob = require("glob");
const fs = require("fs");
const { posix } = require("path");
const argv = require("yargs")
.alias("i", "file")
.alias("d", "dir")
.argv;
/**
* COLLECT TESTS
*/
function collectTests(){
var tests = "../test/!(helper|deps|examples|html)/*.js";
if (typeof argv.file === "string"){
tests = `../test/*/${argv.file}.js`;
} else if (typeof argv.dir === "string"){
tests = `../test/${argv.dir}/*.js`;
}
const files = glob.sync(posix.resolve(__dirname, tests));
var reqString = files.map(r => `import "${r}";`).join("\n");
fs.writeFileSync(posix.resolve(__dirname, "../test/test.js"), reqString);
}
collectTests();

View file

@ -1,36 +0,0 @@
const fs = require("fs");
const semver = require("semver");
const { resolve } = require("path");
const child_process = require("child_process");
const devVersion = child_process.execSync("npm show tone@next version").toString();
const masterVersion = child_process.execSync("npm show tone version").toString();
//go with whichever is the latest version
let version = masterVersion;
if (semver.gt(devVersion, masterVersion)){
version = devVersion;
}
//increment the patch
version = semver.inc(version, "patch");
//write it to the package.json
const packageFile = resolve(__dirname, "../package.json");
const packageObj = JSON.parse(fs.readFileSync(packageFile, "utf-8"));
//if the package version if the latest, go with that one
if (semver.gt(packageObj.version, version)){
version = packageObj.version;
}
console.log(`incrementing to version ${version}`);
packageObj.version = version;
//only if it's travis, update the package.json
if (process.env.TRAVIS){
fs.writeFileSync(packageFile, JSON.stringify(packageObj, undefined, " "));
//write a version file
var versionFile = `export default ${JSON.stringify(version)};\n`;
fs.writeFileSync(resolve(__dirname, "../Tone/version.js"), versionFile);
}

View file

@ -1,37 +1,39 @@
/* eslint-disable no-console */
/* eslint-disable @typescript-eslint/no-var-requires */
const fs = require("fs");
const semver = require("semver");
const { resolve } = require("path");
const child_process = require("child_process");
const { execSync } = require("child_process");
const tsVersion = child_process.execSync("npm show tone@typescript version").toString();
const masterVersion = child_process.execSync("npm show tone version").toString();
const tsVersion = execSync("npm show tone@typescript version").toString();
const masterVersion = execSync("npm show tone version").toString();
//go with whichever is the latest version
// go with whichever is the latest version
let version = masterVersion;
if (tsVersion && semver.gt(tsVersion, masterVersion)){
if (tsVersion && semver.gt(tsVersion, masterVersion)) {
version = tsVersion;
}
//increment the patch
// increment the patch
version = semver.inc(version, "patch");
//write it to the package.json
// write it to the package.json
const packageFile = resolve(__dirname, "../package.json");
const packageObj = JSON.parse(fs.readFileSync(packageFile, "utf-8"));
//if the package version if the latest, go with that one
if (semver.gt(packageObj.version, version)){
// if the package version if the latest, go with that one
if (semver.gt(packageObj.version, version)) {
version = packageObj.version;
}
console.log(`incrementing to version ${version}`);
packageObj.version = version;
//only if it's travis, update the package.json
if (process.env.TRAVIS){
// only if it's travis, update the package.json
if (process.env.TRAVIS) {
fs.writeFileSync(packageFile, JSON.stringify(packageObj, undefined, " "));
//write a version file
var versionFile = `export const version: string = ${JSON.stringify(version)};\n`;
// write a version file
let versionFile = `export const version: string = ${JSON.stringify(version)};\n`;
fs.writeFileSync(resolve(__dirname, "../Tone/version.ts"), versionFile);
}

View file

@ -1,46 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>TWO CONTEXTS RUNNING AT ONCE</title>
<script src="../../build/Tone.js"></script>
<script>
function assert(statement, error){
if (!statement){
throw new Error(error);
}
}
if (Tone && Tone.context){
Tone.context.thisisthesamecontext = true;
assert(window.TONE_AUDIO_CONTEXT.thisisthesamecontext, "Did not assign global TONE_AUDIO_CONTEXT");
} else {
throw new Error("NO TONE!");
}
var instanceOne = Tone;
</script>
<script src="../../build/Tone.js"></script>
</head>
<body>
<script>
if (Tone && Tone.context){
assert(window.TONE_AUDIO_CONTEXT === Tone.context, "Did not assign global TONE_AUDIO_CONTEXT 2");
assert(Tone.context.thisisthesamecontext, "Not the same AudioContext");
} else {
throw new Error("NO TONE 2!");
}
var instanceTwo = Tone;
//additional checks
assert(instanceOne !== instanceTwo, "Did not create two instances");
assert(instanceOne.context === instanceTwo.context, "Instances don't share the same Tone.Context");
assert(instanceOne.context.rawContext === instanceTwo.context.rawContext, "Instances don't share the same AudioContext");
</script>
</body>
</html>

View file

@ -1,26 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>SAME TRANSPORT</title>
<script src="../../build/Tone.js"></script>
</head>
<body>
<script>
function assert(statement, error){
if (!statement){
throw new Error(error);
}
}
if (Tone){
var Transport = Tone.Transport;
Tone.Offline(function(){}, 0.1).then(function(){});
assert(Tone.Transport === Transport, "Different Transports!");
} else {
throw new Error("NO TONE!");
}
</script>
</body>
</html>

View file

@ -1,57 +0,0 @@
const puppeteer = require("puppeteer");
const { resolve } = require("path");
const fs = require("fs");
const { spawn } = require("child_process");
function runPage(name){
return new Promise(async (done, error) => {
const browser = await puppeteer.launch({ args : ["--no-sandbox"] });
const page = await browser.newPage();
page.on("pageerror", e => error(e));
await page.goto(`http://localhost:9999/examples/${name}`, { waitFor : "networkidle0" });
await browser.close();
done();
});
}
describe("TEST", () => {
let serverProcess = null;
before((done) => {
const serverCommand = resolve(__dirname, "../../node_modules/.bin/http-server");
serverProcess = spawn(serverCommand, ["-p", "9999"]);
//give it a second for the server to start
setTimeout(() => done(), 1000);
});
after(() => {
serverProcess.kill();
});
context("HTML Tests", () => {
it("can run multiple contexts at once", () => {
return runPage("../test/html/multiple_instances.html");
});
it("has the same transport after offline test", () => {
return runPage("../test/html/same_transport.html");
});
});
context("Examples", () => {
const exampleDir = resolve(__dirname, "../../examples/");
const files = fs.readdirSync(exampleDir).filter(f => f.endsWith(".html"));
files.forEach(f => {
it(`can run example ${f}`, () => {
return runPage(f);
});
});
});
});

View file

@ -1,16 +0,0 @@
<html>
<head>
<meta charset="utf-8">
<title>TESTS</title>
<script src="../node_modules/mocha/mocha.js"></script>
<link rel="stylesheet" href="../node_modules/mocha/mocha.css" />
</head>
<body>
<div id="mocha"></div>
<script type="text/javascript">
setTimeout(() => {
mocha.run()
}, 100)
</script>
</body>
</html>