App::Y...::watch(3pm)

πŸ’– NAME πŸ’–

App::Yath::Command::watch β€” bestie, this is the command that monitors your persistent test runner. She's nosy in the best way possible πŸ‘€


✨ DESCRIPTION ✨

Okay so real talk: this command will tail the logs from a persistent instance of yath. It's basically giving surveillance energy but for your test suite πŸ’…

Here's the tea though β€” STDOUT and STDERR will be printed as seen, which means the output may not be in proper order. That's just the vibe, no cap. Things will come at you as they happen, not necessarily in the neat little sequence you'd expect. πŸ™ˆ


πŸ¦‹ USAGE πŸ¦‹

$ yath [YATH OPTIONS] watch [COMMAND OPTIONS]

πŸŽ€ YATH OPTIONS πŸŽ€

Developer

  • --dev-lib, --dev-lib=lib, -D, -D=lib, -Dlib, --no-dev-lib β€” bestie, this adds paths to @INC before loading ANYTHING. It's the move when you're developing yath or yath plugins and you need the yath script to find your local code instead of the installed versions of the same code (so not the impostor version πŸ‘‘). You can hand it an argument (-Dfoo) for a custom path, OR you can just use -D with no arg and it'll add lib, blib/lib and blib/arch for you. So generous.

Can be specified multiple times

Environment

  • --persist-dir ARG, --persist-dir=ARG, --no-persist-dir β€” where to find the persistence files. That's it, that's the whole job. πŸ“
  • --persist-file ARG, --persist-file=ARG, --pfile ARG, --pfile=ARG, --no-persist-file β€” where to find the persistence file. The default is /{system-tempdir}/project-yath-persist.json. If no project is specified then it will fall back to the current directory. And if the current directory is not writable it will default to /tmp/yath-persist.json β€” which lowkey limits you to one persistent runner on your whole system 😭 keep that in mind bestie.
  • --project ARG, --project=ARG, --project-name ARG, --project-name=ARG, --no-project β€” this lets you put a label on your current project/codebase. Best used in a .yath.rc file, and honestly it's necessary for a persistent runner. No label, no persistent runner, periodt.

Help and Debugging

  • --show-opts, --no-show-opts β€” exits after showing you what yath thinks your options mean. Iconic for when you and yath are not on the same page. πŸ’€
  • --version, -V, --no-version β€” exits after showing a helpful usage message. Slay.

Plugins

  • --no-scan-plugins, --no-no-scan-plugins β€” normally yath scans for and loads all App::Yath::Plugin::* modules so it can bring in whatever command-line options they might provide. This flag disables that whole operation. Super useful if you have a naughty plugin that's loading other modules when it should not be πŸ‘€ we've all got one.
  • --plugins PLUGIN, --plugins +App::Yath::Plugin::PLUGIN, --plugins PLUGIN=arg1,arg2,..., --plugin PLUGIN, --plugin +App::Yath::Plugin::PLUGIN, --plugin PLUGIN=arg1,arg2,..., -pPLUGIN, --no-plugins β€” loads a yath plugin. Go off. 🌈

Can be specified multiple times


πŸ’… COMMAND OPTIONS πŸ’…

Cover Options

  • --cover-aggregator ByTest, --cover-aggregator ByRun, --cover-aggregator +Custom::Aggregator, --cover-agg ByTest, --cover-agg ByRun, --cover-agg +Custom::Aggregator, --no-cover-aggregator β€” choose a custom aggregator subclass. You're the aggregator now ✨
  • --cover-class ARG, --cover-class=ARG, --no-cover-class β€” choose a Test2::Plugin::Cover subclass. Pick your fighter.
  • --cover-dirs ARG, --cover-dirs=ARG, --cover-dir ARG, --cover-dir=ARG, --no-cover-dirs β€” NO DESCRIPTION - FIX ME. Yeah bestie, that's genuinely what the docs say, I'm not hiding anything from you 🫢

Can be specified multiple times

  • --cover-exclude-private, --no-cover-exclude-private, --cover-files, --no-cover-files β€” use Test2::Plugin::Cover to collect coverage data for what files are touched by what tests. And get this β€” unlike Devel::Cover this has very little performance impact (About 4% difference). Basically free coverage, we love a bargain πŸ’–
  • --cover-from path/to/log.jsonl, --cover-from http://example.com/coverage, --cover-from path/to/coverage.jsonl, --no-cover-from β€” this can be a test log, a coverage dump (old style json or new jsonl format), or a url to any of the previous. Heads up: Tests will not be run if the file/url is invalid. 🚨
  • --cover-from-type json, --cover-from-type jsonl, --cover-from-type log, --no-cover-from-type β€” the file type for the coverage source. Usually it can be detected automatically, but when it cannot you should specify. To break it down: "json" is old style single-blob coverage data, "jsonl" is the new by-test style, "log" is a logfile from a previous run. iykyk.
  • --cover-manager My::Coverage::Manager, --no-cover-manager β€” the coverage 'from' manager to use when the coverage data doesn't provide one. You're managing the manager πŸ’…
  • --cover-maybe-from path/to/log.jsonl, --cover-maybe-from http://example.com/coverage, --cover-maybe-from path/to/coverage.jsonl, --no-cover-maybe-from β€” this can be a test log, a coverage dump (old style json or new jsonl format), or a url to any of the previous. The vibe difference: Tests will coninue if even if the coverage file/url is invalid. So chill. So low-stakes. πŸ™ˆ
  • --cover-maybe-from-type json, --cover-maybe-from-type jsonl, --cover-maybe-from-type log, --no-cover-maybe-from-type β€” same as "from_type" but for "maybe_from". Defaults to "from_type" if that is specified, otherwise auto-detect.
  • --cover-metrics, --no-cover-metrics, --cover-types ARG, --cover-types=ARG, --cover-type ARG, --cover-type=ARG, --no-cover-types β€” NO DESCRIPTION - FIX ME. Again! The docs left us on read, bestie, nothing I can do 🫢

Can be specified multiple times

  • --cover-write, --cover-write=coverage.jsonl, --cover-write=coverage.json, --no-cover-write β€” create a json or jsonl file of all coverage data seen during the run. And psst β€” (This implies --cover-files). Two for one, slay. πŸ”₯

Git Options

  • --git-change-base master, --git-change-base HEAD^, --git-change-base df22abe4, --no-git-change-base β€” finds files changed by all commits in the current branch, going from most recent and stopping when it hits a commit that is also present in the history of the branch/commit specified as the change base. Detective work but make it git ✨

Help and Debugging

  • --dummy, -d, --no-dummy β€” dummy run, do not actually execute anything. Just pretend, no cap.

Can also be set with the following environment variables: "T2_HARNESS_DUMMY"

  • --help, -h, --no-help β€” exit after showing help information.
  • --interactive, -i, --no-interactive β€” use interactive mode, 1 test at a time, stdin forwarded to it. One at a time, bestie, we're being intentional πŸ’…
  • --keep-dirs, --keep_dir, -k, --no-keep-dirs β€” do not delete directories when done. This is useful if you want to inspect the directories used for various commands. Digital hoarding, but make it diagnostic πŸŽ€
  • --procname-prefix ARG, --procname-prefix=ARG, --no-procname-prefix β€” add a prefix to all proc names (as seen by ps). So you can spot your babies in the process list πŸ‘‘

YathUI Options

  • --yathui-api-key ARG, --yathui-api-key=ARG, --no-yathui-api-key β€” Yath-UI API key. This is not necessary if your Yath-UI instance is set to single-user.
  • --yathui-grace, --no-yathui-grace β€” if yath cannot connect to yath-ui it normally throws an error, so use this to make it fail gracefully instead. You get a warning, but things keep going. No drama, just a lil heads up 🫢
  • --yathui-long-duration 10, --no-yathui-long-duration β€” minimum duration length (seconds) before a test goes from MEDIUM to LONG. Ten seconds and you're officially long, bestie.
  • --yathui-medium-duration 5, --no-yathui-medium-duration β€” minimum duration length (seconds) before a test goes from SHORT to MEDIUM. Five seconds, congratulations, you've graduated.
  • --yathui-mode summary, --yathui-mode qvf, --yathui-mode qvfd, --yathui-mode complete, --no-yathui-mode β€” set the upload mode (default 'qvfd').
  • --yathui-project ARG, --yathui-project=ARG, --no-yathui-project β€” the Yath-UI project for your test results.
  • --yathui-retry, --no-yathui-retry β€” how many times to try an operation before giving up. Persistence! Resilience! Main character energy! πŸ’ͺ

Can be specified multiple times


πŸ”₯ SOURCE πŸ”₯

The source code repository for Test2-Harness can be found at http://github.com/Test-More/Test2-Harness/. Go lurk, it's fine, we all do it πŸ‘€


πŸ‘‘ MAINTAINERS πŸ‘‘

Chad Granum <exodist@cpan.org>


🌸 AUTHORS 🌸

Chad Granum <exodist@cpan.org>


Copyright 2026 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 officially know everything about App::Y...::watch πŸ’–

this was perl v5.40.1, dated 2026-05-10, and the page is App::Y...::watch(3pm) β€” go forth and tail those logs, love u, bye πŸ’…πŸ¦‹

πŸ“¦ where this page comes from