UNPKG

1.18 kBJavaScriptView Raw
1var _ = require('lodash');
2var fs = require('fs');
3var path = require("path");
4var spawnSync = require('spawn-sync');
5var Locator = require("./locator");
6var mochaSettings = require("./settings");
7var reporter = path.resolve(__dirname, 'test_capture.js');
8
9module.exports = function(settings) {
10 var OUTPUT_PATH = path.resolve(settings.tempDir, 'get_mocha_tests.json');
11 var cmd = './node_modules/.bin/mocha';
12 var args = ['--reporter', reporter];
13
14 if (mochaSettings.mochaOpts) {
15 args.push('--opts', mochaSettings.mochaOpts);
16 }
17
18 args = args.concat(mochaSettings.mochaTestFolders);
19 var env = _.extend({}, process.env, {MOCHA_CAPTURE_PATH: OUTPUT_PATH});
20 var capture = spawnSync(cmd, args, {env: env});
21
22 if (capture.status !== 0 || capture.stderr.toString()) {
23 console.error('Could not capture mocha tests. To debug, run the following command:\nMOCHA_CAPTURE_PATH=%s %s %s', OUTPUT_PATH, cmd, args.join(' '));
24 process.exit(1);
25 }
26
27 var tests = fs.readFileSync(OUTPUT_PATH, 'utf-8');
28 fs.unlinkSync(OUTPUT_PATH);
29
30 tests = JSON.parse(tests).map(function(t) {
31 return new Locator(t.fullTitle, t.file, t.pending, t.title);
32 });
33
34 return tests;
35};