2016-11-28 5 views
1

Angularプロジェクトでkarma/jasmineでテストカバレッジを実行し、ファイル./coverage/coverage.jsonにカバレッジを出力しています。これは私のグローバルテストカバレッジを取得イスタンブールとの1つのファイルのカバレッジを確認するにはどうすればよいですか?

./node_modules/istanbul/lib/cli.js check-coverage --lines 90 
Output: ERROR: Coverage for lines (89.1%) does not meet global threshold (90%) 

私はその後のようなコマンドを実行することができます。

しかし、私がしたいのは、ただ1つのファイルのカバレッジをチェックすることです。どうすればいい?

答えて

0

イスタンブールには組み込まれていないようですが、私ができることは要約JSONを作成し、それを端末で実行した後にノードで読むことです。カルマ設定キーなどのファイルでJSONの要約を生成する必要がある

まず、:

coverageReporter: { 
    reporters: [ 
     {type: 'json-summary', subdir: './', file: 'coverage.json'} 
    ] 
} 

その後はgitのすべての段階的なファイルを取得するには、端末のタスクを実行することができます。

(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を使用して行うことができますが、私は事前にコミットの実行を行うことができますので、私はシェルコマンドを望んでいました。

0

私はconfigファイルでこれを達成することができました。

instrumentation: 
    excludes: [ '!yourfile.js' ] 

です。

関連する問題