In my npm package, I would like to emulate the pattern Meteor follows: a source file (named client.js
) has a test file (named client.tests.js
) live in a src/
folder. Tests run with the npm test
command.
I'm following the usage docs to the 't'. I do not want to use a find
in my package test command.
I understand that mocha can recursively execute tests:
mocha --recursive
I understand that mocha can execute tests in a specific subfolder using the --recursive
flag:
mocha src --recursive
I also understand that I can specify a glob to filter files by passing *.tests.js
:
mocha *.tests.js
But, I want all three. I want mocha to test only files ending in tests.js
in the src folder, recursively checking subdirectories.
mocha --recursive *.tests.js // See the files? $ > ll ./src/app/ total 168 -rw-r--r-- ... client.js -rw-r--r-- ... client.tests.js // Option A $ > mocha --recursive *.tests.js Warning: Could not find any test files matching pattern: *.tests.js No test files found // Option B $ > mocha *.tests.js --recursive Warning: Could not find any test files matching pattern: *.tests.js No test files found. // Option C $ > mocha --recursive src/app/*.tests.js 3 passing (130ms) 3 failing
So...
*.tests.js
files in the subfolders? The --recursive
flag is meant to operate on directories. If you were to pass a glob that matches directories, then these directories would be examined recursively but if you pass a glob that matches files, like you are doing, then --recursive
is ineffective. I would suggest not using --recursive
with a glob because globs already have the capability to look recursively in subdirectories. You could do:
mocha 'src/app/**/*.tests.js'
This would match all files that match *.tests.js
recursively in src/app
. Note how I'm using single quotes around the pattern. This is to quote the pattern so that it is passed as-is to Mocha's globbing code. Otherwise, your shell might interpret it. Some shells, depending on options, will translate **
into *
and you won't get the results you want.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With