Socket
Socket
Sign inDemoInstall

espower

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

espower - npm Package Compare versions

Comparing version 1.2.0 to 1.2.1

6

CHANGELOG.md

@@ -0,1 +1,7 @@

### [1.2.1](https://github.com/power-assert-js/espower/releases/tag/v1.2.1) (2015-11-06)
* [disambiguate between function calls and async/yield expressions](https://github.com/power-assert-js/espower/pull/23) (by [@jamestalmage](https://github.com/jamestalmage))
## [1.2.0](https://github.com/power-assert-js/espower/releases/tag/v1.2.0) (2015-11-05)

@@ -2,0 +8,0 @@

10

lib/assertion-visitor.js

@@ -31,3 +31,3 @@ 'use strict';

function AssertionVisitor (matcher, assertionPath, options) {
function AssertionVisitor (matcher, assertionPath, enclosingFunc, options) {
this.matcher = matcher;

@@ -41,2 +41,4 @@ this.assertionPath = [].concat(assertionPath);

this.argumentModified = false;
this.withinGenerator = enclosingFunc && enclosingFunc.generator;
this.withinAsync = enclosingFunc && enclosingFunc.async;
}

@@ -153,4 +155,10 @@

var newCalleeObject = updateLocRecursively(espurify(this.powerAssertCalleeObject), n, this.options.visitorKeys);
if (this.withinAsync) {
addLiteralTo(props, n, 'async', true);
}
addLiteralTo(props, n, 'content', this.canonicalCode);
addLiteralTo(props, n, 'filepath', this.filepath);
if (this.withinGenerator) {
addLiteralTo(props, n, 'generator', true);
}
addLiteralTo(props, n, 'line', this.lineNum);

@@ -157,0 +165,0 @@ return n({

@@ -40,3 +40,4 @@ 'use strict';

// entering target assertion
assertionVisitor = new AssertionVisitor(candidates[0], path, that.options);
var enclosingFunc = findEnclosingFunction(controller.parents());
assertionVisitor = new AssertionVisitor(candidates[0], path, enclosingFunc, that.options);
assertionVisitor.enter(currentNode, parentNode);

@@ -87,2 +88,19 @@ return undefined;

function isFunction(node) {
return [
syntax.FunctionDeclaration,
syntax.FunctionExpression,
syntax.ArrowFunctionExpression
].indexOf(node.type) !== -1;
}
function findEnclosingFunction(parents) {
for (var i = parents.length - 1; i >= 0; i--) {
if (isFunction(parents[i])) {
return parents[i];
}
}
return null;
}
function verifyAstPrerequisites (ast, options) {

@@ -89,0 +107,0 @@ var errorMessage;

2

package.json
{
"name": "espower",
"description": "Power Assert feature instrumentor based on the ECMAScript AST",
"version": "1.2.0",
"version": "1.2.1",
"author": {

@@ -6,0 +6,0 @@ "name": "Takuto Wada",

@@ -33,7 +33,7 @@ (function (root, factory) {

describe('with loc, range', function () {
var options = {ecmaVersion: 7, locations: true, ranges: true, plugins: {asyncawait: {awaitAnywhere: true}}};
var options = {ecmaVersion: 7, locations: true, ranges: true, plugins: {asyncawait: true}};
testWithParserOptions(jsCode, expected, options);
});
describe('with loc', function () {
var options = {ecmaVersion: 7, locations: true, plugins: {asyncawait: {awaitAnywhere: true}}};
var options = {ecmaVersion: 7, locations: true, plugins: {asyncawait: true}};
testWithParserOptions(jsCode, expected, options);

@@ -404,10 +404,44 @@ });

inst("function *gen() {assert((yield bigOrSmall(size)) === 'big')}",
"function*gen(){assert(assert._expr(assert._capt(assert._capt(yield bigOrSmall(assert._capt(size,'arguments/0/left/argument/arguments/0')),'arguments/0/left')==='big','arguments/0'),{content:'assert((yield bigOrSmall(size)) === \\'big\\')',filepath:'path/to/some_test.js',line:1}));}");
"function*gen(){assert(assert._expr(assert._capt(assert._capt(yield bigOrSmall(assert._capt(size,'arguments/0/left/argument/arguments/0')),'arguments/0/left')==='big','arguments/0'),{content:'assert((yield bigOrSmall(size)) === \\'big\\')',filepath:'path/to/some_test.js',generator:true,line:1}));}");
});
describe('YieldExpression vs FunctionCall disambiguation', function () {
inst("function baz() {assert((yield (foo)) === bar)}",
"function baz(){assert(assert._expr(assert._capt(assert._capt(yield(assert._capt(foo,'arguments/0/left/arguments/0')),'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{content:'assert(yield(foo) === bar)',filepath:'path/to/some_test.js',line:1}));}");
inst("function *baz() {assert((yield (foo)) === bar)}",
"function*baz(){assert(assert._expr(assert._capt(assert._capt(yield foo,'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{content:'assert((yield foo) === bar)',filepath:'path/to/some_test.js',generator:true,line:1}));}");
inst("var baz = function () {assert((yield (foo)) === bar)}",
"var baz=function(){assert(assert._expr(assert._capt(assert._capt(yield(assert._capt(foo,'arguments/0/left/arguments/0')),'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{content:'assert(yield(foo) === bar)',filepath:'path/to/some_test.js',line:1}));};");
inst("var baz = function *() {assert((yield (foo)) === bar)}",
"var baz=function*(){assert(assert._expr(assert._capt(assert._capt(yield foo,'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{content:'assert((yield foo) === bar)',filepath:'path/to/some_test.js',generator:true,line:1}));};");
});
describe('AwaitExpression', function () {
inst("function *gen() {assert((await bigOrSmall(size)) === 'big')}",
"function*gen(){assert(assert._expr(assert._capt(assert._capt(await bigOrSmall(assert._capt(size,'arguments/0/left/argument/arguments/0')),'arguments/0/left')==='big','arguments/0'),{content:'assert((await bigOrSmall(size)) === \\'big\\')',filepath:'path/to/some_test.js',line:1}));}");
inst("async function gen() {assert((await bigOrSmall(size)) === 'big')}",
"async function gen(){assert(assert._expr(assert._capt(assert._capt(await bigOrSmall(assert._capt(size,'arguments/0/left/argument/arguments/0')),'arguments/0/left')==='big','arguments/0'),{async:true,content:'assert((await bigOrSmall(size)) === \\'big\\')',filepath:'path/to/some_test.js',line:1}));}");
});
describe('AwaitExpression vs FunctionCall disambiguation', function () {
inst("function baz() {assert((await (foo)) === bar)}",
"function baz(){assert(assert._expr(assert._capt(assert._capt(await(assert._capt(foo,'arguments/0/left/arguments/0')),'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{content:'assert(await(foo) === bar)',filepath:'path/to/some_test.js',line:1}));}");
inst("async function baz() {assert((await (foo)) === bar)}",
"async function baz(){assert(assert._expr(assert._capt(assert._capt(await foo,'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{async:true,content:'assert((await foo) === bar)',filepath:'path/to/some_test.js',line:1}));}");
inst("var baz = function () {assert((await (foo)) === bar)}",
"var baz=function(){assert(assert._expr(assert._capt(assert._capt(await(assert._capt(foo,'arguments/0/left/arguments/0')),'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{content:'assert(await(foo) === bar)',filepath:'path/to/some_test.js',line:1}));};");
inst("var baz = async function () {assert((await (foo)) === bar)}",
"var baz=async function(){assert(assert._expr(assert._capt(assert._capt(await foo,'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{async:true,content:'assert((await foo) === bar)',filepath:'path/to/some_test.js',line:1}));};");
inst("var baz = () => {assert((await (foo)) === bar)};",
"var baz=()=>{assert(assert._expr(assert._capt(assert._capt(await(assert._capt(foo,'arguments/0/left/arguments/0')),'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{content:'assert(await(foo) === bar)',filepath:'path/to/some_test.js',line:1}));};");
inst("var baz = async () => {assert((await (foo)) === bar)}",
"var baz=async()=>{assert(assert._expr(assert._capt(assert._capt(await foo,'arguments/0/left')===assert._capt(bar,'arguments/0/right'),'arguments/0'),{async:true,content:'assert((await foo) === bar)',filepath:'path/to/some_test.js',line:1}));};");
});
describe('Enhanced Object Literals', function () {

@@ -414,0 +448,0 @@

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc