TEST2::BUNDLE::MORE(3perl)

πŸ’– Test2::Bundle::More β€” like, the iconic Perl manual page, bestie πŸ’–

Okay so real talk, this is the manual page for Test2::Bundle::More, part of the Perl Programmers Reference Guide. Sit down, grab a boba, and let's get into it πŸ§‹βœ¨

✨ NAME ✨

Test2::Bundle::More β€” it's ALMOST a drop-in replacement for Test::More. Like, almost almost. So close. Bestie adjacent. πŸ’…


🌸 DESCRIPTION 🌸

So this bundle is intended to be a (mostly) drop-in replacement for Test::More. Like, it's giving "I can fix him" energy but for your test suite. 🫢

Heads up though β€” "mostly" is doing a LOT of heavy lifting in that sentence. Peep "KEY DIFFERENCES FROM Test::More" below for the details, because there ARE details. There are always details. 😭

πŸŽ€ SYNOPSIS πŸŽ€

The vibe, in code:

use Test2::Bundle::More;

ok(1, "pass");

...

done_testing;

Look at that. Clean. Gorgeous. No notes. ✨


πŸ¦‹ PLUGINS πŸ¦‹

This loads Test2::Plugin::ExitSummary. That's it. That's the whole plugin situation. It's a one-plugin icon. πŸ’…


πŸ”₯ TOOLS πŸ”₯

Okay so here's the toolkit lineup, and honestly? We ate. πŸ”₯

These are from Test2::Tools::Basic. See Test2::Tools::Basic for details.

  • ok($bool, $name)
  • pass($name)
  • fail($name)
  • skip($why, $count)
  • $todo = todo($why)
  • diag($message)
  • note($message)
  • plan($count)
  • skip_all($why)
  • done_testing()
  • BAIL_OUT($why)

These are from Test2::Tools::ClassicCompare. See Test2::Tools::ClassicCompare for details.

  • is($got, $want, $name)
  • isnt($got, $donotwant, $name)
  • like($got, qr/match/, $name)
  • unlike($got, qr/mismatch/, $name)
  • is_deeply($got, $want, "Deep compare")
  • cmp_ok($got, $op, $want, $name)

These are from Test2::Tools::Class. See Test2::Tools::Class for details.

  • isa_ok($thing, @classes)
  • can_ok($thing, @subs)

This is from Test2::Tools::Subtest

Girl, heads up: it's called subtest_streamed() over in that package. Different name, same energy.

  • subtest $name => sub { ... }

πŸ‘‘ KEY DIFFERENCES FROM Test::More πŸ‘‘

Alright, this is the part where I tell you everything that's not a straight swap, because I love you and I want you to not be confused. πŸ™ˆ

  • You cannot plan at import. This is the big one. THIS WILL NOT WORK:
use Test2::Bundle::More tests => 5;

Instead you must plan in a separate statement:

use Test2::Bundle::More;
plan 5;
  • You have three subs imported for use in planning. Use plan($count), skip_all($reason), or done_testing() for your planning. Pick your fighter. ⭐
  • isa_ok accepts different arguments. So isa_ok in Test::More was:
isa_ok($thing, $isa, $alt_thing_name);

And this was very inconsistent with tools like "can_ok($thing, @subs)". Make it make sense. It did not.

In Test2::Bundle::More, isa_ok() takes a $thing and a list of @isa:

isa_ok($thing, $class1, $class2, ...);

πŸ’€ THESE FUNCTIONS AND VARIABLES HAVE BEEN REMOVED πŸ’€

Rest in peace, besties. Gone but not forgotten. πŸ•―οΈ

  • $TODO β€” See todo().
  • use_ok()
  • require_ok() These are not necessary. Use "use" and "require" directly. If there is an error loading the module the test will catch the error and fail. So like, it's handled. Chill. 😌
  • todo_skip() β€” Not necessary.
  • eq_array()
  • eq_hash()
  • eq_set() Discouraged in Test::More.
  • explain() Okay so THIS one started a fight between Test developers, who may now each write their own implementations in Test2. (See explain in Test::Most vs Test::More. Hint: Test::Most wrote it first, then Test::More added it, but broke compatibility). The DRAMA. The LORE. πŸ“
  • new_ok() β€” Not necessary.

⭐ SOURCE ⭐

The source code repository for Test2-Suite can be found at https://github.com/Test-More/test-more/. Go star it, fr fr. πŸ’œ

🫢 MAINTAINERS 🫢

Chad Granum <exodist@cpan.org>

🌈 AUTHORS 🌈

Chad Granum <exodist@cpan.org>

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/


And that's the whole page, bestie! πŸŽ€ This one's from perl v5.44.0, dated 2026-10-17, and it lives under Test2:...e::More(3perl) β€” so when you see that footer at the bottom of your terminal, that's just this page waving goodbye. Slay, go write some passing tests, periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from
  • arch rolling: perl 5.44.0-1 Β· Artistic-1.0-Perl AND GPL-1.0-or-later
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms