TEST2::MANUAL::TOOLING::PLUGIN::TESTINGDONE(3pm)

✨ NAME ✨

This is Test2::Manual::Tooling::Plugin::TestingDone(3pm) β€” Run code when the test file is finished, or when done_testing is called. πŸ’…

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so this is a way to add behavior to the end of a test file. The code runs either when done_testing() is called, or when the test file has no more run-time code to run. 🫢

Timing check, bestie: when it’s triggered by done_testing(), this runs BEFORE the plan is calculated and sent. That means it IS safe to make test assertions in this callback. No cap. ✨

πŸŽ€ COMPLETE CODE UP FRONT πŸŽ€

Here’s the whole thing up front, iconic and complete:

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/. Go look, bestie. 🫢

πŸ‘‘ MAINTAINERS πŸ‘‘

  • Chad Granum <exodist@cpan.org> β€” maintainer energy. πŸ‘‘

πŸ¦‹ AUTHORS πŸ¦‹

  • Chad Granum <exodist@cpan.org> β€” author icon. ✨

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.

See http://dev.perl.org/licenses/.

xoxo bestie β€” this page is Test2::Manual::Tooling::Plugin::TestingDone(3pm) from perl v5.42.3 and dated 2026-11-03. slay and bye! πŸ’–βœ¨

πŸ“¦ where this page comes from