empower
Power Assert feature enhancer for assert function/object.
DESCRIPTION
empower
is a core module of power-assert family. empower
enhances standard assert
function or any assert-like object to work with power-assert feature added code instrumented by espower.
empower
works with standard assert
function (best fit with Mocha), and also supports assert-like objects/functions provided by various testing frameworks such as QUnit, buster.js, and nodeunit.
Please note that empower
is a beta version product. Pull-requests, issue reports and patches are always welcomed. See power-assert project for more documentation.
CHANGELOG
See CHANGELOG
API
var enhancedAssert = espower(originalAssert, formatter, [options])
return type |
---|
function or object |
empower
function takes function or object(originalAssert
) and formatter
function created by power-assert-formatter then returns PowerAssert feature added function/object base on originalAssert
.
If destructive
option is falsy, originalAssert
will be unchanged. If destructive
option is truthy, originalAssert
will be manipulated directly and returned enhancedAssert
will be the same instance of originalAssert
.
originalAssert
type | default value |
---|
function or object | N/A |
originalAssert
is an instance of standard assert
function or any assert-like object. see SUPPORTED ASSERTION LIBRARIES and ASSERTION LIBRARIES KNOWN TO WORK section. Be careful that originalAssert
will be manipulated directly if destructive
option is truthy.
formatter
type | default value |
---|
function | N/A |
formatter function created by power-assert-formatter.
options
type | default value |
---|
object | (return value of empower.defaultOptions() ) |
Configuration options. If not passed, default options will be used.
options.destructive
type | default value |
---|
boolean | false |
If truthy, modify originalAssert
destructively.
If false
, espower mimics originalAssert as new object/function, so originalAssert
will not be changed. If true
, originalAssert
will be manipulated directly and returned enhancedAssert
will be the same instance of originalAssert
.
options.modifyMessageOnRethrow
type | default value |
---|
boolean | false |
If truthy, modify message
property of AssertionError on rethrow.
options.saveContextOnRethrow
type | default value |
---|
boolean | false |
If truthy, add powerAssertContext
property to AssertionError on rethrow.
modifyMessageOnRethrow
option and saveContextOnRethrow
option makes behavior matrix as below.
modifyMessageOnRethrow | saveContextOnRethrow | resulting behavior |
---|
false (default) | false (default) | Always modify assertion message argument directly |
true | false | Modify message of AssertionError on fail |
false | true | Do not modify message of AssertionError but add powerAssertContext property on fail |
true | true | On fail, modify message of AssertionError and also add powerAssertContext property |
options.patterns
type | default value |
---|
Array of string | objects shown below |
[
'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])'
]
Target patterns for power assert feature instrumentation.
Pattern detection is done by escallmatch. Any arguments enclosed in bracket (for example, [message]
) means optional parameters. Without bracket means mandatory parameters.
var options = empower.defaultOptions();
Returns default options object for empower
function. In other words, returns
{
destructive: false,
modifyMessageOnRethrow: false,
saveContextOnRethrow: false,
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])'
]
}
SUPPORTED ASSERTION LIBRARIES
ASSERTION LIBRARIES KNOWN TO WORK
INSTALL
via npm
Install
$ npm install --save-dev empower
via bower
Install
$ bower install --save-dev empower
Then load (empower
function is exported)
<script type="text/javascript" src="./path/to/bower_components/empower/build/empower.js"></script>
AUTHOR
LICENSE
Licensed under the MIT license.
0.8.0 (2014-08-12)
Features
- empower:
- modularized by browserify
- use
escallmatch
module to describe target patterns (533a21a0) - support assertion methods with three or more arguments (d31dca86)
- if not in patterns, do not empower assertion function itself (1d73a756)
- option
targetMethods
does not required any more (8ffcc49f) - rename
saveContextOnFail
option to saveContextOnRethrow
(1f6133b2) - rename
modifyMessageOnFail
option to modifyMessageOnRethrow
(0c8a88f0)
Breaking Changes
saveContextOnFail
option is renamed to saveContextOnRethrow
There is nothing to change unless you are using saveContextOnFail
option.
If you are using saveContextOnFail
option, change your code from the following:
empower(originalAssert, formatter, {saveContextOnFail: true})
To:
empower(originalAssert, formatter, {saveContextOnRethrow: true})
(1f6133b2)
modifyMessageOnFail
option is renamed to modifyMessageOnRethrow
There is nothing to change unless you are using modifyMessageOnFail
option.
If you are using modifyMessageOnFail
option, change your code from the following:
empower(originalAssert, formatter, {modifyMessageOnFail: true})
To:
empower(originalAssert, formatter, {modifyMessageOnRethrow: true})
(0c8a88f0)
- option
targetMethods
does not required any more
If you already customize enhancement pattern using targetMethods
, you need to migarte. To migrate, change your code from the following:
var yourAssert = require('./your-assert');
var empower = require('empower');
var formatter = require('power-assert-formatter')();
var options = {
targetMethods: {
oneArg: [
'okay'
],
twoArgs: [
'equal',
'customEqual'
]
}
};
var assert = empower(yourAssert, formatter, options);
To:
var yourAssert = require('./your-assert');
var empower = require('empower');
var formatter = require('power-assert-formatter')();
var options = {
patterns: [
'yourAssert(value, [message])',
'yourAssert.okay(value, [message])',
'yourAssert.equal(actual, expected, [message])',
'yourAssert.customEqual(actual, expected, [message])'
]
};
var assert = empower(yourAssert, formatter, options);
(8ffcc49f)