NAME
App::Prove::Plugin::Waivers - (incomplete) 'prove' plugin support for TAP::DOM::Waivers
SYNOPSIS
Command-line usage:
# generally
prove -P Waivers=waiverspec.yml [...]
# example
prove -e cat -P Waivers=waiver.yml t/failed_IPv6.tap
DESCRIPTION
This plugin allows modifying TAP via TAP::DOM::Waivers. Read there for the motivation.
It loads a spec (waiver) file, loads the original TAP, converts it into an intermediate TAP-DOM, applies the waivers to that TAP-DOM, converts the patched TAP-DOM back to TAP and provides that to the TAP::Parser instead of the original TAP.
Example waiver config
A waiver.yml
contains a specification like this:
---
- comment: Force all failed IPv6 stuff to true
match_dpath:
- "//lines//description[value =~ /IPv6/]/../is_ok[value eq 0]/.."
patch:
is_ok: 1
has_todo: 1
is_actual_ok: 0
explanation: ignore failing IPv6 related tests
directive: TODO
This specifies to modify (patch) every not ok tests where the description matches the regex /IPv6/
. They are fixed by declaring them to be a #TODO test with the explanation.
See TAP::DOM::Waivers for description of the backend behind this prove plugin.
See TAP::DOM for description of the TAP-DOM data structure that is modified.
See Data::DPath for description of the xpath-like query language used to find the tests. It provides the power for fuzzy tracking of tests in ever changing test suites.
Waiver specification
A waiver file is a YAML representation of a waiver spec as described in TAP::DOM::Waivers. Please read there for the data structure and adapt it into YAML as shown in the SYNOPSIS.
METHODS
load
ACKNOWLEDGEMENTS
The prove plugin code is shamelessly stolen from Steve Purkis' App::Prove::Plugin::HTML.
SEE ALSO
AUTHOR
Steffen Schwigon <ss5@renormalist.net>
COPYRIGHT AND LICENSE
This software is copyright (c) 2020 by Steffen Schwigon.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.