This is achieved by injecting our parser. When a result appears, it
persists it in the parser object and enriches it with timing information.
This way we can get rid of the inaccurate timing per assert hack, as well
as of the temporary TAP files in exchange for another invasive hack...
If parser callbacks were stackable, we could just register callbacks
before calling TAP::Harness::runtests, but they are not and if we did
register them, we could override user's callbacks and break compatibility
with TAP::Harness.
This is achieved by injecting our parser. When a result appears, it persists it in the parser object and enriches it with timing information. This way we can get rid of the inaccurate timing per assert hack, as well as of the temporary TAP files in exchange for another invasive hack...
If parser callbacks were stackable, we could just register callbacks before calling TAP::Harness::runtests, but they are not and if we did register them, we could override user's callbacks and break compatibility with TAP::Harness.