Test2::...tingDone(3)

πŸ“¦ version 1.302214, in opensuse-leap 16.0

πŸŽ€ Test2::...tingDone(3) πŸŽ€

okay so bestie, this page is part of the User Contributed Perl Documentation, and the header is literally Test2::...tingDone(3) β€” a lil abbreviated, but the full name is Test2::Manual::Tooling::Plugin::TestingDone. We’re here to learn how to run code when the test file is finished, or when done_testing is called. Slay. πŸ’–


✨ NAME ✨

Test2::Manual::Tooling::Plugin::TestingDone β€” run code when the test file is finished, or when done_testing is called. That’s the whole mood. πŸ’…

🌸 DESCRIPTION 🌸

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

When it’s triggered by done_testing() this will be run BEFORE the plan is calculated and sent. Translation: it IS safe to make test assertions in this callback. Periodt. πŸ”₯

🧚 COMPLETE CODE UP FRONT 🧚

Here’s the whole thing up front, bestie β€” copy-paste energy:

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. Big import energy.
  • 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. No cap, that’s valid.
  • print "The test file is done, or done_testing was just called\n" β€” this prints a message when the callback is run. Cute li’l status update. πŸŽ€

πŸ‘‘ 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. Go check it, bestie.

πŸ’œ SOURCE πŸ’œ

The source code repository for Test2-Manual can be found at https://github.com/Test-More/test-more/. That’s the spot. ✨

🫢 MAINTAINERS 🫢

  • Chad Granum <exodist@cpan.org> β€” holding it down. πŸ‘‘

🌟 AUTHORS 🌟

  • Chad Granum <exodist@cpan.org> β€” same legend. πŸ’–

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/


k bye bestie πŸ’– β€” this page is from source/version perl v5.42.0, dated 2025-07-28, and the footer tag is Test2::...tingDone(3). Mwah! πŸŽ€

πŸ“¦ where this page comes from