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::Event::V2 - Second generation event.

DESCRIPTION

This is the event type that should be used instead of Test2::Event or its legacy subclasses.

SYNOPSIS

USING A CONTEXT

use Test2::API qw/context/;

sub my_tool {
    my $ctx = context();

    my $event = $ctx->send_ev2(info => [{tag => 'NOTE', details => "This is a note"}]);

    $ctx->release;

    return $event;
}

USING THE CONSTRUCTOR

use Test2::Event::V2;

my $e = Test2::Event::V2->new(
    trace => {frame => [$PKG, $FILE, $LINE, $SUBNAME]},
    info  => [{tag => 'NOTE', details => "This is a note"}],
);

METHODS

This class inherits from Test2::Event.

$fd = $e->facet_data()

This will return a hashref of facet data. Each facet hash will be a shallow copy of the original.

$about = $e->about()

This will return the 'about' facet hashref.

NOTE: This will return the internal hashref, not a copy.

$trace = $e->trace()

This will return the 'trace' facet, normally blessed (but this is not enforced when the trace is set using set_trace().

NOTE: This will return the internal trace, not a copy.

MUTATION

$e->add_amnesty({...})

Inherited from Test2::Event. This can be used to add 'amnesty' facets to an existing event. Each new item is added to the END of the list.

NOTE: Items ARE blessed when added.

$e->add_hub({...})

Inherited from Test2::Event. This is used by hubs to stamp events as they pass through. New items are added to the START of the list.

NOTE: Items ARE NOT blessed when added.

$e->set_uuid($UUID)

Inherited from Test2::Event, overridden to also vivify/mutate the 'about' facet.

$e->set_trace($trace)

Inherited from Test2::Event which allows you to change the trace.

Note: This method does not bless/clone the trace for you. Many things will expect the trace to be blessed, so you should probably do that.

LEGACY SUPPORT METHODS

These are all imported from Test2::Util::Facets2Legacy, see that module or Test2::Event for documentation on what they do.

causes_fail
diagnostics
global
increments_count
no_display
sets_plan
subtest_id
summary
terminate

THIRD PARTY META-DATA

This object consumes Test2::Util::ExternalMeta which provides a consistent way for you to attach meta-data to instances of this class. This is useful for tools, plugins, and other extensions.

SOURCE

The source code repository for Test2 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 https://dev.perl.org/licenses/