Skip to content

Commit

Permalink
Merge pull request #35 from alexindigo/v2.0.0
Browse files Browse the repository at this point in the history
v2.0.0
  • Loading branch information
alexindigo committed Mar 7, 2016
2 parents eda1a8d + ca38f1a commit 50af37b
Show file tree
Hide file tree
Showing 9 changed files with 137 additions and 49 deletions.
14 changes: 14 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org

root = true

[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true

[**.{css,hbs,js,json,md,scss}]
indent_style = space
indent_size = 2
insert_final_newline = true
37 changes: 37 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"env": {
"node": true
},
"rules": {
"indent": [2, 2, {"SwitchCase": 1}],
"quotes": [2, "single"],
"linebreak-style": [2, "unix"],
"semi": [2, "always"],
"handle-callback-err": [2, "^err"],
"valid-jsdoc": [2, {
"requireReturn": false,
"requireReturnDescription": false,
"prefer": {
"return": "returns"
}
}],
"no-redeclare": [2, { "builtinGlobals": true }],
"no-shadow": [2, { "builtinGlobals": true, "hoist": "all" }],
"no-use-before-define": [2, "nofunc"],
"no-shadow-restricted-names": 2,
"no-extra-semi": 2,
"no-unused-vars": 2,
"no-undef": 2,
"no-console": 2,
"curly": 0,
"key-spacing": 0,
"strict": 0,
"dot-notation": 0,
"eol-last": 0,
"no-new": 0,
"semi-spacing": 0,
"no-multi-spaces": 0,
"eqeqeq": 0,
"no-mixed-requires": 0
}
}
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
coverage/
node_modules/
.DS_Store
.DS_Store
2 changes: 2 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
.gitignore
coverage/
test/
testdata/
14 changes: 14 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
language: node_js
node_js:
- "0.10"
- "0.12"
- "iojs"
- "4.2"
- "stable"
script:
- node --version
- npm --version
- npm run lint
- npm run test
after_success:
- "cat coverage/lcov.info | ./node_modules/.bin/coveralls"
51 changes: 26 additions & 25 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,35 +13,36 @@ function shouldIgnoreFile(file, options) {
}

module.exports = function(options, extraOptions) {
var file;
options = options || {};

function transform(file) {
if (shouldIgnoreFile(file, options))
return through();

var instrumenter = new (options.instrumenter || require('istanbul')).Instrumenter(options.instrumenterConfig || {});

var data = '';
return through(function(buf) {
data += buf;
}, function() {
var self = this;
instrumenter.instrument(data, file, function(err, code) {
if (!err) {
self.queue(code);
} else {
self.emit('error', err);
}
self.queue(null);
});
});
}

if (typeof options === 'string') {
var file = options;
file = options;
options = extraOptions || {};
return transform(file);
return transform(options, file);
}

return transform;
return transform.bind(null, options);
};

function transform(options, file) {
if (shouldIgnoreFile(file, options))
return through();

var instrumenter = new (options.instrumenter || require('istanbul')).Instrumenter(options.instrumenterConfig || {});

var data = '';
return through(function(buf) {
data += buf;
}, function() {
var self = this;
instrumenter.instrument(data, file, function(err, code) {
if (!err) {
self.queue(code);
} else {
self.emit('error', err);
}
self.queue(null);
});
});
}
21 changes: 15 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
{
"name": "browserify-istanbul",
"version": "1.0.0",
"version": "2.0.0",
"description": "A browserify transform for the istanbul code coverage tool",
"main": "index.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "mocha"
"lint": "eslint index.js test/*.js",
"test": "istanbul cover _mocha"
},
"pre-commit": [
"lint",
"test"
],
"repository": {
"type": "git",
"url": "git://github.com/devongovett/browserify-istanbul.git"
Expand All @@ -25,12 +30,16 @@
},
"homepage": "https://github.com/devongovett/browserify-istanbul",
"dependencies": {
"minimatch": "^2.0.0",
"through": "^2.3.4"
"minimatch": "^3.0.0",
"through": "^2.3.8"
},
"devDependencies": {
"browserify": "^13.0.0",
"coveralls": "^2.11.8",
"eslint": "^2.2.0",
"eslint-plugin-mocha": "^2.0.0",
"istanbul": "^0.4.2",
"browserify": "^9.0.0",
"mocha": "^2.0.0"
"mocha": "^2.4.5",
"pre-commit": "^1.1.2"
}
}
11 changes: 11 additions & 0 deletions test/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"env": {
"mocha": true
},
"plugins": [
"mocha"
],
"rules": {
"mocha/no-exclusive-tests": 2
}
}
33 changes: 16 additions & 17 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,62 +10,61 @@ describe('browserify-istanbul', function() {
.bundle(function(err, src) {
if (err)
return done(err);

var ctx = {};
vm.runInNewContext(src, ctx);

assert.equal(typeof ctx.__coverage__, 'object');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/src/file.js')], 'object');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/src/ignored.js')], 'object');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/tests/file.js')], 'undefined');
done();
});
});

it('should support ignore option in addition to default ignore option', function(done) {
browserify(__dirname + '/../testdata/tests/file.js')
.transform(istanbul({ ignore: ['**/ignored.js'] }))
.bundle(function(err, src) {
if (err)
return done(err);

var ctx = {};
vm.runInNewContext(src, ctx);

assert.equal(typeof ctx.__coverage__, 'object');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/src/file.js')], 'object');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/src/ignored.js')], 'undefined');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/tests/file.js')], 'undefined');
done();
});
});

it('should support disabling defaultIgnore', function(done) {
browserify(__dirname + '/../testdata/tests/file.js')
.transform(istanbul({ ignore: ['**/ignored.js'], defaultIgnore: false }))
.bundle(function(err, src) {
if (err)
return done(err);

var ctx = {};
vm.runInNewContext(src, ctx);

assert.equal(typeof ctx.__coverage__, 'object');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/src/file.js')], 'object');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/src/ignored.js')], 'undefined');
assert.equal(typeof ctx.__coverage__[require.resolve(__dirname + '/../testdata/tests/file.js')], 'object');
done();
});
});

it('should handle invalid .js', function(done) {
browserify(__dirname + '/../testdata/tests/invalid.js')
.transform(istanbul())
.bundle(function(err, src) {
assert.equal(typeof err, 'object');
assert.notEqual(err, null, 'Should emit error');

done();
});
browserify(__dirname + '/../testdata/tests/invalid.js')
.transform(istanbul())
.bundle(function(err) {
assert.equal(typeof err, 'object');
assert.notEqual(err, null, 'Should emit error');
done();
});
});
});

0 comments on commit 50af37b

Please sign in to comment.