Skip to content

Commit

Permalink
upgrade node.js test run logic
Browse files Browse the repository at this point in the history
  • Loading branch information
izelnakri committed Mar 20, 2021
1 parent 634d649 commit ab4180d
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 13 deletions.
10 changes: 8 additions & 2 deletions lib/commands/run.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import parseFsInputs from '../utils/parse-fs-inputs.js';
import TAPDisplayFinalResult from '../tap/display-final-result.js';

export default async function(config) {
const { browser, fileOrFolderInputs, projectRoot } = config;
const { browser, fileOrFolderInputs, projectRoot, timeout } = config;

if (browser) {
let COUNTER = { testCount: 0, failCount: 0, skipCount: 0, passCount: 0, errorCount: 0 };
Expand Down Expand Up @@ -57,12 +57,18 @@ export default async function(config) {
process.exit(COUNTER.failCount > 0 ? 1 : 0);
}
} else {
global.testTimeout = timeout;
const QUnit = (await import('../setup/node-js-environment.js')).default;
const fsTree = await parseFsInputs(fileOrFolderInputs, {}, async(targetPath, fsEntry) => {
await import(targetPath);
// try {
await import(targetPath);
// } catch(error) {
// }
fsEntry.executed = true;
}, config);
console.log('TAP version 13');

QUnit.start();

}
}
1 change: 1 addition & 0 deletions lib/setup/browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export default async function(options = {
});
window.QUnit.on('testEnd', (details) => { // NOTE: https://github.com/qunitjs/qunit/blob/master/src/html-reporter/diff.js
window.testTimeout = 0;
window.socket.send(JSON.stringify({ event: 'testEnd', details: details }));
});
Expand Down
11 changes: 9 additions & 2 deletions lib/setup/node-js-environment.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ let COUNTER = { testCount: 0, failCount: 0, skipCount: 0, passCount: 0 };

global.window = global;
window.QUnit = QUnit;
window.QUnit.config.autostart = false;
window.QUnit.config.testTimeout = global.testTimeout;

window.QUNIX_TEST_TIME_COUNTER = (function() { // NOTE: might be needed for failFast option timeTaken calculation
const startTime = new Date();

Expand All @@ -17,13 +20,17 @@ window.QUNIX_TEST_TIME_COUNTER = (function() { // NOTE: might be needed for fail
};
})();


window.QUnit.on('testEnd', (details) => TAPDisplayTestResult(COUNTER, details));
window.QUnit.on('testEnd', (details) => {
TAPDisplayTestResult(COUNTER, details)
});
window.QUnit.done((details) => {
window.QUNIT_RESULT = Object.assign(details, {
timeTaken: window.QUNIX_TEST_TIME_COUNTER.stop()
});
TAPDisplayFinalResult(COUNTER, details.timeTaken);
process.exit(COUNTER.failCount > 0 ? 1 : 0);
});

process.on('uncaughtException', (err) => console.error(err));

export default window.QUnit;
6 changes: 3 additions & 3 deletions test/helpers/assert-stdout.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export function assertFailingTestCase(t, stdout, options={ moduleName: '{{module
anotherObject: {`));
}

t.true(new RegExp(`not ok 2 {{moduleName}} | async test finishes # (\d+ ms)␊
t.true(new RegExp(`not ok 2 ${moduleName} | async test finishes # (\d+ ms)␊
---␊
name: 'Assertion #1'␊
actual: null␊
Expand All @@ -61,7 +61,7 @@ export function assertFailingTestCase(t, stdout, options={ moduleName: '{{module
stack: ' at Object.<anonymous> (\S+:\d+:\d+)'␊
at: '\S+:\d+:\d+'␊
...`).test(stdout));
t.true(new RegExp(`not ok 3 {{moduleName}} | runtime error output # (\d+ ms)
t.true(new RegExp(`not ok 3 ${moduleName} | runtime error output # (\d+ ms)
---
name: 'Assertion #1'
actual: null
Expand All @@ -84,7 +84,7 @@ export function assertFailingTestCase(t, stdout, options={ moduleName: '{{module
at: '\S+:\d+:\d+'
...
`).test(stdout));
t.true(new RegExp(`not ok 4 {{moduleName}} | deepEqual true works # (\d+ ms)␊
t.true(new RegExp(`not ok 4 ${moduleName} | deepEqual true works # (\d+ ms)␊
---␊
name: 'Assertion #1'␊
actual:␊
Expand Down
4 changes: 2 additions & 2 deletions test/helpers/failing-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ module('{{moduleName}}', function(hooks) {
test('async test finishes', async function (assert) {
assert.expect(4);

const wait = new Promise((reject, resolve) => {
const wait = () => new Promise((reject, resolve) => {
window.setTimeout(() => {
console.log('resolving async test');
console.log({
Expand All @@ -26,7 +26,7 @@ module('{{moduleName}}', function(hooks) {
resolve(true);
}, 50);
});
const result = wait();
const result = await wait();

assert.ok(true);
assert.equal(true, result);
Expand Down
8 changes: 4 additions & 4 deletions test/helpers/fs-writers.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ export async function writeTestFolder(options={ addFailingTests: false, mixedExt
writeTestFile(folderName, 'first-module-pass', 'js', passingsTestTemplate),
writeTestFile(folderName, 'second-module-pass', extension, passingsTestTemplate),
addFailingTests ? writeTestFile(folderName, 'first-module-fail', 'js', failingTestTemplate) : null,
addFailingTests ? writeTestFile(folderName, 'second-module-fail', mixedExtensions, failingTestTemplate) : null,
addFailingTests ? writeTestFile(folderName, 'third-module-fail', mixedExtensions, failingTestTemplate) : null,
addFailingTests ? writeTestFile(folderName, 'second-module-fail', extension, failingTestTemplate) : null,
addFailingTests ? writeTestFile(folderName, 'third-module-fail', extension, failingTestTemplate) : null,
]);

return folderName;
}

export async function writeTestFile(folderName, testFileName, extension, templateBuffer) {
await fs.writeFile(
export function writeTestFile(folderName, testFileName, extension, templateBuffer) {
return fs.writeFile(
`${process.cwd()}/tmp/${folderName}/${testFileName}.${extension}`,
templateBuffer.toString().replace('{{moduleName}}', `${folderName} | ${testFileName}`)
);
Expand Down

0 comments on commit ab4180d

Please sign in to comment.