Search code examples
perlreportingcode-coveragekill

Can I force Perl Devel::Cover to generate a coverage report if I killed the build testcover process before it was finished?


If I am able to start up Devel::Cover successfully and it starts to collect data in the cover_db directory, can I then kill the process and then after the fact get Devel::Cover or some other utility to process those binary Devel::Cover run files and structure files into the HTML coverage report?

To ask the question another way ... Can I use Devel::Cover to get a coverage report for a process that I am unable to stop, other than by killing the process?

This question is related to: How do I get code coverage of Perl CGI script when executed by Selenium?


Solution

  • The way I usually handle this (say, for running tests on servers) is:

    • Generate a __DIE__ handler for the Perl process. This ensures that the process completes normally and Devel::Cover finishes the DB population

    • Send SIGINT to the process to trigger the new DIE handler.

    • run cover program on the cover_db directory after the process is dead.