Skip to content

Commit c96622d

Browse files
uiursindresorhus
authored andcommitted
Close #46 PR: Less API using power-assert.
1 parent 85bfb22 commit c96622d

File tree

7 files changed

+73
-1
lines changed

7 files changed

+73
-1
lines changed

lib/assert.js

+2
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,5 @@ x.regexTest = function (regex, contents, msg) {
120120
x.ifError = x.error = function (err, msg) {
121121
test(!err, create(err, 'Error', '!==', msg, x.ifError));
122122
};
123+
124+
require('./enhance-assert')(x);

lib/babel.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
'use strict';
22

33
var resolveFrom = require('resolve-from');
4+
var createEspowerPlugin = require('babel-plugin-espower/create');
45

56
var hasGenerators = parseInt(process.version.slice(1), 10) > 0;
67

78
var options = {
89
only: /(test|test\-.+|test\/.+)\.js$/,
910
blacklist: hasGenerators ? ['regenerator'] : [],
10-
optional: hasGenerators ? ['asyncToGenerator'] : []
11+
optional: hasGenerators ? ['asyncToGenerator'] : [],
12+
plugins: [
13+
createEspowerPlugin(require('babel-core'), {
14+
patterns: require('./enhance-assert').PATTERNS
15+
})
16+
]
1117
};
1218

1319
try {

lib/enhance-assert.js

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
module.exports = enhanceAssert;
2+
3+
module.exports.PATTERNS = [
4+
't.ok(value, [message])',
5+
't.notOk(value, [message])',
6+
't.true(value, [message])',
7+
't.false(value, [message])',
8+
't.is(value, expected, [message])',
9+
't.not(value, expected, [message])',
10+
't.same(value, expected, [message])',
11+
't.notSame(value, expected, [message])',
12+
't.regexTest(regex, contents, [message])'
13+
];
14+
15+
function enhanceAssert(assert) {
16+
var empower = require('empower');
17+
var powerAssertFormatter = require('power-assert-formatter');
18+
var powerAssertRenderers = require('power-assert-renderers');
19+
20+
empower(assert,
21+
powerAssertFormatter({
22+
renderers: [
23+
powerAssertRenderers.AssertionRenderer,
24+
powerAssertRenderers.SuccinctRenderer
25+
]
26+
}),
27+
{
28+
destructive: true,
29+
modifyMessageOnRethrow: true,
30+
saveContextOnRethrow: false,
31+
patterns: module.exports.PATTERNS
32+
}
33+
);
34+
}

lib/test.js

+5
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ Object.keys(assert).forEach(function (el) {
7070
};
7171
});
7272

73+
// Workaround for power-assert
74+
// `t` must be capturable for decorated assert output
75+
Test.prototype._capt = assert._capt;
76+
Test.prototype._expr = assert._expr;
77+
7378
Test.prototype.plan = function (count) {
7479
if (typeof count !== 'number') {
7580
throw new TypeError('Expected a number');

package.json

+4
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,21 @@
6262
"arr-flatten": "^1.0.1",
6363
"ava-init": "^0.1.0",
6464
"babel-core": "^5.8.23",
65+
"babel-plugin-espower": "^1.0.0",
6566
"bluebird": "^2.9.34",
6667
"chalk": "^1.0.0",
6768
"co": "^4.6.0",
6869
"core-assert": "^0.1.0",
70+
"empower": "^1.0.2",
6971
"figures": "^1.4.0",
7072
"fn-name": "^2.0.0",
7173
"globby": "^3.0.1",
7274
"is-generator": "^1.0.2",
7375
"meow": "^3.3.0",
7476
"object-assign": "^4.0.1",
7577
"plur": "^2.0.0",
78+
"power-assert-formatter": "^1.1.0",
79+
"power-assert-renderers": "^0.1.0",
7680
"pretty-ms": "^2.0.0",
7781
"resolve-from": "^1.0.0",
7882
"set-immediate-shim": "^1.0.1",

test/fixture/power-assert.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import test from '../../';
2+
3+
test(t => {
4+
const a = 'foo';
5+
6+
t.ok(a === 'bar');
7+
t.end();
8+
});

test/test.js

+13
Original file line numberDiff line numberDiff line change
@@ -837,3 +837,16 @@ test('fail-fast mode', function (t) {
837837
t.end();
838838
});
839839
});
840+
841+
test('power-assert support', function (t) {
842+
t.plan(2);
843+
844+
execCli('fixture/power-assert.js', function (err, stdout, stderr) {
845+
t.ok(err);
846+
847+
// t.ok(a === 'bar')
848+
// |
849+
// "foo"
850+
t.true((/t\.ok\(a === 'bar'\)\s*\n\s+\|\s*\n\s+"foo"/m).test(stderr));
851+
});
852+
});

0 commit comments

Comments
 (0)