douglasduteil / isparta

:skull: A code coverage tool for ES6 (babel/6to5)
Do What The F*ck You Want To Public License
642 stars 47 forks source link

Remove process.exit(0) from processEnding to fix false positives on CI server #113

Open nathanmarks opened 8 years ago

nathanmarks commented 8 years ago

FYI, there were already 4 failing tests -- this patch didn't cause those.

Using substack/tape as an example, the test harness listens for process.exit before printing results, and conditionally calling process.exit() with a non zero exit code.

I noticed that with a failing tests, tape does not even print the results because the exit routine is hijacked:

image

At the moment, the processEnding function in cover.js causes the process to exit with an exit code of 0 (as long as istanbul has no errors with coverage). As a consequence, the tests are assumed to have finished without error. This means that generating coverage on travis (or any other CI server) requires running the test suite twice unless you want to get false positives.

Correct me if I'm wrong -- but removing this process.exit() call shouldn't affect any users unless their test suite hangs by itself.