![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Power Assert feature instrumentor based on the Mozilla JavaScript AST.
espower
is a core module of power-assert family.
espower
detects and manipulates assertion expression (JavaScript Code) in original AST represented as Mozilla JavaScript AST, to instrument power-assert feature into returned new AST object. Mozilla JavaScript AST in, Mozilla JavaScript AST out.
Please note that espower
is a beta version product. Pull-requests, issue reports and patches are always welcomed. See power-assert project for more documentation.
See CHANGELOG
return type |
---|
object |
espower
function manipulates originalAst
then returns modifiedAst
that is also an AST node object defined in Mozilla JavaScript AST spec.
If destructive
option is falsy, originalAst
will be unchanged. If destructive
option is truthy, originalAst
will be manipulated directly and returned modifiedAst
will be the same instance of originalAst
.
type | default value |
---|---|
object | N/A |
originalAst
should be an AST node object defined in Mozilla JavaScript AST spec.
type | default value |
---|---|
object | (return value of espower.defaultOptions() ) |
Configuration options. If not passed, default options will be used.
type | default value |
---|---|
boolean | false |
Modify originalAst
destructively or not.
If false
, espower clones originalAst
deeply, so originalAst
will be unchanged. If true
, originalAst
will be manipulated directly and returned modifiedAst
will be the same instance of originalAst
.
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.
If callee name (for example, assert.equal
) matches exactly and number of arguments is satisfied, then the assertion will be modified.
Detection is done by escallmatch. Any arguments enclosed in bracket (for example, [message]
) means optional parameters. Without bracket means mandatory parameters.
type | default value |
---|---|
string | N/A |
Filepath of originalAst
. If passed, espower stores filepath information for reporting. This property is optional.
Returns default options object for espower
function. In other words, returns
{
destructive: 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])'
]
}
For given test file example_test.js
below,
var assert = require('power-assert'),
truthy = 'true',
falsy = 'false';
assert(falsy);
assert.equal(truthy, falsy);
Apply espower
then generate modified code to console,
var espower = require('espower'),
esprima = require('esprima'),
escodegen = require('escodegen'),
fs = require('fs'),
path = require('path');
var filepath = path.join(__dirname, 'example_test.js');
var jsAst = esprima.parse(fs.readFileSync(filepath), {tolerant: true, loc: true, tokens: true});
var modifiedAst = espower(jsAst, {path: filepath});
console.log(escodegen.generate(modifiedAst));
Output:
var assert = require('power-assert'), truthy = 'true', falsy = 'false';
assert(assert._expr(assert._capt(falsy, 'arguments/0'), {
content: 'assert(falsy)',
filepath: '/path/to/example_test.js',
line: 4
}));
assert.equal(assert._expr(assert._capt(truthy, 'arguments/0'), {
content: 'assert.equal(truthy, falsy)',
filepath: '/path/to/example_test.js',
line: 5
}), assert._expr(assert._capt(falsy, 'arguments/1'), {
content: 'assert.equal(truthy, falsy)',
filepath: '/path/to/example_test.js',
line: 5
}));
Install
$ npm install --save-dev espower
Install
$ bower install --save-dev espower
Then load (espower
function is exported)
<script type="text/javascript" src="./path/to/bower_components/espower/build/espower.js"></script>
Licensed under the MIT license.
0.8.0 (2014-08-12)
browser.assert.element(selector)
(ea0a3ce9)powerAssertVariableName
is now deprecated and ignored. Please use patterns
option instead (2f023f91)targetMethods
is now deprecated and ignored. Please use patterns
option instead (e75e5d35)If you already customize instrumentation pattern using powerAssertVariableName
and targetMethods
, you need to migarte. To migrate, change your code from the following:
var options = {
powerAssertVariableName: 'yourAssert',
targetMethods: {
oneArg: [
'okay'
],
twoArgs: [
'equal',
'customEqual'
]
}
};
var modifiedAst = espower(jsAst, options);
To:
var options = {
patterns: [
'yourAssert(value, [message])',
'yourAssert.okay(value, [message])',
'yourAssert.equal(actual, expected, [message])',
'yourAssert.customEqual(actual, expected, [message])'
]
};
var modifiedAst = espower(jsAst, options);
FAQs
Power Assert feature instrumentor based on the ECMAScript AST
We found that espower demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.