From 27f08ed2f8b983c3c3f7e80beca4961f091d0d32 Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Tue, 20 Oct 2015 22:01:21 +0900 Subject: [PATCH 01/13] Add power-assert to enhance test output --- lib/assert.js | 14 +++++++++++++- lib/babel.js | 10 +++++++++- lib/test.js | 3 +++ package.json | 3 +++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/assert.js b/lib/assert.js index 8965ff159..e9f1cbc30 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -1,5 +1,14 @@ 'use strict'; var assert = require('core-assert'); +var powerAssert = require('power-assert').customize({ + output: { + renderers: [ + require('power-assert-renderers').AssertionRenderer, + require('power-assert-renderers').SuccinctRenderer + ] + } +}); + var x = module.exports; Object.defineProperty(x, 'AssertionError', {value: assert.AssertionError}); @@ -29,9 +38,12 @@ x.fail = function (msg) { }; x.ok = x.assert = function (val, msg) { - test(val, create(val, true, '==', msg, x.ok)); + powerAssert(val, msg) }; +x._capt = powerAssert._capt; +x._expr = powerAssert._expr; + x.notOk = function (val, msg) { test(!val, create(val, false, '==', msg, x.notOk)); }; diff --git a/lib/babel.js b/lib/babel.js index 0ce80fb0c..cbdce2260 100644 --- a/lib/babel.js +++ b/lib/babel.js @@ -1,13 +1,21 @@ 'use strict'; var resolveFrom = require('resolve-from'); +var createEspowerPlugin = require('babel-plugin-espower/create'); var hasGenerators = parseInt(process.version.slice(1), 10) > 0; var options = { only: /(test|test\-.+|test\/.+)\.js$/, blacklist: hasGenerators ? ['regenerator'] : [], - optional: hasGenerators ? ['asyncToGenerator'] : [] + optional: hasGenerators ? ['asyncToGenerator'] : [], + plugins: [ + createEspowerPlugin(require('babel-core'), { + patterns: [ + 't.ok(value, [message])' + ] + }) + ] }; try { diff --git a/lib/test.js b/lib/test.js index 86fca8588..f10dd193b 100644 --- a/lib/test.js +++ b/lib/test.js @@ -70,6 +70,9 @@ Object.keys(assert).forEach(function (el) { }; }); +Test.prototype._capt = assert._capt +Test.prototype._expr = assert._expr + Test.prototype.plan = function (count) { if (typeof count !== 'number') { throw new TypeError('Expected a number'); diff --git a/package.json b/package.json index 146639f2a..faa4d3cc9 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "arr-flatten": "^1.0.1", "ava-init": "^0.1.0", "babel-core": "^5.8.23", + "babel-plugin-espower": "^1.0.0", "bluebird": "^2.9.34", "chalk": "^1.0.0", "co": "^4.6.0", @@ -73,6 +74,8 @@ "meow": "^3.3.0", "object-assign": "^4.0.1", "plur": "^2.0.0", + "power-assert": "^1.0.0", + "power-assert-renderers": "twada/power-assert-renderers", "pretty-ms": "^2.0.0", "resolve-from": "^1.0.0", "set-immediate-shim": "^1.0.1", From 0780d2d2a40c1d6a58eed3ff4f6f015d425b74cc Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Tue, 20 Oct 2015 23:02:54 +0900 Subject: [PATCH 02/13] Add enhanced output for t.assert() --- lib/assert.js | 33 ++++++++++++++++++++++----------- lib/babel.js | 3 ++- lib/test.js | 4 ++-- package.json | 3 ++- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/lib/assert.js b/lib/assert.js index e9f1cbc30..cbfaada0c 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -1,13 +1,8 @@ 'use strict'; var assert = require('core-assert'); -var powerAssert = require('power-assert').customize({ - output: { - renderers: [ - require('power-assert-renderers').AssertionRenderer, - require('power-assert-renderers').SuccinctRenderer - ] - } -}); +var empower = require('empower'); +var powerAssertFormatter = require('power-assert-formatter'); +var powerAssertRenderers = require('power-assert-renderers'); var x = module.exports; @@ -29,6 +24,20 @@ function test(ok, opts) { } } +function enhanceAssert(assert) { + return empower(assert, + powerAssertFormatter({ + renderers: [ + powerAssertRenderers.AssertionRenderer, + powerAssertRenderers.SuccinctRenderer + ] + }), + { + destructive: true + } + ); +} + x.pass = function (msg) { test(true, create(true, true, 'pass', msg, x.pass)); }; @@ -38,11 +47,11 @@ x.fail = function (msg) { }; x.ok = x.assert = function (val, msg) { - powerAssert(val, msg) + test(val, create(val, true, '==', msg, x.ok)); }; -x._capt = powerAssert._capt; -x._expr = powerAssert._expr; +x._capt = assert._capt; +x._expr = assert._expr; x.notOk = function (val, msg) { test(!val, create(val, false, '==', msg, x.notOk)); @@ -132,3 +141,5 @@ x.regexTest = function (regex, contents, msg) { x.ifError = x.error = function (err, msg) { test(!err, create(err, 'Error', '!==', msg, x.ifError)); }; + +enhanceAssert(x); diff --git a/lib/babel.js b/lib/babel.js index cbdce2260..5698af017 100644 --- a/lib/babel.js +++ b/lib/babel.js @@ -12,7 +12,8 @@ var options = { plugins: [ createEspowerPlugin(require('babel-core'), { patterns: [ - 't.ok(value, [message])' + 't.ok(value, [message])', + 't.assert(value, [message])' ] }) ] diff --git a/lib/test.js b/lib/test.js index f10dd193b..6cda72a2c 100644 --- a/lib/test.js +++ b/lib/test.js @@ -70,8 +70,8 @@ Object.keys(assert).forEach(function (el) { }; }); -Test.prototype._capt = assert._capt -Test.prototype._expr = assert._expr +Test.prototype._capt = assert._capt; +Test.prototype._expr = assert._expr; Test.prototype.plan = function (count) { if (typeof count !== 'number') { diff --git a/package.json b/package.json index faa4d3cc9..7c8005b4f 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "chalk": "^1.0.0", "co": "^4.6.0", "core-assert": "^0.1.0", + "empower": "^1.0.1", "figures": "^1.4.0", "fn-name": "^2.0.0", "globby": "^3.0.1", @@ -74,7 +75,7 @@ "meow": "^3.3.0", "object-assign": "^4.0.1", "plur": "^2.0.0", - "power-assert": "^1.0.0", + "power-assert-formatter": "^1.1.0", "power-assert-renderers": "twada/power-assert-renderers", "pretty-ms": "^2.0.0", "resolve-from": "^1.0.0", From 96beedcff6ec535b827dd07764f932c8d23cea3d Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Wed, 21 Oct 2015 10:04:13 +0900 Subject: [PATCH 03/13] Update power-assert-renderers --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7c8005b4f..00e9e63e2 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "object-assign": "^4.0.1", "plur": "^2.0.0", "power-assert-formatter": "^1.1.0", - "power-assert-renderers": "twada/power-assert-renderers", + "power-assert-renderers": "^0.1.0", "pretty-ms": "^2.0.0", "resolve-from": "^1.0.0", "set-immediate-shim": "^1.0.1", From 96e81be4e607789f5d8e5cfd73270b89d85c969c Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Wed, 21 Oct 2015 10:05:01 +0900 Subject: [PATCH 04/13] Remove unneccessary expressions --- lib/assert.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/assert.js b/lib/assert.js index cbfaada0c..05b28f6ca 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -25,7 +25,7 @@ function test(ok, opts) { } function enhanceAssert(assert) { - return empower(assert, + empower(assert, powerAssertFormatter({ renderers: [ powerAssertRenderers.AssertionRenderer, @@ -50,9 +50,6 @@ x.ok = x.assert = function (val, msg) { test(val, create(val, true, '==', msg, x.ok)); }; -x._capt = assert._capt; -x._expr = assert._expr; - x.notOk = function (val, msg) { test(!val, create(val, false, '==', msg, x.notOk)); }; From 603ef012ec68b4e89256f40044195fe79555be44 Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Wed, 21 Oct 2015 10:22:19 +0900 Subject: [PATCH 05/13] Add comment for workaround --- lib/test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/test.js b/lib/test.js index 6cda72a2c..9abb77c74 100644 --- a/lib/test.js +++ b/lib/test.js @@ -70,6 +70,8 @@ Object.keys(assert).forEach(function (el) { }; }); +// Workaround for power-assert +// `t` must be capturable for decorated assert output Test.prototype._capt = assert._capt; Test.prototype._expr = assert._expr; From dfb0c456c3ad8dd104ba94f2f203d9c10d322aff Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Wed, 21 Oct 2015 12:43:14 +0900 Subject: [PATCH 06/13] Add patterns for power-assert --- lib/assert.js | 15 ++++++++++++++- lib/babel.js | 9 ++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/assert.js b/lib/assert.js index 05b28f6ca..62ee25333 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -33,7 +33,20 @@ function enhanceAssert(assert) { ] }), { - destructive: true + destructive: true, + modifyMessageOnRethrow: true, + saveContextOnRethrow: false, + patterns: [ + 't.ok(value, [message])', + 't.notOk(value, [message])', + 't.true(value, [message])', + 't.false(value, [message])', + 't.is(value, expected, [message])', + 't.not(value, expected, [message])', + 't.same(value, expected, [message])', + 't.notSame(value, expected, [message])', + 't.regexTest(regex, contents, [message])' + ] } ); } diff --git a/lib/babel.js b/lib/babel.js index 5698af017..0b70843c8 100644 --- a/lib/babel.js +++ b/lib/babel.js @@ -13,7 +13,14 @@ var options = { createEspowerPlugin(require('babel-core'), { patterns: [ 't.ok(value, [message])', - 't.assert(value, [message])' + 't.notOk(value, [message])', + 't.true(value, [message])', + 't.false(value, [message])', + 't.is(value, expected, [message])', + 't.not(value, expected, [message])', + 't.same(value, expected, [message])', + 't.notSame(value, expected, [message])', + 't.regexTest(regex, contents, [message])' ] }) ] From 8087faafe65f3675635b01cb66bc64a10eb6b81f Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Wed, 21 Oct 2015 14:04:13 +0900 Subject: [PATCH 07/13] Add test for power-assert output --- test/fixture/power-assert.js | 8 ++++++++ test/test.js | 9 +++++++++ 2 files changed, 17 insertions(+) create mode 100644 test/fixture/power-assert.js diff --git a/test/fixture/power-assert.js b/test/fixture/power-assert.js new file mode 100644 index 000000000..ac9a32f00 --- /dev/null +++ b/test/fixture/power-assert.js @@ -0,0 +1,8 @@ +import test from '../../'; + +test(t => { + const a = 'foo'; + + t.ok(a === 'bar'); + t.end(); +}); diff --git a/test/test.js b/test/test.js index 907cadd5e..c75d866e6 100644 --- a/test/test.js +++ b/test/test.js @@ -837,3 +837,12 @@ test('fail-fast mode', function (t) { t.end(); }); }); + +test('power-assert support', function (t) { + t.plan(2); + + execCli('fixture/power-assert.js', function (err, stdout, stderr) { + t.ok(err); + t.true(stderr.indexOf('t.ok(a === \'bar\')\n') !== -1); + }); +}); From d7cf4bd48c6ee6797b0df033133d165f1a697ff6 Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Thu, 22 Oct 2015 13:37:08 +0900 Subject: [PATCH 08/13] Update empower --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 00e9e63e2..45ebfcf79 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "chalk": "^1.0.0", "co": "^4.6.0", "core-assert": "^0.1.0", - "empower": "^1.0.1", + "empower": "^1.0.2", "figures": "^1.4.0", "fn-name": "^2.0.0", "globby": "^3.0.1", From 86735354097e405ac8284a7b8c3f0e0152508aec Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Sat, 24 Oct 2015 09:29:10 +0900 Subject: [PATCH 09/13] Fix wrong indent --- test/fixture/power-assert.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/fixture/power-assert.js b/test/fixture/power-assert.js index ac9a32f00..02b974c5f 100644 --- a/test/fixture/power-assert.js +++ b/test/fixture/power-assert.js @@ -1,7 +1,7 @@ import test from '../../'; test(t => { - const a = 'foo'; + const a = 'foo'; t.ok(a === 'bar'); t.end(); From 8f8f1fbc73945a164ecf7c2842234ea0f26ae040 Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Sat, 24 Oct 2015 10:27:03 +0900 Subject: [PATCH 10/13] Move enhanceAssert() into ./lib/enhance-assert.js --- lib/assert.js | 32 +------------------------------- lib/babel.js | 12 +----------- lib/enhance-assert.js | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 42 deletions(-) create mode 100644 lib/enhance-assert.js diff --git a/lib/assert.js b/lib/assert.js index 62ee25333..0b8a135a8 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -1,8 +1,5 @@ 'use strict'; var assert = require('core-assert'); -var empower = require('empower'); -var powerAssertFormatter = require('power-assert-formatter'); -var powerAssertRenderers = require('power-assert-renderers'); var x = module.exports; @@ -24,33 +21,6 @@ function test(ok, opts) { } } -function enhanceAssert(assert) { - empower(assert, - powerAssertFormatter({ - renderers: [ - powerAssertRenderers.AssertionRenderer, - powerAssertRenderers.SuccinctRenderer - ] - }), - { - destructive: true, - modifyMessageOnRethrow: true, - saveContextOnRethrow: false, - patterns: [ - 't.ok(value, [message])', - 't.notOk(value, [message])', - 't.true(value, [message])', - 't.false(value, [message])', - 't.is(value, expected, [message])', - 't.not(value, expected, [message])', - 't.same(value, expected, [message])', - 't.notSame(value, expected, [message])', - 't.regexTest(regex, contents, [message])' - ] - } - ); -} - x.pass = function (msg) { test(true, create(true, true, 'pass', msg, x.pass)); }; @@ -152,4 +122,4 @@ x.ifError = x.error = function (err, msg) { test(!err, create(err, 'Error', '!==', msg, x.ifError)); }; -enhanceAssert(x); +require('./enhance-assert')(x); diff --git a/lib/babel.js b/lib/babel.js index 0b70843c8..bbf9e51fc 100644 --- a/lib/babel.js +++ b/lib/babel.js @@ -11,17 +11,7 @@ var options = { optional: hasGenerators ? ['asyncToGenerator'] : [], plugins: [ createEspowerPlugin(require('babel-core'), { - patterns: [ - 't.ok(value, [message])', - 't.notOk(value, [message])', - 't.true(value, [message])', - 't.false(value, [message])', - 't.is(value, expected, [message])', - 't.not(value, expected, [message])', - 't.same(value, expected, [message])', - 't.notSame(value, expected, [message])', - 't.regexTest(regex, contents, [message])' - ] + patterns: require('./enhance-assert').PATTERNS }) ] }; diff --git a/lib/enhance-assert.js b/lib/enhance-assert.js new file mode 100644 index 000000000..11999474c --- /dev/null +++ b/lib/enhance-assert.js @@ -0,0 +1,34 @@ +module.exports = enhanceAssert; + +module.exports.PATTERNS = [ + 't.ok(value, [message])', + 't.notOk(value, [message])', + 't.true(value, [message])', + 't.false(value, [message])', + 't.is(value, expected, [message])', + 't.not(value, expected, [message])', + 't.same(value, expected, [message])', + 't.notSame(value, expected, [message])', + 't.regexTest(regex, contents, [message])' +]; + +function enhanceAssert(assert) { + var empower = require('empower'); + var powerAssertFormatter = require('power-assert-formatter'); + var powerAssertRenderers = require('power-assert-renderers'); + + empower(assert, + powerAssertFormatter({ + renderers: [ + powerAssertRenderers.AssertionRenderer, + powerAssertRenderers.SuccinctRenderer + ] + }), + { + destructive: true, + modifyMessageOnRethrow: true, + saveContextOnRethrow: false, + patterns: module.exports.PATTERNS + } + ); +} From 5a637c2cc964f9e4ee273c6d897a6f27eb8a1b64 Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Sat, 24 Oct 2015 10:28:10 +0900 Subject: [PATCH 11/13] Remove a unnecessary line --- lib/assert.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/assert.js b/lib/assert.js index 0b8a135a8..26c4301ce 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -1,6 +1,5 @@ 'use strict'; var assert = require('core-assert'); - var x = module.exports; Object.defineProperty(x, 'AssertionError', {value: assert.AssertionError}); From bd3a06ebf68dfb2436d7e5a214f138a3bc08cd66 Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Sat, 24 Oct 2015 10:29:50 +0900 Subject: [PATCH 12/13] Use t.not() --- test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test.js b/test/test.js index c75d866e6..74ba3759f 100644 --- a/test/test.js +++ b/test/test.js @@ -843,6 +843,6 @@ test('power-assert support', function (t) { execCli('fixture/power-assert.js', function (err, stdout, stderr) { t.ok(err); - t.true(stderr.indexOf('t.ok(a === \'bar\')\n') !== -1); + t.not(stderr.indexOf('t.ok(a === \'bar\')\n'), -1); }); }); From b8fc55d45da3967e2c35493e3d412f541bc15135 Mon Sep 17 00:00:00 2001 From: Kazato Sugimoto Date: Sat, 24 Oct 2015 11:02:59 +0900 Subject: [PATCH 13/13] Test that it renders a diagram output --- test/test.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/test.js b/test/test.js index 74ba3759f..51ce50bc8 100644 --- a/test/test.js +++ b/test/test.js @@ -843,6 +843,10 @@ test('power-assert support', function (t) { execCli('fixture/power-assert.js', function (err, stdout, stderr) { t.ok(err); - t.not(stderr.indexOf('t.ok(a === \'bar\')\n'), -1); + + // t.ok(a === 'bar') + // | + // "foo" + t.true((/t\.ok\(a === 'bar'\)\s*\n\s+\|\s*\n\s+"foo"/m).test(stderr)); }); });