-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
nyc builtin source transformer #63
Comments
Where should I put this snippet? |
In a test fixture or mock where you have access to |
The way I use the above snippet is the following:
'use strict';
function maybeCoverage() {
return Object.keys(require.cache).some((path) => (/node_modules\/nyc/).test(path));
}
module.exports = maybeCoverage() ? {
nyc(source) {
const Instrumenter = require('nyc/lib/instrumenters/istanbul');
const instrumenter = Instrumenter(process.cwd(), {});
const instrumentMethod = instrumenter.instrumentSync.bind(instrumenter);
return instrumentMethod(source, this.filename);
},
} : {}; Then in 'use strict';
const assert = require('assert');
const nycTransformer = require('../nycTransformer');
const sandbox = require('sandboxed-module');
it('should do something', function onTest() {
const sandboxedFile = sandbox.require('path', {
singleOnly: true,
requires: { /* */},
sourceTransformers: nycTransformer,
});
assert('something');
}); I hope that helps! |
Thank you
…On Wed, Feb 7, 2018 at 10:27 AM, Marie ***@***.***> wrote:
The way I use the above snippet is the following:
nycTransformer.js (placed at the root of my test folder)
'use strict';
function maybeCoverage() {
return Object.keys(require.cache).some((path) => (/node_modules\/nyc/).test(path));
}
module.exports = maybeCoverage() ? {
nyc(source) {
const Instrumenter = require('nyc/lib/instrumenters/istanbul');
const instrumenter = Instrumenter(process.cwd(), {});
const instrumentMethod = instrumenter.instrumentSync.bind(instrumenter);
return instrumentMethod(source, this.filename);
},
} : {};
Then in test.js
'use strict';
const assert = require('assert');const nycTransformer = require('../nycTransformer');const sandbox = require('sandboxed-module');
it('should do something', function onTest() {
const sandboxedFile = sandbox.require('path', {
singleOnly: true,
requires: { /* */},
sourceTransformers: nycTransformer,
});
assert('something');
});
I hope that helps!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#63 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAlKm5qqfOM-8b_N33kYUMqUEXtMmbBpks5tScDFgaJpZM4OjSy->
.
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Related to #25.
It'd be nice if the istanbul transformer also supported nyc, which in turn supports subprocesses. I got this working with the following voodoo, but I wasn't sure whether this was the supported mechanism per https://github.com/istanbuljs/nyc. Thoughts? Is this in scope?
The text was updated successfully, but these errors were encountered: