Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to pass compiler options to mocha

I run a mocha command to run my tests

$ ./node_modules/.bin/mocha --compilers coffee:coffee-script -R spec

I wish to pass additional options to the coffee-script compiler (--bare to avoid the outer closure that is introduced when compiling .coffee to .js). Is there a way to do this? I tried

$ ./node_modules/.bin/mocha --compilers coffee:coffee-script --bare -R spec

but that doesn't look right. It also failed saying that --bare is not a valid option for mocha.

  error: unknown option `--bare'
like image 214
gprasant Avatar asked Nov 18 '13 14:11

gprasant


3 Answers

The --compiler option doesn't support this, but you can write a script which activates the compiler with your options, then use mocha's --require option to activate your registration script. For example, create a file at the root of the project called babelhook.js:

// This file is required in mocha.opts
// The only purpose of this file is to ensure
// the babel transpiler is activated prior to any
// test code, and using the same babel options

require("babel-register")({
  experimental: true
});

Then add this to mocha.opts:

--require babelhook

And that's it. Mocha will require babelhook.js before any tests.

like image 200
Russ Egan Avatar answered Oct 08 '22 20:10

Russ Egan


Simply add a .babelrc file to your root. Then any instances of babel (build, runtime, testing, etc) will reference that. https://babeljs.io/docs/usage/babelrc/

You can even add specific config options per-environment.

like image 43
Will Stern Avatar answered Oct 08 '22 20:10

Will Stern


In case anyone stumbles upon this. The 'experimental' option in babel has been deprecated. Your 'babelhook.js' should now read:

// This file is required in mocha.opts
// The only purpose of this file is to ensure
// the babel transpiler is activated prior to any
// test code, and using the same babel options

require("babel/register")({
  stage: 1
});
like image 4
fourcube Avatar answered Oct 08 '22 21:10

fourcube