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