package Test2::Manual::Testing::Todo; use strict; use warnings; our $VERSION = '0.000162'; 1; __END__ =head1 NAME Test2::Manual::Testing::Todo - Tutorial for marking tests as TODO. =head1 DESCRIPTION This tutorial covers the process of marking tests as TODO. It also describes how TODO works under the hood. =head1 THE TOOL use Test2::Tools::Basic qw/todo/; =head2 TODO BLOCK This form is low-magic. All tests inside the block are marked as todo, tests outside the block are not todo. You do not need to do any variable management. The flaw with this form is that it adds a couple levels to the stack, which can break some high-magic tests. Overall this is the preferred form unless you have a special case that requires the variable form. todo "Reason for the todo" => sub { ok(0, "fail but todo"); ... }; =head2 TODO VARIABLE This form maintains the todo scope for the life of the variable. This is useful for tests that are sensitive to scope changes. This closely emulates the L style which localized the C<$TODO> package variable. Once the variable is destroyed (set it to undef, scope end, etc) the TODO state ends. my $todo = todo "Reason for the todo"; ok(0, "fail but todo"); ... $todo = undef; =head1 MANUAL TODO EVENTS use Test2::API qw/context/; sub todo_ok { my ($bool, $name, $todo) = @_; my $ctx = context(); $ctx->send_event('Ok', pass => $bool, effective_pass => 1, todo => $todo); $ctx->release; return $bool; } The L event has a C field which should have the todo reason. The event also has the C and C fields. The C field is the actual pass/fail value. The C is used to determine if the event is an actual failure (should always be set tot true with todo). =head1 HOW THE TODO TOOLS WORK UNDER THE HOOD The L library gets the current L instance and adds a filter. The filter that is added will set the todo and effective pass fields on any L events that pass through the hub. The filter also converts L events into L events. =head1 SEE ALSO L - Primary index of the manual. =head1 SOURCE The source code repository for Test2-Manual can be found at F. =head1 MAINTAINERS =over 4 =item Chad Granum Eexodist@cpan.orgE =back =head1 AUTHORS =over 4 =item Chad Granum Eexodist@cpan.orgE =back =head1 COPYRIGHT Copyright 2018 Chad Granum Eexodist@cpan.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F =cut