table of contents
        
      
      
    | Test2::Manual::Tooling::Plugin::TestingDone(3pm) | Perl Programmers Reference Guide | Test2::Manual::Tooling::Plugin::TestingDone(3pm) | 
NAME¶
Test2::Manual::Tooling::Plugin::TestingDone - Run code when the test file is finished, or when done_testing is called.
DESCRIPTION¶
This is a way to add behavior to the end of a test file. This code is run either when done_testing() is called, or when the test file has no more run-time code to run.
When triggered by done_testing() this will be run BEFORE the plan is calculated and sent. This means it IS safe to make test assertions in this callback.
COMPLETE CODE UP FRONT¶
    package Test2::Plugin::MyPlugin;
    use Test2::API qw{test2_add_callback_testing_done};
    sub import {
        my $class = shift;
        test2_add_callback_testing_done(sub {
            ok(!$some_global, '$some_global was not set');
            print "The test file is done, or done_testing was just called\n"
        });
    }
    1;
LINE BY LINE¶
- use Test2::API qw{test2_add_callback_testing_done};
 - This imports the test2_add_callback_testing_done() callback.
 - test2_add_callback_testing_done(sub { ... });
 - This adds our callback to be called when testing is done.
 - ok(!$some_global, '$some_global was not set')
 - It is safe to make assertions in this type of callback. This code simply asserts that some global was never set over the course of the test.
 - print "The test file is done, or done_testing was just called\n"
 - This prints a message when the callback is run.
 
UNDER THE HOOD¶
Before test2_add_callback_testing_done() this kind of thing was still possible, but it was hard to get right, here is the code to do it:
    test2_add_callback_post_load(sub {
        my $stack = test2_stack();
        # Insure we have at least one hub, but we do not necessarily want the
        # one this returns.
        $stack->top;
        # We want the root hub, not the top one.
        my ($root) = Test2::API::test2_stack->all;
        # Make sure the hub does not believe nothing has happened.
        $root->set_active(1);
        # Now we can add our follow-up code
        $root->follow_up(sub {
            # Your callback code here
        });
    });
SEE ALSO¶
Test2::Manual - Primary index of the manual.
SOURCE¶
The source code repository for Test2-Manual can be found at https://github.com/Test-More/test-more/.
MAINTAINERS¶
AUTHORS¶
COPYRIGHT¶
Copyright Chad Granum <exodist@cpan.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| 2025-07-11 | perl v5.42.0 |