The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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

prove, App::Prove

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.