I have the following system running: It executes tests for large project on CI server with code coverage (with Devel::Cover ) turned on,
after that it creates map telling which test executes which module. I.e. if, when running test1.t and modules Mod1.pm and Mod2.pm have non-zero statement coverage,
it add record to map: test1.t(Mod1.pm, Mod2.pm).
Next, that map is used to determine which tests to be ran in next CI run. I.e. if I have record test1.t(Mod1.pm, Mod2.pm), that means when Mod1.pm modified, then
test1.t should be ran, and if Mod3.pm modified test1.t should NOT be run. This way I run fewer tests each time and save lots of time running tests.
Question is: Devel::Cover is too slow, I need to find thing which is faster than Devel::Cover, but still fit my need. It can be as simple as:
- Devel::Cover hack which stop collecting stats (and start work faster) for the file after determining that the file has non-zero coverage.
- Some other module to get info that "some" code is executed from module X during run (except code in "BEGIN" blocks).