1*5759b3d2Safresh1use Test2::Tools::Tiny; 2*5759b3d2Safresh1use Test2::API qw/test2_add_uuid_via context intercept/; 3*5759b3d2Safresh1 4*5759b3d2Safresh1my %CNT; 5*5759b3d2Safresh1test2_add_uuid_via(sub { 6*5759b3d2Safresh1 my $type = shift; 7*5759b3d2Safresh1 $CNT{$type} ||= 1; 8*5759b3d2Safresh1 $type . '-' . $CNT{$type}++; 9*5759b3d2Safresh1}); 10*5759b3d2Safresh1 11*5759b3d2Safresh1my $events = intercept { 12*5759b3d2Safresh1 ok(1, "pass"); 13*5759b3d2Safresh1 14*5759b3d2Safresh1 sub { 15*5759b3d2Safresh1 my $ctx = context(); 16*5759b3d2Safresh1 ok(1, "pass"); 17*5759b3d2Safresh1 ok(0, "fail"); 18*5759b3d2Safresh1 $ctx->release; 19*5759b3d2Safresh1 }->(); 20*5759b3d2Safresh1 21*5759b3d2Safresh1 tests foo => sub { 22*5759b3d2Safresh1 ok(1, "pass"); 23*5759b3d2Safresh1 }; 24*5759b3d2Safresh1 25*5759b3d2Safresh1 warnings { 26*5759b3d2Safresh1 require Test::More; 27*5759b3d2Safresh1 *subtest = \&Test::More::subtest; 28*5759b3d2Safresh1 }; 29*5759b3d2Safresh1 30*5759b3d2Safresh1 subtest(foo => sub { 31*5759b3d2Safresh1 ok(1, "pass"); 32*5759b3d2Safresh1 }); 33*5759b3d2Safresh1}; 34*5759b3d2Safresh1 35*5759b3d2Safresh1my $hub = Test2::API::test2_stack->top; 36*5759b3d2Safresh1is($hub->uuid, 'hub-1', "First hub got a uuid"); 37*5759b3d2Safresh1 38*5759b3d2Safresh1is($events->[0]->uuid, 'event-1', "First event gets first uuid"); 39*5759b3d2Safresh1is($events->[0]->trace->uuid, 'context-2', "First event has correct context"); 40*5759b3d2Safresh1is($events->[0]->trace->huuid, 'hub-2', "First event has correct hub"); 41*5759b3d2Safresh1 42*5759b3d2Safresh1is($events->[0]->facet_data->{about}->{uuid}, "event-1", "The UUID makes it to facet data"); 43*5759b3d2Safresh1 44*5759b3d2Safresh1is($events->[1]->uuid, 'event-2', "Second event gets correct uuid"); 45*5759b3d2Safresh1is($events->[1]->trace->uuid, 'context-3', "Second event has correct context"); 46*5759b3d2Safresh1is($events->[1]->trace->huuid, 'hub-2', "Second event has correct hub"); 47*5759b3d2Safresh1 48*5759b3d2Safresh1is($events->[2]->uuid, 'event-3', "Third event gets correct uuid"); 49*5759b3d2Safresh1is($events->[2]->trace->uuid, $events->[1]->trace->uuid, "Third event shares context with event 2"); 50*5759b3d2Safresh1is($events->[2]->trace->huuid, 'hub-2', "Third event has correct hub"); 51*5759b3d2Safresh1 52*5759b3d2Safresh1is($events->[3]->uuid, 'event-6', "subtest event gets correct uuid (not next)"); 53*5759b3d2Safresh1is($events->[3]->subtest_uuid, 'hub-3', "subtest event gets correct subtest-uuid (next hub uuid)"); 54*5759b3d2Safresh1is($events->[3]->trace->uuid, 'context-4', "subtest gets next sequential context"); 55*5759b3d2Safresh1is($events->[3]->trace->huuid, 'hub-2', "subtest event has correct hub"); 56*5759b3d2Safresh1 57*5759b3d2Safresh1is($events->[3]->subevents->[0]->uuid, 'event-4', "First subevent gets next event uuid"); 58*5759b3d2Safresh1is($events->[3]->subevents->[0]->trace->uuid, 'context-5', "First subevent has correct context"); 59*5759b3d2Safresh1is($events->[3]->subevents->[0]->trace->huuid, 'hub-3', "First subevent has correct hub uuid (subtest hub uuid)"); 60*5759b3d2Safresh1 61*5759b3d2Safresh1is($events->[3]->subevents->[1]->uuid, 'event-5', "Second subevent gets next event uuid"); 62*5759b3d2Safresh1is($events->[3]->subevents->[1]->trace->uuid, $events->[3]->trace->uuid, "Second subevent has same context as subtest itself"); 63*5759b3d2Safresh1is($events->[3]->subevents->[1]->trace->huuid, 'hub-3', "Second subevent has correct hub uuid (subtest hub uuid)"); 64*5759b3d2Safresh1 65*5759b3d2Safresh1is($events->[5]->uuid, 'event-10', "subtest event gets correct uuid (not next)"); 66*5759b3d2Safresh1is($events->[5]->subtest_uuid, 'hub-4', "subtest event gets correct subtest-uuid (next hub uuid)"); 67*5759b3d2Safresh1is($events->[5]->trace->uuid, 'context-8', "subtest gets next sequential context"); 68*5759b3d2Safresh1is($events->[5]->trace->huuid, 'hub-2', "subtest event has correct hub"); 69*5759b3d2Safresh1 70*5759b3d2Safresh1is($events->[5]->subevents->[0]->uuid, 'event-8', "First subevent gets next event uuid"); 71*5759b3d2Safresh1is($events->[5]->subevents->[0]->trace->uuid, 'context-10', "First subevent has correct context"); 72*5759b3d2Safresh1is($events->[5]->subevents->[0]->trace->huuid, 'hub-4', "First subevent has correct hub uuid (subtest hub uuid)"); 73*5759b3d2Safresh1 74*5759b3d2Safresh1is($events->[5]->subevents->[1]->uuid, 'event-9', "Second subevent gets next event uuid"); 75*5759b3d2Safresh1is($events->[5]->subevents->[1]->trace->uuid, $events->[5]->trace->uuid, "Second subevent has same context as subtest itself"); 76*5759b3d2Safresh1is($events->[5]->subevents->[1]->trace->huuid, 'hub-2', "Second subevent has correct hub uuid (subtest hub uuid)"); 77*5759b3d2Safresh1 78*5759b3d2Safresh1done_testing; 79