Comparing version 1.0.2 to 1.1.0
@@ -0,1 +1,9 @@ | ||
## [1.1.0](https://github.com/power-assert-js/empower/releases/tag/v1.1.0) (2015-11-07) | ||
#### Features | ||
* [support async-await state flags](https://github.com/power-assert-js/empower/pull/17) (by [@jamestalmage](https://github.com/jamestalmage)) | ||
### [1.0.2](https://github.com/power-assert-js/empower/releases/tag/v1.0.2) (2015-10-22) | ||
@@ -2,0 +10,0 @@ |
@@ -27,2 +27,8 @@ var gulp = require('gulp'); | ||
}, | ||
acorn_es7_plugin_bundle: { | ||
standalone: 'acornEs7Plugin', | ||
require: 'acorn-es7-plugin', | ||
destDir: './build', | ||
destName: 'acorn-es7-plugin.js' | ||
}, | ||
escodegen_bundle: { | ||
@@ -44,3 +50,3 @@ standalone: 'escodegen', | ||
}; | ||
var BUILDS = ['assert', 'escodegen']; | ||
var BUILDS = ['assert', 'escodegen', 'acorn_es7_plugin']; | ||
@@ -86,3 +92,4 @@ function captureStdout (filespec) { | ||
ui: 'tdd', | ||
reporter: 'mocha-lcov-reporter' | ||
reporter: 'mocha-lcov-reporter', | ||
require: ['babel-core/polyfill'] | ||
})) | ||
@@ -99,3 +106,4 @@ .pipe(capt.finish) | ||
ui: 'tdd', | ||
reporter: 'dot' | ||
reporter: 'dot', | ||
require: ['babel-core/polyfill'] | ||
})) | ||
@@ -102,0 +110,0 @@ .on('error', gutil.log); |
@@ -14,2 +14,13 @@ 'use strict'; | ||
events = []; | ||
var source = { | ||
content: args.content, | ||
filepath: args.filepath, | ||
line: args.line | ||
}; | ||
if (args.generator) { | ||
source.generator = true; | ||
} | ||
if (args.async) { | ||
source.async = true; | ||
} | ||
return { | ||
@@ -20,7 +31,3 @@ powerAssertContext: { | ||
}, | ||
source: { | ||
content: args.content, | ||
filepath: args.filepath, | ||
line: args.line | ||
} | ||
source: source | ||
}; | ||
@@ -27,0 +34,0 @@ } |
{ | ||
"name": "empower", | ||
"description": "Power Assert feature enhancer for assert function/object", | ||
"version": "1.0.2", | ||
"version": "1.1.0", | ||
"author": { | ||
@@ -13,2 +13,8 @@ "name": "Takuto Wada", | ||
}, | ||
"contributors": [ | ||
{ | ||
"name": "James Talmage", | ||
"url": "https://github.com/jamestalmage" | ||
} | ||
], | ||
"dependencies": { | ||
@@ -26,2 +32,4 @@ "array-filter": "^1.0.0", | ||
"acorn": "^2.4.0", | ||
"acorn-es7-plugin": "^1.0.9", | ||
"babel-core": "^5.8.33", | ||
"blanket": "^1.1.7", | ||
@@ -32,3 +40,3 @@ "browserify": "^11.0.1", | ||
"escodegen": "^1.7.0", | ||
"espower": "^1.0.6", | ||
"espower": "^1.2.1", | ||
"gulp": "^3.9.0", | ||
@@ -35,0 +43,0 @@ "gulp-derequire": "^2.1.0", |
@@ -209,2 +209,7 @@ empower | ||
CONTRIBUTORS | ||
--------------------------------------- | ||
* [James Talmage (jamestalmage)](https://github.com/jamestalmage) | ||
LICENSE | ||
@@ -211,0 +216,0 @@ --------------------------------------- |
(function (root, factory) { | ||
'use strict'; | ||
if (typeof define === 'function' && define.amd) { | ||
define(['empower', 'espower', 'acorn', 'escodegen', 'assert'], factory); | ||
define(['empower', 'espower', 'acorn', 'acorn-es7-plugin', 'babel', 'escodegen', 'assert'], factory); | ||
} else if (typeof exports === 'object') { | ||
factory(require('..'), require('espower'), require('acorn'), require('escodegen'), require('assert')); | ||
factory(require('..'), require('espower'), require('acorn'), require('acorn-es7-plugin'), require('babel-core'), require('escodegen'), require('assert')); | ||
} else { | ||
factory(root.empower, root.espower, root.acorn, root.escodegen, root.assert); | ||
factory(root.empower, root.espower, root.acorn, root.acornEs7Plugin, root.babel, root.escodegen, root.assert); | ||
} | ||
@@ -14,5 +15,8 @@ }(this, function ( | ||
acorn, | ||
acornEs7Plugin, | ||
babel, | ||
escodegen, | ||
baseAssert | ||
) { | ||
acornEs7Plugin(acorn); | ||
@@ -30,5 +34,6 @@ var weave = function (line, patterns) { | ||
} | ||
var jsAST = acorn.parse(line, {ecmaVersion: 6, locations: true, sourceType: 'module', sourceFile: filepath}); | ||
var jsAST = acorn.parse(line, {ecmaVersion: 7, locations: true, sourceType: 'module', sourceFile: filepath, plugins: {asyncawait: true}}); | ||
var espoweredAST = espower(jsAST, espowerOptions); | ||
return escodegen.generate(espoweredAST, {format: {compact: true}}); | ||
var code = escodegen.generate(espoweredAST, {format: {compact: true}}); | ||
return babel.transform(code).code | ||
}, | ||
@@ -39,7 +44,15 @@ fakeFormatter = function (context) { | ||
}, []); | ||
return [ | ||
var output = [ | ||
context.source.filepath, | ||
context.source.content, | ||
JSON.stringify(events) | ||
].join('\n'); | ||
context.source.content | ||
]; | ||
if (context.source.async) { | ||
output.push('async:true'); | ||
} | ||
if (context.source.generator) { | ||
output.push('generator:true'); | ||
} | ||
output.push(JSON.stringify(events)); | ||
return output.join('\n'); | ||
}; | ||
@@ -312,2 +325,125 @@ | ||
suite(JSON.stringify(option) + ' yield for assertion inside generator', function () { | ||
test('yield falsy', function (done) { | ||
var falsy = Promise.resolve(0); | ||
function onError(e) { | ||
try { | ||
if (!e) { | ||
return done(new Error('Assertion Error should be thrown')); | ||
} | ||
if (option.modifyMessageOnRethrow) { | ||
baseAssert.equal(e.message, [ | ||
'test/some_test.js', | ||
'assert.ok(yield falsy)', | ||
'generator:true', | ||
'[{"value":0,"espath":"arguments/0"}]' | ||
].join('\n')); | ||
} | ||
if (option.saveContextOnRethrow) { | ||
baseAssert.deepEqual(e.powerAssertContext, { | ||
"source": { | ||
"content": "assert.ok(yield falsy)", | ||
"filepath": "test/some_test.js", | ||
"generator": true, | ||
"line": 2 | ||
}, | ||
"args": [ | ||
{ | ||
"value": 0, | ||
"events": [ | ||
{"value": 0, "espath": "arguments/0"} | ||
] | ||
} | ||
] | ||
}); | ||
} | ||
baseAssert.equal(e.name, 'AssertionError'); | ||
} catch (e) { | ||
return done (e); | ||
} | ||
done(); | ||
} | ||
function onResult() { | ||
done(new Error('promise should not resolve')); | ||
} | ||
var code = [ | ||
'function *gen() {', | ||
' assert.ok(yield falsy);', | ||
'}', | ||
'', | ||
'var g = gen();', | ||
'', | ||
'g.next().value', | ||
' .then((val) => g.next(val))', | ||
' .then(onResult)', | ||
' .catch(onError);' | ||
].join('\n'); | ||
eval(weave(code)); | ||
}); | ||
}); | ||
suite(JSON.stringify(option) + ' await assertion inside async async function', function () { | ||
test('yield falsy', function (done) { | ||
var falsy = Promise.resolve(0); | ||
function onError(e) { | ||
try { | ||
if (!e) { | ||
return done(new Error('Assertion Error should be thrown')); | ||
} | ||
if (option.modifyMessageOnRethrow) { | ||
baseAssert.equal(e.message, [ | ||
'test/some_test.js', | ||
'assert.ok(await falsy)', | ||
'async:true', | ||
'[{"value":0,"espath":"arguments/0"}]' | ||
].join('\n')); | ||
} | ||
if (option.saveContextOnRethrow) { | ||
baseAssert.deepEqual(e.powerAssertContext, { | ||
"source": { | ||
"content": "assert.ok(await falsy)", | ||
"filepath": "test/some_test.js", | ||
"async": true, | ||
"line": 2 | ||
}, | ||
"args": [ | ||
{ | ||
"value": 0, | ||
"events": [ | ||
{"value": 0, "espath": "arguments/0"} | ||
] | ||
} | ||
] | ||
}); | ||
} | ||
baseAssert.equal(e.name, 'AssertionError'); | ||
} catch (e) { | ||
return done (e); | ||
} | ||
done(); | ||
} | ||
function onResult() { | ||
done(new Error('promise should not resolve')); | ||
} | ||
var code = [ | ||
'async function gen() {', | ||
' assert.ok(await falsy);', | ||
'}', | ||
'gen()', | ||
' .then(onResult)', | ||
' .catch(onError);' | ||
].join('\n'); | ||
eval(weave(code)); | ||
}); | ||
}); | ||
} | ||
@@ -314,0 +450,0 @@ |
@@ -8,2 +8,5 @@ var require = { | ||
assert: '../build/assert', | ||
babel: '../node_modules/babel-core/browser', | ||
bluebird: '../node_modules/bluebird/js/browser/bluebird', | ||
"acorn-es7-plugin": '../build/acorn-es7-plugin', | ||
mocha: "../bower_components/mocha/mocha", | ||
@@ -10,0 +13,0 @@ requirejs: "../bower_components/requirejs/require", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
351181
8684
242
21
24