Он, кажется, не встроен в istanbul, но то, что я могу сделать, это создать резюме JSON и прочитать, что с узлом после запуска его в терминале.
Во-первых, конфигурация Карма должна генерировать сводку JSON с файлами в качестве ключей:
coverageReporter: {
reporters: [
{type: 'json-summary', subdir: './', file: 'coverage.json'}
]
}
Затем вы можете запустить терминальную задачу, чтобы получить все постановочные файлы в мерзавца.
(gulp karma)
ROOT_DIR=$(git rev-parse --show-toplevel)
STAGED_FILES=($(git diff --cached --name-only --diff-filter=ACM | grep ".js$"))
for file in ${STAGED_FILES}; do
echo "gulp coverage -f $ROOT_DIR/$file"
git show :$file | gulp coverage -f "$ROOT_DIR/$file"
done;
И задача глотка выглядит следующим образом:
gulp.task('coverage', function() {
var threshold = 90;
var coverageJSON = require('./coverage/coverage.json');
var metrics = [ 'lines', 'statements', 'functions', 'branches' ];
for (var i in metrics) {
if (coverageJSON[ argv.f ][ metrics[ i ] ].pct < threshold) {
console.log('ERROR:', argv.f, 'does not meet', threshold, 'percent coverage of', metrics[ i ]);
process.exit(0);
}
}
});
Технически, концевая часть может быть сделана с помощью exec
в узле, но я хотел команду оболочки, так что я могу сделать, предварительно совершить выполнение.