Skip to content

Commit

Permalink
Test: add tests for --saveCompiledTests --saveOnlyFailed
Browse files Browse the repository at this point in the history
  • Loading branch information
rwaldron committed Jun 19, 2018
1 parent df25efa commit dd6426f
Show file tree
Hide file tree
Showing 16 changed files with 154 additions and 6 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
node_modules/
test/**/*.{fail,pass}
2 changes: 2 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules/
test/
7 changes: 3 additions & 4 deletions lib/saveCompiledTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
const fs = require('fs');
const path = require('path');

module.exports = function saveCompiledTest(test, opts) {
let passed = test.result.pass;
let resultString = passed ? 'pass' : 'fail';
let savedTestPath = path.normalize(test.file.replace(/\.js$/, `.js.${opts.hostType}.${resultString}`));
module.exports = function saveCompiledTest(test, options) {
let outcome = test.result.pass ? 'pass' : 'fail';
let savedTestPath = path.normalize(`${test.file}.${options.hostType}.${outcome}`);
fs.writeFileSync(savedTestPath, test.contents);
return savedTestPath;
}
Empty file added test/collateral-save/README.md
Empty file.
Empty file.
1 change: 1 addition & 0 deletions test/collateral-save/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"version": "3.0.0"}
12 changes: 12 additions & 0 deletions test/collateral-save/test/async.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*---
description: Async test
expected:
pass: true
flags: [async]
---*/

var p = new Promise(function(resolve) {
resolve();
});

p.then($DONE, $DONE);
16 changes: 16 additions & 0 deletions test/collateral-save/test/bothStrict.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*---
description: Should test in both modes
negative:
phase: runtime
type: ReferenceError
expected:
pass: true
---*/
var strict;
try { x = 1; strict = false;} catch(e) { strict = true }

if(strict) {
y = 1;
} else {
throw new ReferenceError();
}
8 changes: 8 additions & 0 deletions test/collateral-save/test/error.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/*---
description: Fails by calling $ERROR
expected:
pass: false
message: failure message
---*/

$ERROR('failure message');
6 changes: 6 additions & 0 deletions test/collateral-save/test/negativeMessage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/*---
description: Should report the expected error indicated by the "negative" frontmatter
negative: ExpectedError
expected:
pass: false
---*/
7 changes: 7 additions & 0 deletions test/collateral-save/test/noStrict.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/*---
description: Should not test in strict mode
flags: [noStrict]
expected:
pass: true
---*/
x = 5;
16 changes: 16 additions & 0 deletions test/collateral-save/test/rawNoStrict.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*---
description: Should not test in strict mode
flags: [raw]
expected:
pass: true
---*/
var seemsStrict;
try {
x = 1;
} catch (err) {
seemsStrict = err.constructor === ReferenceError;
}

if (seemsStrict) {
throw new Error('Script erroneously interpreted in strict mode.');
}
17 changes: 17 additions & 0 deletions test/collateral-save/test/rawStrict.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*---
description: Should not test in strict mode (but allow strict mode to be enabled)
flags: [raw]
expected:
pass: true
---*/
'use strict';
var seemsStrict;
try {
x = 1;
} catch (err) {
seemsStrict = err.constructor === ReferenceError;
}

if (!seemsStrict) {
throw new Error('Script erroneously not interpreted in strict mode.');
}
11 changes: 11 additions & 0 deletions test/collateral-save/test/strict.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*---
description: Should not test in sloppy mode
flags: [onlyStrict]
negative:
phase: runtime
type: ReferenceError
expected:
pass: true
---*/
x = 5;
$ERROR('Not in strict mode');
12 changes: 12 additions & 0 deletions test/collateral-save/test/thrownError.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/*---
description: Fails by throwing an error
expected:
pass: false
message: "Expected no error, got Error: failure message"
---*/

function foo() {
throw new Error('failure message');
}

foo();
44 changes: 42 additions & 2 deletions test/test.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
const tap = require('tap');
const cp = require('child_process');
const fs = require('fs');
const path = require('path');
const cp = require('child_process');

const tap = require('tap');
const glob = require('glob');

const parseFile = require('test262-parser').parseFile;

Promise.all([
run(['test/collateral/test/**/*.js']),
Expand Down Expand Up @@ -147,3 +151,39 @@ tap.test('unsupported version with non-matching `acceptVersion`', (test) => {
}, () => {})
.then(test.done);
});

tap.test('saving compiled tests', assert => {
const sourcepattern = path.join(process.cwd(), 'test/collateral-save/test/*.js');
const resultpattern = path.join(process.cwd(), 'test/collateral-save/test/*.{fail,pass}');

const sources = glob.sync(sourcepattern);

tap.test('save all compiled tests with `--saveCompiledTests`', assert => {
run([sourcepattern, '--saveCompiledTests'])
.catch(assert.fail)
.then(() => {
const results = glob.sync(resultpattern);
assert.equal(results.length, sources.length, 'Expecting an equal number of result files to source files.');

return Promise.all(
results.map(result => new Promise(resolve => fs.unlink(result, () => resolve())))
);
}).then(assert.done);
});

tap.test('save failed compiled tests with `--saveCompiledTests --saveOnlyFailed`', assert => {

run([sourcepattern, '--saveCompiledTests', '--saveOnlyFailed'])
.catch(assert.fail)
.then(() => {
const results = glob.sync(resultpattern);
assert.equal(results.length, 3, 'Expecting 3 result files.');

return Promise.all(
results.map(result => new Promise(resolve => fs.unlink(result, () => resolve())))
);
}).catch(error => console.log(error)).then(assert.done);
});

assert.done();
});

0 comments on commit dd6426f

Please sign in to comment.