.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Test2::Manual::Tooling 3pm" .TH Test2::Manual::Tooling 3pm "2019-01-20" "perl v5.28.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Test2::Manual::Tooling \- Manual page for tool authors. .SH "DESCRIPTION" .IX Header "DESCRIPTION" This section covers writing new tools, plugins, and other Test2 components. .SH "TOOL TUTORIALS" .IX Header "TOOL TUTORIALS" .SS "\s-1FIRST TOOL\s0" .IX Subsection "FIRST TOOL" Test2::Manual::Tooling::FirstTool \- Introduction to writing tools by cloning \&\fBok()\fR. .SS "\s-1MOVING FROM\s0 Test::Builder" .IX Subsection "MOVING FROM Test::Builder" Test2::Manual::Tooling::TestBuilder \- This section maps Test::Builder methods to Test2 concepts. .SS "\s-1NESTING TOOLS\s0" .IX Subsection "NESTING TOOLS" Test2::Manual::Tooling::Nesting \- How to call other tools from your tool. .SS "\s-1TOOLS WITH SUBTESTS\s0" .IX Subsection "TOOLS WITH SUBTESTS" Test2::Manual::Tooling::Subtest \- How write tools that make use of subtests. .SS "\s-1TESTING YOUR TEST TOOLS\s0" .IX Subsection "TESTING YOUR TEST TOOLS" Test2::Manual::Tooling::Testing \- How to write tests for your test tools. .SH "PLUGIN TUTORIALS" .IX Header "PLUGIN TUTORIALS" .SS "\s-1TAKING ACTION WHEN A NEW TOOL STARTS\s0" .IX Subsection "TAKING ACTION WHEN A NEW TOOL STARTS" Test2::Manual::Tooling::Plugin::ToolStarts \- How to add behaviors that occur when a tool starts work. .SS "\s-1TAKING ACTION AFTER A TOOL IS DONE\s0" .IX Subsection "TAKING ACTION AFTER A TOOL IS DONE" Test2::Manual::Tooling::Plugin::ToolCompletes \- How to add behaviors that occur when a tool completes work. .SS "\s-1TAKING ACTION AT THE END OF TESTING\s0" .IX Subsection "TAKING ACTION AT THE END OF TESTING" Test2::Manual::Tooling::Plugin::TestingDone \- How to add behaviors that occur when testing is complete (\s-1IE\s0 done_testing, or end of test). .SS "\s-1TAKING ACTION JUST BEFORE EXIT\s0" .IX Subsection "TAKING ACTION JUST BEFORE EXIT" Test2::Manual::Tooling::Plugin::TestExit \- How to safely add pre-exit behaviors. .SH "WRITING A SIMPLE JSONL FORMATTER" .IX Header "WRITING A SIMPLE JSONL FORMATTER" Test2::Manual::Tooling::Formatter \- How to write a custom formatter, in our case a \s-1JSONL\s0 formatter. .SH "WHERE TO FIND HOOKS AND APIS" .IX Header "WHERE TO FIND HOOKS AND APIS" .IP "global \s-1API\s0" 4 .IX Item "global API" Test2::API is the global \s-1API.\s0 This is primarily used by plugins that provide global behavior. .IP "In hubs" 4 .IX Item "In hubs" Test2::Hub is the base class for all hubs. This is where hooks for manipulating events, or running things at the end of testing live. .SH "SEE ALSO" .IX Header "SEE ALSO" Test2::Manual \- Primary index of the manual. .SH "SOURCE" .IX Header "SOURCE" The source code repository for Test2\-Manual can be found at \&\fIhttps://github.com/Test\-More/Test2\-Suite/\fR. .SH "MAINTAINERS" .IX Header "MAINTAINERS" .IP "Chad Granum " 4 .IX Item "Chad Granum " .SH "AUTHORS" .IX Header "AUTHORS" .PD 0 .IP "Chad Granum " 4 .IX Item "Chad Granum " .PD .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2018 Chad Granum . .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .PP See \fIhttp://dev.perl.org/licenses/\fR