mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
updated to use nyc and istanbul 1.0, added coverage for browser tests and merged with server coverage for a more accurate number
This commit is contained in:
parent
f4bc55ec5e
commit
c35bbf0b9d
5
.gitignore
vendored
5
.gitignore
vendored
@ -10,4 +10,7 @@
|
||||
coverage
|
||||
.nvmrc
|
||||
~*
|
||||
/.cache
|
||||
/.cache
|
||||
*.marko.js
|
||||
/test/generated/
|
||||
.nyc_output
|
||||
@ -5,5 +5,5 @@ node_js:
|
||||
- "6"
|
||||
- "7"
|
||||
language: node_js
|
||||
script: "npm run test-coverage"
|
||||
script: "npm run test-generate-coverage"
|
||||
after_success: "npm run coveralls"
|
||||
22
package.json
22
package.json
@ -20,9 +20,10 @@
|
||||
"url": "https://github.com/marko-js/marko.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "npm run mocha -s && npm run test-widgets -s && npm run jshint -s",
|
||||
"test": "npm run jshint -s && npm run mocha -s && npm run test-widgets -s",
|
||||
"mocha": "mocha --ui bdd --reporter spec ./test/",
|
||||
"test-coverage": "istanbul cover _mocha --include-all-sources -- --ui bdd --reporter spec ./test && npm run test-widgets && npm run jshint",
|
||||
"test-coverage": "npm run test-generate-coverage && nyc report --reporter=html && open ./coverage/index.html",
|
||||
"test-generate-coverage": "nyc -asc npm run test",
|
||||
"test-fast": "mocha --ui bdd --reporter spec ./test/render-test",
|
||||
"test-async": "mocha --ui bdd --reporter spec ./test/async-render-test",
|
||||
"test-taglib-loader": "mocha --ui bdd --reporter spec ./test/taglib-loader-test",
|
||||
@ -34,7 +35,7 @@
|
||||
"test-widgets-browser-dev": "browser-refresh test/browser-tests-runner/cli.js test/widgets-browser-tests.js --server",
|
||||
"test-widgets-page": "browser-refresh test/browser-tests-runner/cli.js test/widgets-browser-tests.js --server --page",
|
||||
"jshint": "jshint compiler/ runtime/ taglibs/ widgets/",
|
||||
"coveralls": "cat ./coverage/lcov.info | coveralls"
|
||||
"coveralls": "nyc report --reporter=text-lcov | coveralls"
|
||||
},
|
||||
"author": "Patrick Steele-Idem <pnidem@gmail.com>",
|
||||
"maintainers": [
|
||||
@ -86,15 +87,19 @@
|
||||
"express": "^4.13.4",
|
||||
"fs-extra": "^0.30.0",
|
||||
"ignoring-watcher": "^1.0.2",
|
||||
"istanbul": "^0.4.3",
|
||||
"istanbul-lib-instrument": "^1.3.0",
|
||||
"jquery": "^2.1.3",
|
||||
"jsdom": "^9.6.0",
|
||||
"jshint": "^2.5.0",
|
||||
"lasso": "^2.4.1",
|
||||
"lasso-marko": "^2.1.0",
|
||||
"md5-hex": "^1.3.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mocha": "^2.3.3",
|
||||
"mocha-phantomjs": "^4.1.0",
|
||||
"mocha-phantomjs-core": "^1.3.1",
|
||||
"mocha-phantomjs-istanbul": "0.0.2",
|
||||
"nyc": "^9.0.0",
|
||||
"open": "0.0.5",
|
||||
"phantomjs-prebuilt": "^2.1.13",
|
||||
"request": "^2.72.0",
|
||||
"require-self-ref": "^2.0.1",
|
||||
@ -113,6 +118,13 @@
|
||||
"browser": {
|
||||
"./node-require.js": "./node-require-browser.js"
|
||||
},
|
||||
"nyc": {
|
||||
"exclude": [
|
||||
"**/benchmark/**",
|
||||
"**/coverage/**",
|
||||
"**/test/**"
|
||||
]
|
||||
},
|
||||
"homepage": "http://markojs.com/",
|
||||
"version": "4.0.0-beta.2",
|
||||
"logo": {
|
||||
|
||||
@ -69,6 +69,9 @@ function autoTest(name, dir, run, options, done) {
|
||||
|
||||
exports.scanDir = function(autoTestDir, run, options) {
|
||||
describe('autotest', function() {
|
||||
if(options && options.timeout) {
|
||||
this.timeout(options.timeout);
|
||||
}
|
||||
fs.readdirSync(autoTestDir)
|
||||
.forEach(function(name) {
|
||||
if (name.charAt(0) === '.') {
|
||||
|
||||
@ -11,8 +11,10 @@ var defaultPageTemplate = require('./page-template.marko');
|
||||
var spawn = require('child-process-promise').spawn;
|
||||
var fs = require('fs');
|
||||
var mkdirp = require('mkdirp');
|
||||
var mochaPhantomJSCommand = path.join(__dirname, '../../node_modules/.bin/mocha-phantomjs');
|
||||
var md5Hex = require('md5-hex');
|
||||
var mochaPhantomJSCommand = require.resolve('mocha-phantomjs-core');
|
||||
var phantomjsBinPath = require('phantomjs-prebuilt').path;
|
||||
var shouldCover = !!process.env.NYC_CONFIG;
|
||||
|
||||
function generate(options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@ -41,7 +43,7 @@ function generate(options) {
|
||||
}
|
||||
];
|
||||
|
||||
var myLasso = lasso.create({
|
||||
var lassoConfig = {
|
||||
outputDir: path.join(generatedDir, 'static'),
|
||||
urlPrefix: startServer ? '/static' : './static',
|
||||
bundlingEnabled: false,
|
||||
@ -56,7 +58,15 @@ function generate(options) {
|
||||
},
|
||||
require('./lasso-autotest-plugin')
|
||||
]
|
||||
});
|
||||
};
|
||||
|
||||
if(shouldCover) {
|
||||
lassoConfig.plugins.push(
|
||||
require('./lasso-istanbul-plugin')
|
||||
);
|
||||
}
|
||||
|
||||
var myLasso = lasso.create(lassoConfig);
|
||||
|
||||
var templateData = {
|
||||
lasso: myLasso,
|
||||
@ -119,12 +129,23 @@ function runTests(options) {
|
||||
return generate(options)
|
||||
.then((generated) => {
|
||||
console.log(`Running ${generated.url} using mocha-phantomjs...`);
|
||||
return spawn(mochaPhantomJSCommand, ['-p', phantomjsBinPath, generated.url], {
|
||||
var mochaPhantomJSOptions = { useColors:true };
|
||||
|
||||
if(shouldCover) {
|
||||
mochaPhantomJSOptions.hooks = 'mocha-phantomjs-istanbul';
|
||||
mochaPhantomJSOptions.coverageFile = getCoverageFile(options.testsFile);
|
||||
}
|
||||
|
||||
return spawn(phantomjsBinPath, [mochaPhantomJSCommand, generated.url, 'spec', JSON.stringify(mochaPhantomJSOptions)], {
|
||||
stdio: 'inherit'
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getCoverageFile(testsFile) {
|
||||
return './.nyc_output/'+md5Hex(testsFile)+'.json';
|
||||
}
|
||||
|
||||
exports.generate = generate;
|
||||
exports.runTests = runTests;
|
||||
|
||||
|
||||
21
test/browser-tests-runner/lasso-istanbul-plugin.js
Normal file
21
test/browser-tests-runner/lasso-istanbul-plugin.js
Normal file
@ -0,0 +1,21 @@
|
||||
var istanbul = require('istanbul-lib-instrument');
|
||||
|
||||
module.exports = function(lasso, pluginConfig) {
|
||||
var instrumenter = istanbul.createInstrumenter();
|
||||
|
||||
lasso.addTransform({
|
||||
stream: false,
|
||||
contentType: 'js',
|
||||
transform: function(code, context) {
|
||||
var file = context.dependency.file
|
||||
|
||||
if(!file || file.includes('node_modules/')
|
||||
|| file.includes('test/')
|
||||
|| file.includes('coverage/')
|
||||
|| file.includes('benchmark/')
|
||||
) return code;
|
||||
|
||||
return instrumenter.instrumentSync(code, context.dependency.file);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -32,5 +32,5 @@ describe('markoc' , function() {
|
||||
|
||||
testModule.test(helpers);
|
||||
done();
|
||||
});
|
||||
}, { timeout:20000 });
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user