- NON-TAP FORMATTER
- TESTS ARE RUN VIA FORK BY DEFAULT
App::Yath::Converting - Things you may need to change in your tests before you can use yath.
By default yath tells any Test2 or Test::Builder tests to use Test2::Formatter::Stream instead of Test2::Formatter::TAP. This is done in order to make sure as much data as possible makes it to yath, TAP is a lossy formater by comparison.
This is not normally a problem, but tests that do strange things with STDERR/STDOUT, or try to intercept output from the regular TAP formatter can have issues with this.
You can add a harness directive to the top of offending tests that tell the harness those specific tests should still use the TAP formatter.
#!/usr/bin/perl # HARNESS-NO-STREAM ...
This directive can come after the
#! line, and after use statements, but must come BEFORE any empty lines or runtime statements.
You can run yath with the
--no-stream option, which will have tests default to TAP. This is not recommended as TAP is lossy.
The default mode for yath is to preload a few things, then fork to spawn each test. This is a complicated procedure, and it uses goto::file under the hood. Sometimes you have tests that simply will not work this way, or tests that verify specific libraries are not already loaded.
You can use this harness directive inside your tests to tell yath not to fork, but to instead launch a new perl process to run the test.
#!/usr/bin/perl # HARNESS-NO-PRELOAD ...
Both these options tell yath not to preload+fork, but to run ALL tests in new processes. This is slow, it is better to mark specific tests that have issues in preload mode.
The source code repository for Test2-Harness can be found at http://github.com/Test-More/Test2-Harness/.
Copyright 2020 Chad Granum <firstname.lastname@example.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.