App::Y...verting(3pm)
π App::Y...verting(3pm) β the manual page bestie, but make it a group chat
okay so real talk: this is App::Y...verting, a page from the User Contributed Perl Documentation collection, and it's literally just the "things you gotta change in your tests before you can use yath" list. no cap. it's the glow-up guide your test suite didn't know it needed. π¦
β¨ NAME β¨
App::Y...verting β the stuff you may need to change in your tests before you can use yath. π
πΈ NON-TAP FORMATTER πΈ
so by default yath tells any Test2 or Test::Builder tests to use Test2::Formatter::Stream instead of Test2::Formatter::TAP. why? because the goal is to get as much data as possible to yath, and TAP is, hate to say it, a lossy formatter by comparison. it's giving β¨bottleneckβ¨.
normally this is not a problem at all, bestie. but β and here's the tea β tests that do strange things with STDERR/STDOUT, or that try to intercept output from the regular TAP formatter, can lowkey have issues with this. π«
π SOLUTIONS π
π₯ HARNESS-NO-STREAM
you can add a harness directive to the top of the offending tests that tells the harness those specific tests should still use the TAP formatter. iconic behavior.
#!/usr/bin/perl
# HARNESS-NO-STREAM
...
this directive can come after the #! line, and after use statements, but it must come BEFORE any empty lines or runtime statements. do not skip that part. periodt. π
π¦ --no-stream
you can also run yath with the --no-stream option, which will have tests default to TAP.
not recommended though bestie, because TAP is lossy. π
π TESTS ARE RUN VIA FORK BY DEFAULT π
the default mode for yath is to preload a few things, then fork to spawn each test. it's a complicated procedure, and it uses goto::file under the hood. ngl sometimes you have tests that simply will not work this way, or tests that verify specific libraries are not already loaded. vibe check: failed. π
π SOLUTIONS π
π HARNESS-NO-PRELOAD
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. slay.
#!/usr/bin/perl
# HARNESS-NO-PRELOAD
...
π --no-fork
π --no-preload
both of these options tell yath not to preload+fork, but to run ALL tests in new processes.
it's slow though. like, slow slow. it is better to mark specific tests that have issues in preload mode. β¨ targeted, not blanket β¨
π§ SOURCE π§
the source code repository for Test2-Harness can be found at
http://github.com/Test-More/Test2-Harness/
π MAINTAINERS π
Chad Granum <exodist@cpan.org>
β AUTHORS β
Chad Granum <exodist@cpan.org>
π COPYRIGHT π
Copyright 2020 Chad Granum <exodist7@gmail.com>.
this program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See
http://dev.perl.org/licenses/
and that's the whole page bestie, you ate π
β¨ this was perl v5.40.1, dated 2026-05-10, and yep β it's still App::Y...verting(3pm) at the top and the bottom, main character energy from start to finish. ππ¦π
π¦ where this page comes from
- ubuntu stonking: libtest2-harness-perl 1.000172-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms