xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Test2/behavior/trace_signature.t (revision f3efcd0145415b7d44d9da97e0ad5c21b186ac61)
1use strict;
2use warnings;
3
4use Test2::Tools::Tiny;
5use Test2::API qw/intercept context/;
6use Test2::Util qw/get_tid/;
7
8my $line;
9my $events = intercept {
10    $line = __LINE__ + 1;
11    ok(1, "pass");
12    sub {
13        my $ctx = context;
14        $ctx->pass;
15        $ctx->pass;
16        $ctx->release;
17    }->();
18};
19
20my $sigpass = $events->[0]->trace->signature;
21my $sigfail = $events->[1]->trace->signature;
22
23ok($sigpass ne $sigfail, "Each tool got a new signature");
24
25is($events->[$_]->trace->signature, $sigfail, "Diags share failed ok's signature") for 2 .. $#$events;
26
27like($sigpass, qr/$$~${ \get_tid() }~\d+~\d+:$$:\Q${ \get_tid() }:${ \__FILE__ }:$line\E$/, "signature is sane");
28
29my $trace = Test2::EventFacet::Trace->new(frame => ['main', 'foo.t', 42, 'xxx']);
30delete $trace->{cid};
31is($trace->signature, undef, "No signature without a cid");
32
33is($events->[0]->related($events->[1]), 0, "event 0 is not related to event 1");
34is($events->[1]->related($events->[2]), 1, "event 1 is related to event 2");
35
36my $e = Test2::Event::Ok->new(pass => 1);
37is($e->related($events->[0]), undef, "Cannot check relation, invalid trace");
38
39$e = Test2::Event::Ok->new(pass => 1, trace => Test2::EventFacet::Trace->new(frame => ['', '', '', '']));
40is($e->related($events->[0]), undef, "Cannot check relation, incomplete trace");
41
42$e = Test2::Event::Ok->new(pass => 1, trace => Test2::EventFacet::Trace->new(frame => []));
43is($e->related($events->[0]), undef, "Cannot check relation, incomplete trace");
44
45done_testing;
46