power-assert instrumentor for CoffeeScript
espower-coffee
is a Node.js module loader that instruments power-assert feature into target CoffeeScript sources on the fly.
Pull-requests, issue reports and patches are always welcomed. See power-assert project for more documentation.
Given test/demo_test.coffee
assert = require 'assert'
class Person
constructor: (name, age) ->
@name = name
@age = age
describe "various types", ->
beforeEach ->
@types = [
"string"
98.6
true
false
null
`undefined`
[
"nested"
"array"
]
{
object: true
}
NaN
Infinity
/^not/
new Person("alice", 3)
]
it "demo", ->
index = @types.length - 1
bob = new Person("bob", 5)
assert @types[index].name is bob.name
Run mocha with --require 'espower-coffee/guess'
$ mocha --require 'espower-coffee/guess' test/demo_test.coffee
․
0 passing (15ms)
1 failing
1) various types demo:
AssertionError: # /path/to/test/demo_test.coffee:33
assert(this.types[index].name === bob.name)
| || | | | |
| || | | | "bob"
| || | | Person{name:"bob",age:5}
| || | false
| |11 "alice"
| Person{name:"alice",age:3}
["string",98.6,true,false,null,undefined,#Array#,#Object#,NaN,Infinity,/^not/,#Person#]
--- [string] bob.name
+++ [string] this.types[index].name
@@ -1,3 +1,5 @@
-bob
+alice
at Decorator.concreteAssert (/path/to/node_modules/power-assert/node_modules/empower/lib/decorator.js:63:21)
at /path/to/node_modules/power-assert/node_modules/empower/lib/decorate.js:44:26
at powerAssert (/path/to/node_modules/power-assert/node_modules/empower/index.js:57:32)
at Context.<anonymous> (/path/to/test/demo_test.coffee:1:1)
$
See the power-assert output appears!
$ npm install --save-dev espower-coffee power-assert
If your tests are located on 'test/**/*.coffee'
, just run mocha with --require 'espower-coffee/guess'
$ mocha --require 'espower-coffee/guess' test/**/*.coffee
You can set test directory in your package.json
{
"name": "your-module",
"description": "Your module",
"version": "0.0.1",
"directories": {
"test": "spec/"
},
...
}
Then, run mocha with --require 'espower-coffee/guess'
$ mocha --require 'espower-coffee/guess' spec/**/*.coffee
Note: 'espower-coffee/guess'
is inspired by intelli-espower-loader
If you want to configure more explicitly, put espower-coffee-loader.js
somewhere in your project.
require('espower-coffee')({
// directory where match starts with
cwd: process.cwd(),
// glob pattern using minimatch module
pattern: '{src,test}/**/*.coffee',
// options for espower module
espowerOptions: {
patterns: [
'assert(value, [message])',
'assert.ok(value, [message])',
'assert.equal(actual, expected, [message])',
'assert.notEqual(actual, expected, [message])',
'assert.strictEqual(actual, expected, [message])',
'assert.notStrictEqual(actual, expected, [message])',
'assert.deepEqual(actual, expected, [message])',
'assert.notDeepEqual(actual, expected, [message])',
'assert.deepStrictEqual(actual, expected, [message])',
'assert.notDeepStrictEqual(actual, expected, [message])'
]
}
});
Then, run mocha with --require
option
$ mocha --require ./path/to/espower-coffee-loader spec/unit/some_test.coffee
We support Node under maintenance. In other words, we stop supporting old Node version when their maintenance ends.
This means that any other environment is not supported.
NOTE: If espower-coffee works in any of the unsupported environments, it is purely coincidental and has no bearing on future compatibility. Use at your own risk.
See CHANGELOG
Licensed under the MIT license.