Skip to content

Commit d5b25f2

Browse files
committed
Merge pull request #296 from jokeyrhyme/pass-through-requires
Node.js-style --require CLI argument
2 parents 8aac20d + 6081389 commit d5b25f2

8 files changed

+34
-3
lines changed

api.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ function Api(files, options) {
1818
EventEmitter.call(this);
1919

2020
this.options = options || {};
21+
2122
this.rejectionCount = 0;
2223
this.exceptionCount = 0;
2324
this.passCount = 0;

cli.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ if (debug.enabled) {
1717
require('time-require');
1818
}
1919

20+
var arrify = require('arrify');
2021
var meow = require('meow');
2122
var updateNotifier = require('update-notifier');
2223
var chalk = require('chalk');
@@ -35,6 +36,7 @@ var cli = meow([
3536
' --init Add AVA to your project',
3637
' --fail-fast Stop after first test failure',
3738
' --serial Run tests serially',
39+
' --require Module to preload (Can be repeated)',
3840
'',
3941
'Examples',
4042
' ava',
@@ -46,7 +48,10 @@ var cli = meow([
4648
'Default patterns when no arguments:',
4749
'test.js test-*.js test/*.js'
4850
], {
49-
string: ['_'],
51+
string: [
52+
'_',
53+
'require'
54+
],
5055
boolean: [
5156
'fail-fast',
5257
'serial'
@@ -64,7 +69,8 @@ log.write();
6469

6570
var api = new Api(cli.input, {
6671
failFast: cli.flags.failFast,
67-
serial: cli.flags.serial
72+
serial: cli.flags.serial,
73+
require: arrify(cli.flags.require)
6874
});
6975

7076
api.on('test', function (test) {

lib/babel.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ if (debug.enabled) {
1616
// Bind globals first, before anything has a chance to interfere.
1717
var globals = require('./globals');
1818

19+
var resolveCwd = require('resolve-cwd');
20+
(opts.require || []).forEach(function (moduleId) {
21+
require(resolveCwd(moduleId));
22+
});
23+
1924
var sourceMapCache = Object.create(null);
2025

2126
var sourceMapSupport = require('source-map-support');
@@ -33,7 +38,6 @@ sourceMapSupport.install({
3338
var createEspowerPlugin = require('babel-plugin-espower/create');
3439
var requireFromString = require('require-from-string');
3540
var loudRejection = require('loud-rejection/api')(process);
36-
var resolveCwd = require('resolve-cwd');
3741
var hasGenerator = require('has-generator');
3842
var serializeError = require('serialize-error');
3943
var send = require('./send');

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
],
7979
"dependencies": {
8080
"arr-flatten": "^1.0.1",
81+
"arrify": "^1.0.0",
8182
"ava-init": "^0.1.0",
8283
"babel-core": "^5.8.23",
8384
"babel-plugin-espower": "^1.1.0",

readme.md

+1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ $ ava --help
102102
--init Add AVA to your project
103103
--fail-fast Stop after first test failure
104104
--serial Run tests serially
105+
--require Module to preload (Can be repeated)
105106
106107
Examples
107108
ava

test/api.js

+14
Original file line numberDiff line numberDiff line change
@@ -260,3 +260,17 @@ test('test file in node_modules is ignored', function (t) {
260260
t.true(/Couldn't find any files to test/.test(err.message));
261261
});
262262
});
263+
264+
test('Node.js-style --require CLI argument', function (t) {
265+
t.plan(1);
266+
267+
var api = new Api(
268+
[path.join(__dirname, 'fixture/validate-installed-global.js')],
269+
{require: [path.join(__dirname, 'fixture', 'install-global.js')]}
270+
);
271+
272+
api.run()
273+
.then(function () {
274+
t.is(api.passCount, 1);
275+
});
276+
});

test/fixture/install-global.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
global.foo = 'bar';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import test from '../../';
2+
3+
test(t => t.is(global.foo, 'bar'));

0 commit comments

Comments
 (0)