From b6be51e985732cfe2c0684987a62b762610cc595 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 16 Feb 2017 14:49:59 +0100 Subject: [PATCH] add `run` option --- test/electron/index.js | 10 +++++----- test/electron/renderer.html | 3 +-- test/electron/renderer.js | 31 +++++++++++++++++++++++++------ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/test/electron/index.js b/test/electron/index.js index 33adf0ac7b1..544ea55957a 100644 --- a/test/electron/index.js +++ b/test/electron/index.js @@ -9,9 +9,11 @@ const { join } = require('path'); const optimist = require('optimist') .describe('grep', 'only run tests matching ').string('grep').alias('grep', 'g').string('g') + .describe('run', 'only run tests from ').string('run') .describe('debug', 'open dev tools, keep window open').string('debug'); -const { debug, grep } = optimist.argv; +const argv = optimist.argv; +const { debug, grep, run } = argv; app.setPath('userData', join(tmpdir(), `vscode-tests-${Date.now()}`)); @@ -28,13 +30,11 @@ app.on('ready', () => { if (debug) { win.webContents.openDevTools('right'); } + win.webContents.send('run', { grep, run }); }); - const query = grep - ? `?grep=${grep}` - : ''; + win.loadURL(`file://${__dirname}/renderer.html`); - win.loadURL(`file://${__dirname}/renderer.html${query}`); const _failures = []; ipcMain.on('fail', (e, test) => { diff --git a/test/electron/renderer.html b/test/electron/renderer.html index c51d58f1bdc..b0a2016994c 100644 --- a/test/electron/renderer.html +++ b/test/electron/renderer.html @@ -11,8 +11,7 @@ diff --git a/test/electron/renderer.js b/test/electron/renderer.js index cc34030d520..22f4ce318e5 100644 --- a/test/electron/renderer.js +++ b/test/electron/renderer.js @@ -19,7 +19,18 @@ loader.require.config({ nodeMain: __filename }); -function loadTestModules() { +function loadTestModules(opts) { + + if (opts.run) { + const files = Array.isArray(opts.run) ? opts.run : [opts.run]; + const modules = files.map(file => { + return path.relative(cwd, file).replace(/\.js$/, ''); + }); + return new Promise((resolve, reject) => { + loader.require(modules, resolve, reject); + }); + } + return new Promise((resolve, reject) => { glob('**/test/**/*.test.js', { cwd }, (err, files) => { if (err) { @@ -36,7 +47,7 @@ function loadTestModules() { }); } -function loadTests() { +function loadTests(opts) { const _unexpectedErrors = []; const _loaderErrors = []; @@ -60,7 +71,7 @@ function loadTests() { }); }); - return loadTestModules().then(() => { + return loadTestModules(opts).then(() => { suite('Unexpected Errors & Loader Errors', function () { test('should not have unexpected errors', function () { const errors = _unexpectedErrors.concat(_loaderErrors); @@ -76,9 +87,13 @@ function loadTests() { }); } -module.exports.runTests = function () { +function runTests(opts) { - return loadTests().then(() => { + return loadTests(opts).then(() => { + + if (opts.grep) { + mocha.grep(opts.grep); + } const runner = mocha.run(() => { ipcRenderer.send('done'); @@ -95,4 +110,8 @@ module.exports.runTests = function () { ipcRenderer.send('pass'); }); }); -}; +} + +ipcRenderer.on('run', (e, opts) => { + runTests(opts).catch(err => console.error(err)); +});