phl v1.0.1
phl
This is a slimmer es6 version and fork of nyc
Supporting currently Mac OSX only at the time, if you want better support use nyc.
phl npm test
a code coverage tool built on istanbul that works for applications that spawn subprocesses.
Instrumenting Your Code
Simply run your tests with phl
, and it will collect coverage information for
each process and store it in phl_output
.
phl npm test
you can pass a list of Istanbul reporters that you'd like to run:
phl --reporter=lcov --reporter=text-lcov npm test
If you're so inclined, you can simply add phl to the test stanza in your package.json:
{
"script": {
"test": "phl tap ./test/*.js"
}
}
Checking Coverage
phl exposes istanbul's check-coverage tool. After running your tests with phl, simply run:
phl check-coverage --lines 95 --functions 95 --branches 95
This feature makes it easy to fail your tests if coverage drops below a given threshold.
Running Reports
Once you've run your tests with phl, simply run:
phl report
To view your coverage report:
--------------------|-----------|-----------|-----------|-----------|
File | % Stmts |% Branches | % Funcs | % Lines |
--------------------|-----------|-----------|-----------|-----------|
./ | 85.96 | 50 | 75 | 92.31 |
index.js | 85.96 | 50 | 75 | 92.31 |
./test/ | 98.08 | 50 | 95 | 98.04 |
phl-test.js | 98.08 | 50 | 95 | 98.04 |
./test/fixtures/ | 100 | 100 | 100 | 100 |
sigint.js | 100 | 100 | 100 | 100 |
sigterm.js | 100 | 100 | 100 | 100 |
--------------------|-----------|-----------|-----------|-----------|
All files | 91.89 | 50 | 86.11 | 95.24 |
--------------------|-----------|-----------|-----------|-----------|
you can use any reporters that are supported by istanbul:
phl report --reporter=lcov
Including and Excluding Files
By default phl does not instrument files in node_modules
, or test
for coverage. You can override this setting in your package.json, by
adding the following configuration:
{"config": {
"phl": {
"exclude": [
"node_modules/"
]
}
}}
If you need coverage for files/directories inside node_modules
you can include them
like so:
{"config": {
"phl": {
"include": [
"node_modules/utils"
]
}
}}
For a better illustration the following:
{"config": {
"phl": {
"exclude": [
"node_modules/"
],
"include": [
"node_modules/utils"
]
}
}}
excludes all files inside of node_modules
directory other than the utils directory