A V8 optimisation assertion plugin for chai.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
grunt
src
test/src
.gitignore
.npmignore
.travis.yml
README.md
gruntfile.js
package.json
projectz.cson

README.md

Build Status NPM version NPM downloads Dependency Status Dev Dependency Status
Gratipay donate button

A V8 optimisation assertion plugin for chai.

Install

NPM

  • Use: require('chai-v8-optimisation')
  • Install: npm install --save chai-v8-optimisation

Usage

Using with chaijs

var chai = require("chai"),
    v8opt = require("chai-v8-optimisation");
    
chai.use(v8opt);

Running your tests: (in order to analyse optimisation the --allow-natives-syntax flag needs to be passed to node or iojs)

node --allow-natives-syntax your-optimisation-tests.js

Testing your functions:

function fn() {}
expect(fn).optimisation("yes");
expect(fn).optimization("yes"); // american spelling

expect(fn).to.be.optimised;
expect(fn).to.be.optimized;     // american spelling
function fn() {
  try{}catch(e){}
}
expect(fn).optimisation("no");
expect(fn).optimization("no");    // american spelling
expect(fn).not.to.be.optimised;
expect(fn).not.to.be.optimized;   // american spelling

Passing parameters to the function being tested

function fn(a, b, c) {}
expect(fn).optimisation("yes", [1, 2, 3], thisArg);

Other usages for the optimisation method

expect(fn).optimisation("always");  // always-optimised
expect(fn).optimisation("never");   // never-optimised
expect(fn).optimisation("maybe");   // maybe-deoptimised

Determining the reason for de-optimisation

Currently there isn't an exposed way to return a string containing the reason message

However we can output the reason to the shell using the native %SetFlags method

function fn() {
  try{}catch(e){}
}
%SetFlags("--trace_deopt");
// test optimisation
expect(fn).optimisation("yes");
// turn off the trace_deopt flag
%SetFlags("--notrace_deopt");

Contribute

Discover how you can contribute by heading on over to the CONTRIBUTING.md file.

Backers

Maintainers

These amazing people are maintaining this project:

Sponsors

No sponsors yet! Will you be the first?

Gratipay donate button

Contributors

These amazing people have contributed code to this project:

Become a contributor!

License

Unless stated otherwise all works are:

and licensed under:

  • The #{type} License