diff --git a/config/coverage-parallel.js b/config/coverage-parallel.js new file mode 100644 index 00000000..15d3d108 --- /dev/null +++ b/config/coverage-parallel.js @@ -0,0 +1,6 @@ +/*jshint node:true*/ +'use strict'; + +module.exports = { + parallel: true +}; diff --git a/package.json b/package.json index 0bdee1ed..52153c95 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "ember-cli-sri": "^2.1.0", "ember-cli-uglify": "^1.2.0", "ember-disable-prototype-extensions": "^1.1.0", + "ember-exam": "0.6.0", "ember-export-application-global": "^1.0.5", "ember-load-initializers": "^0.5.1", "ember-resolver": "^2.0.3", diff --git a/test/integration/coverage-test.js b/test/integration/coverage-test.js index 473b0a4d..bed0bfc9 100644 --- a/test/integration/coverage-test.js +++ b/test/integration/coverage-test.js @@ -14,7 +14,11 @@ chai.use(chaiFiles); describe('`ember test`', function() { beforeEach(function() { - return remove('coverage'); + return remove('coverage*'); + }); + + afterEach(function() { + return remove('config/coverage.js'); }); it('runs coverage when env var is set', function() { @@ -35,4 +39,23 @@ describe('`ember test`', function() { expect(dir('coverage')).to.not.exist; }); }); + + it('uses parallel configuration and merges coverage when merge-coverage command is issued', function() { + this.timeout(100000); + expect(dir('coverage')).to.not.exist; + fs.copySync('config/coverage-parallel.js', 'config/coverage.js'); + return runCommand('ember', ['exam', '--split=2', '--parallel=true'], {env: {COVERAGE: true}}).then(function() { + expect(dir('coverage')).to.not.exist; + return runCommand('ember', ['coverage-merge']); + }).then(function() { + expect(file('coverage/lcov-report/index.html')).to.not.be.empty; + expect(file('coverage/index.html')).to.not.be.empty; + var summary = fs.readJSONSync('coverage/coverage-summary.json'); + expect(summary.total.lines.pct).to.equal(100); + expect(summary['tests/dummy/app/resolver.js'].lines.pct).to.equal(100); + expect(summary['tests/dummy/app/app.js'].lines.pct).to.equal(100); + expect(summary['tests/dummy/app/router.js'].lines.pct).to.equal(100); + expect(summary['tests/dummy/app/templates/application.hbs'].lines.pct).to.equal(100); + }); + }); });