1*5759b3d2Safresh1use strict; 2*5759b3d2Safresh1use warnings; 3*5759b3d2Safresh1# HARNESS-NO-FORMATTER 4*5759b3d2Safresh1 5*5759b3d2Safresh1use Test2::Tools::Tiny; 6*5759b3d2Safresh1 7*5759b3d2Safresh1######################### 8*5759b3d2Safresh1# 9*5759b3d2Safresh1# This test us here to insure that Ok, Diag, and Note events render the way 10*5759b3d2Safresh1# Test::More renders them, trailing whitespace and all. 11*5759b3d2Safresh1# 12*5759b3d2Safresh1######################### 13*5759b3d2Safresh1 14*5759b3d2Safresh1use Test2::API qw/test2_stack context/; 15*5759b3d2Safresh1 16*5759b3d2Safresh1# The tools in Test2::Tools::Tiny have some intentional differences from the 17*5759b3d2Safresh1# Test::More versions, these behave more like Test::More which is important for 18*5759b3d2Safresh1# back-compat. 19*5759b3d2Safresh1sub tm_ok($;$) { 20*5759b3d2Safresh1 my ($bool, $name) = @_; 21*5759b3d2Safresh1 my $ctx = context; 22*5759b3d2Safresh1 23*5759b3d2Safresh1 my $ok = bless { 24*5759b3d2Safresh1 pass => $bool, 25*5759b3d2Safresh1 name => $name, 26*5759b3d2Safresh1 effective_pass => 1, 27*5759b3d2Safresh1 trace => $ctx->trace->snapshot, 28*5759b3d2Safresh1 }, 'Test2::Event::Ok'; 29*5759b3d2Safresh1 # Do not call init 30*5759b3d2Safresh1 31*5759b3d2Safresh1 $ctx->hub->send($ok); 32*5759b3d2Safresh1 33*5759b3d2Safresh1 $ctx->release; 34*5759b3d2Safresh1 return $bool; 35*5759b3d2Safresh1} 36*5759b3d2Safresh1 37*5759b3d2Safresh1# Test::More actually does a bit more, but for this test we just want to see 38*5759b3d2Safresh1# what happens when message is a specific string, or undef. 39*5759b3d2Safresh1sub tm_diag { 40*5759b3d2Safresh1 my $ctx = context(); 41*5759b3d2Safresh1 $ctx->diag(@_); 42*5759b3d2Safresh1 $ctx->release; 43*5759b3d2Safresh1} 44*5759b3d2Safresh1 45*5759b3d2Safresh1sub tm_note { 46*5759b3d2Safresh1 my $ctx = context(); 47*5759b3d2Safresh1 $ctx->note(@_); 48*5759b3d2Safresh1 $ctx->release; 49*5759b3d2Safresh1} 50*5759b3d2Safresh1 51*5759b3d2Safresh1# Ensure the top hub is generated 52*5759b3d2Safresh1test2_stack->top; 53*5759b3d2Safresh1 54*5759b3d2Safresh1my $temp_hub = test2_stack->new_hub(); 55*5759b3d2Safresh1require Test::Builder::Formatter; 56*5759b3d2Safresh1$temp_hub->format(Test::Builder::Formatter->new); 57*5759b3d2Safresh1 58*5759b3d2Safresh1my $diag = capture { 59*5759b3d2Safresh1 tm_diag(undef); 60*5759b3d2Safresh1 tm_diag(""); 61*5759b3d2Safresh1 tm_diag(" "); 62*5759b3d2Safresh1 tm_diag("A"); 63*5759b3d2Safresh1 tm_diag("\n"); 64*5759b3d2Safresh1 tm_diag("\nB"); 65*5759b3d2Safresh1 tm_diag("C\n"); 66*5759b3d2Safresh1 tm_diag("\nD\n"); 67*5759b3d2Safresh1 tm_diag("E\n\n"); 68*5759b3d2Safresh1}; 69*5759b3d2Safresh1 70*5759b3d2Safresh1my $note = capture { 71*5759b3d2Safresh1 tm_note(undef); 72*5759b3d2Safresh1 tm_note(""); 73*5759b3d2Safresh1 tm_note(" "); 74*5759b3d2Safresh1 tm_note("A"); 75*5759b3d2Safresh1 tm_note("\n"); 76*5759b3d2Safresh1 tm_note("\nB"); 77*5759b3d2Safresh1 tm_note("C\n"); 78*5759b3d2Safresh1 tm_note("\nD\n"); 79*5759b3d2Safresh1 tm_note("E\n\n"); 80*5759b3d2Safresh1}; 81*5759b3d2Safresh1 82*5759b3d2Safresh1my $ok = capture { 83*5759b3d2Safresh1 tm_ok(1); 84*5759b3d2Safresh1 tm_ok(1, ""); 85*5759b3d2Safresh1 tm_ok(1, " "); 86*5759b3d2Safresh1 tm_ok(1, "A"); 87*5759b3d2Safresh1 tm_ok(1, "\n"); 88*5759b3d2Safresh1 tm_ok(1, "\nB"); 89*5759b3d2Safresh1 tm_ok(1, "C\n"); 90*5759b3d2Safresh1 tm_ok(1, "\nD\n"); 91*5759b3d2Safresh1 tm_ok(1, "E\n\n"); 92*5759b3d2Safresh1}; 93*5759b3d2Safresh1test2_stack->pop($temp_hub); 94*5759b3d2Safresh1 95*5759b3d2Safresh1is($diag->{STDOUT}, "", "STDOUT is empty for diag"); 96*5759b3d2Safresh1is($diag->{STDERR}, <<EOT, "STDERR for diag looks right"); 97*5759b3d2Safresh1# undef 98*5759b3d2Safresh1#_ 99*5759b3d2Safresh1# _ 100*5759b3d2Safresh1# A 101*5759b3d2Safresh1#_ 102*5759b3d2Safresh1#_ 103*5759b3d2Safresh1# B 104*5759b3d2Safresh1# C 105*5759b3d2Safresh1#_ 106*5759b3d2Safresh1# D 107*5759b3d2Safresh1# E 108*5759b3d2Safresh1#_ 109*5759b3d2Safresh1EOT 110*5759b3d2Safresh1 111*5759b3d2Safresh1 112*5759b3d2Safresh1is($note->{STDERR}, "", "STDERR for note is empty"); 113*5759b3d2Safresh1is($note->{STDOUT}, <<EOT, "STDOUT looks right for note"); 114*5759b3d2Safresh1# undef 115*5759b3d2Safresh1#_ 116*5759b3d2Safresh1# _ 117*5759b3d2Safresh1# A 118*5759b3d2Safresh1#_ 119*5759b3d2Safresh1#_ 120*5759b3d2Safresh1# B 121*5759b3d2Safresh1# C 122*5759b3d2Safresh1#_ 123*5759b3d2Safresh1# D 124*5759b3d2Safresh1# E 125*5759b3d2Safresh1#_ 126*5759b3d2Safresh1EOT 127*5759b3d2Safresh1 128*5759b3d2Safresh1 129*5759b3d2Safresh1is($ok->{STDERR}, "", "STDERR for ok is empty"); 130*5759b3d2Safresh1is($ok->{STDOUT}, <<EOT, "STDOUT looks right for ok"); 131*5759b3d2Safresh1ok 1 132*5759b3d2Safresh1ok 2 -_ 133*5759b3d2Safresh1ok 3 - _ 134*5759b3d2Safresh1ok 4 - A 135*5759b3d2Safresh1ok 5 -_ 136*5759b3d2Safresh1#_ 137*5759b3d2Safresh1ok 6 -_ 138*5759b3d2Safresh1# B 139*5759b3d2Safresh1ok 7 - C 140*5759b3d2Safresh1#_ 141*5759b3d2Safresh1ok 8 -_ 142*5759b3d2Safresh1# D 143*5759b3d2Safresh1#_ 144*5759b3d2Safresh1ok 9 - E 145*5759b3d2Safresh1#_ 146*5759b3d2Safresh1#_ 147*5759b3d2Safresh1EOT 148*5759b3d2Safresh1 149*5759b3d2Safresh1done_testing; 150