Security Advisories (1)
CVE-2025-40909 (2025-05-30)

Perl threads have a working directory race condition where file operations may target unintended paths. If a directory handle is open at thread creation, the process-wide current working directory is temporarily changed in order to clone that handle for the new thread, which is visible from any third (or more) thread already running. This may lead to unintended operations such as loading code or accessing files from unexpected locations, which a local attacker may be able to exploit. The bug was introduced in commit 11a11ecf4bea72b17d250cfb43c897be1341861e and released in Perl version 5.13.6

NAME

Test2::Bundle::More - ALMOST a drop-in replacement for Test::More.

DESCRIPTION

This bundle is intended to be a (mostly) drop-in replacement for Test::More. See "KEY DIFFERENCES FROM Test::More" for details.

SYNOPSIS

use Test2::Bundle::More;

ok(1, "pass");

...

done_testing;

PLUGINS

This loads Test2::Plugin::ExitSummary.

TOOLS

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. It is called subtest_streamed() in that package.

subtest $name => sub { ... }

KEY DIFFERENCES FROM Test::More

You cannot plan at import.

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.

isa_ok accepts different arguments

isa_ok in Test::More was:

isa_ok($thing, $isa, $alt_thing_name);

This was very inconsistent with tools like can_ok($thing, @subs).

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

$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.

todo_skip()

Not necessary.

eq_array()
eq_hash()
eq_set()

Discouraged in Test::More.

explain()

This 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).

new_ok()

Not necessary.

SOURCE

The source code repository for Test2-Suite can be found at https://github.com/Test-More/test-more/.

MAINTAINERS

Chad Granum <exodist@cpan.org>

AUTHORS

Chad Granum <exodist@cpan.org>

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.

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