Skip to content

Commit

Permalink
v0.2.5
Browse files Browse the repository at this point in the history
  • Loading branch information
tenorok committed Oct 20, 2014
2 parents 7634e63 + 9829481 commit 4dd22de
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 26 deletions.
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,15 @@ var a = (function () { return 'a'; }).call(global),

##### Опция `-i, --istanbul`

Опция позволяет указать имя модуля, для которого предполагается запуск [istanbul](https://github.com/gotwarlost/istanbul).
В результирующем файле у каждого модуля, который необходим для указанного модуля
будет добавлен комментарий, исключающий его из оценки покрытия тестами.
Опция позволяет перечислить имена модулей, для которых предполагается запуск [istanbul](https://github.com/gotwarlost/istanbul).
Для всех остальных модулей будет добавлен комментарий, исключающий их из оценки покрытия тестами.

./node_modules/.bin/definer -i b all.js

Возможно указание нескольких модулей через запятую.

./node_modules/.bin/definer -i b,c all.js

По умолчанию комментарии не добавляются, поскольку запуск оценки покрытия тестами не предполагается.

##### Опция `-v, --verbose`
Expand Down
8 changes: 5 additions & 3 deletions cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ const path = require('path'),
commander
.version('0.0.4')
.usage('[options] <file>')
.option('-d, --directory <path1,path2>', 'directory of modules, comma delimited', '.')
.option('-d, --directory <path1,pathN>', 'directory of modules, comma delimited', '.')
.option('-m, --module <name>', 'target module name')
.option('-i, --istanbul <name>', 'target module name to coverage by istanbul')
.option('-i, --istanbul <name1,nameN>', 'names of modules to coverage by istanbul, comma delimited',
function(modules) { return modules.split(','); })
.option('-p, --postfix <postfix>', 'postfix to find files')
.option('-v, --verbose <modes>', 'l - log, i - info, w - warn, e - error', function(modes) { return modes.split(''); })
.option('-v, --verbose <modes>', 'l - log, i - info, w - warn, e - error',
function(modes) { return modes.split(''); })
.option('-c, --config <file>', 'json format config', defaultConfigFile)
.parse(process.argv);

Expand Down
26 changes: 18 additions & 8 deletions maker.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ function Maker(options) {
* @type {{
* directory: String|String[],
* module: String|boolean,
* istanbul: String|boolean,
* istanbul: String|String[]|boolean,
* postfix: String,
* verbose: Array,
* clean: Object,
Expand Down Expand Up @@ -109,6 +109,14 @@ function Maker(options) {
*/
Maker.cacheFiles = {};

/**
* Комментарий для указания istanbul игнорировать блоки кода
* @private
* @constant
* @type {String}
*/
Maker.ISTANBUL_COMMENT = '/* istanbul ignore next */';

Maker.prototype = {

/**
Expand Down Expand Up @@ -591,6 +599,7 @@ Maker.prototype = {
if(!this.clean.length) return '';

this.clean.unshift(
(this.options.istanbul !== false ? Maker.ISTANBUL_COMMENT : '') +
'(function(undefined) {',
'var exports = undefined, modules = undefined, define = undefined;'
);
Expand Down Expand Up @@ -641,7 +650,7 @@ Maker.prototype = {
var closure = [
module.name,
' = ',
module.istanbul === false ? '/* istanbul ignore next */' : '',
module.istanbul === false ? Maker.ISTANBUL_COMMENT : '',
'(',
module.body,
').call(global'
Expand Down Expand Up @@ -883,15 +892,16 @@ Maker.prototype = {
* @returns {Object}
*/
markIstanbul: function(modules) {
var moduleToCoverage = this.options.istanbul;
if(!moduleToCoverage) return modules;
var modulesToCoverage = this.options.istanbul;
if(!modulesToCoverage) return modules;

if(typeof modulesToCoverage === 'string') {
modulesToCoverage = [modulesToCoverage];
}

for(var i = 0; i < modules.length; i++) {
if(modules[i].name !== moduleToCoverage) {
if(!~modulesToCoverage.indexOf(modules[i].name)) {
modules[i].istanbul = false;
} else {
modules[i].istanbul = true;
break;
}
}

Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "definer",
"description": "Easiest module system",
"version": "0.2.4",
"version": "0.2.5",
"repository": {
"type": "git",
"url": "https://github.com/tenorok/definer.git"
Expand All @@ -24,7 +24,7 @@
"devDependencies": {
"mocha": "~1.15.1",
"chai": "~1.8.1",
"jsdoc": "~3.3.0"
"jsdoc": "3.3.0-alpha8"
},
"main": "main.js",
"bin": {
Expand Down
20 changes: 17 additions & 3 deletions test/maker/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ var closure = {
' ){\n' +
' return a + b + \'c\';\n' +
' }).call(global, a, b, c),\n' +
'e = (function (d) { return d + \'e\'; }).call(global, d),\n' +
'e = /* istanbul ignore next */(function (d) { return d + \'e\'; }).call(global, d),\n' +
'f = (function () { return \'f\'; }).call(global);\n' +
'})(this);';
},
Expand All @@ -290,7 +290,7 @@ var closure = {
return '(function(global, undefined) {\n' +
'var a = /* istanbul ignore next */(function () { return \'a\'; }).call(global),\n' +
'b = (function (a){return a + \'b\';}).call(global, a),\n' +
'c = (function (a, b) {\n' +
'c = /* istanbul ignore next */(function (a, b) {\n' +
' return a + b + \'c\';\n' +
'}).call(global, a, b);\n' +
'})(this);';
Expand All @@ -304,7 +304,21 @@ var closure = {
'var z = /* istanbul ignore next */definer.export("z", (function () { return { nameZ: \'valueZ\' }; }).call(global)),\n' +
'y = (function (z) { return \'z\'; }).call(global, z);\n' +
'})(this);';
}
},

getClosureStringMakeCleanFilesModuleCIstanbul: function() {
return '/* istanbul ignore next */(function(undefined) {\n' +
'var exports = undefined, modules = undefined, define = undefined;\n' +
'(function(global) { global.$ = \'jquery\'; })(this);\n' +
'(function(global) { (global.$ || {}).ui = \'jquery.ui\'; })(this);\n' +
'(function(global) { (global.$ || {}).plugin = \'jquery.plugin\'; })(this);\n' +
'}).call(this);\n' +
'(function(global, undefined) {\n' +
'var $ = global.$,\n' +
'c = (function ($) { return \'c\'; }).call(global, $);\n' +
'["$"].forEach(function(g) { delete global[g]; });\n' +
'})(this);';
},

};

Expand Down
19 changes: 12 additions & 7 deletions test/maker/make-istanbul.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ describe('Сборка модулей для тестирования покры
var savePromise = vow.promise(),
saveFilePath = path.join(__dirname, 'modules/all.js');

it('Все обычные модули', function(done) {
it('Все обычные модули и несколько целевых модулей для istanbul', function(done) {

new Maker({
directory: path.join(__dirname, 'modules'),
istanbul: 'd',
istanbul: ['d', 'f'],
verbose: ['error']
}).make(saveFilePath).then(function() {

Expand All @@ -29,7 +29,7 @@ describe('Сборка модулей для тестирования покры
}).done();
});

it('Заданный модуль', function(done) {
it('Заданный модуль для сборки с одним целевым модулем для istanbul', function(done) {

new Maker({
directory: path.join(__dirname, 'modules'),
Expand All @@ -47,7 +47,7 @@ describe('Сборка модулей для тестирования покры
}).done();
});

it('Заданные модуль с присутствием экспортируемых модулей', function(done) {
it('Заданный модуль с присутствием экспортируемых модулей', function(done) {

new Maker({
directory: path.join(__dirname, 'modules2'),
Expand Down Expand Up @@ -75,10 +75,15 @@ describe('Сборка модулей для тестирования покры

describe('CLI.', function() {

var cli = new helper.testCLI('./bin/definer -v e -d test/maker/modules/').setTarget('test/maker/modules/all.js');
var cli = new helper.testCLI('./bin/definer -v e').setTarget('test/maker/modules/all.js');

it('Все обычные модули', function(done) {
cli.exec('-i d', helper.getClosureStringIstanbul(), done);
it('Все обычные модули и несколько целевых модулей для istanbul', function(done) {
cli.exec('-d test/maker/modules/ -i d,f', helper.getClosureStringIstanbul(), done);
});

it('Clean-скрипты так же должны предваряться istanbul-комментарием', function(done) {
cli.exec('-d test/maker/clean/ -c test/maker/clean/clean.json -i c -m c',
helper.getClosureStringMakeCleanFilesModuleCIstanbul(), done);
});

after(function(done) {
Expand Down

0 comments on commit 4dd22de

Please sign in to comment.