use strict; use warnings; use Test::More tests => 9; use Pugs::Runtime::Tracer; my $buf; open $::PCR_TRACE_FH, '>', \$buf; trace("Howdy,"); is $buf, 'Howdy,', 'trace works'; trace("Audrey!"); is $buf, 'Howdy,Audrey!', 'trace appends okay'; $buf = ''; open $::PCR_TRACE_FH, '>', \$buf; trace_begin('quant', 644, 652, 25); is $buf, '>>BEGIN quant<< 644..652 at 25' . "\n", 'trace_begin works'; trace_end('end', 1, 32); is $buf, <<'_EOC_', 'trace_end works'; >>BEGIN quant<< 644..652 at 25 >>END end<< success at 32 _EOC_ trace_end('end', undef, 51); is $buf, <<'_EOC_', 'trace_end works'; >>BEGIN quant<< 644..652 at 25 >>END end<< success at 32 >>END end<< fail at 51 _EOC_ my $out = expand_tracing_code(<<'_EOC_'); ## ## pos: 25 32 ... ## _EOC_ is $out, <<'_EOC_'; ## ## pos: 25 32 do { Pugs::Runtime::Tracer::trace_begin('constant', 25, 32, $pos); my $retval = ... ## ; Pugs::Runtime::Tracer::trace_end('constant', $retval, $pos); $retval; } _EOC_ $out = expand_tracing_code(<<'_EOC_'); ## ## ## ## ## ## _EOC_ ok $out, 'expand okay'; eval { $out = expand_tracing_code(<<'_EOC_'); ## ## ## ## ## ## _EOC_ }; ok $@, 'unmatched tag'; like($@, qr{unexpected closing tag }, 'unmatched tags');