15759b3d2Safresh1#!/usr/bin/perl -w 25759b3d2Safresh1# HARNESS-NO-STREAM 35759b3d2Safresh1# HARNESS-NO-PRELOAD 45759b3d2Safresh1 55759b3d2Safresh1BEGIN { 65759b3d2Safresh1 if( $ENV{PERL_CORE} ) { 75759b3d2Safresh1 chdir 't'; 85759b3d2Safresh1 @INC = ('../lib', 'lib'); 95759b3d2Safresh1 } 105759b3d2Safresh1 else { 115759b3d2Safresh1 unshift @INC, 't/lib'; 125759b3d2Safresh1 } 135759b3d2Safresh1} 145759b3d2Safresh1 155759b3d2Safresh1# There was a bug with like() involving a qr// not failing properly. 165759b3d2Safresh1# This tests against that. 175759b3d2Safresh1 185759b3d2Safresh1use strict; 19*256a93a4Safresh1use warnings; 205759b3d2Safresh1 215759b3d2Safresh1 225759b3d2Safresh1# Can't use Test.pm, that's a 5.005 thing. 235759b3d2Safresh1package My::Test; 245759b3d2Safresh1 255759b3d2Safresh1# This has to be a require or else the END block below runs before 265759b3d2Safresh1# Test::Builder's own and the ending diagnostics don't come out right. 275759b3d2Safresh1require Test::Builder; 285759b3d2Safresh1my $TB = Test::Builder->create; 295759b3d2Safresh1$TB->plan(tests => 4); 305759b3d2Safresh1 315759b3d2Safresh1require Test::Simple::Catch; 325759b3d2Safresh1my($out, $err) = Test::Simple::Catch::caught(); 335759b3d2Safresh1local $ENV{HARNESS_ACTIVE} = 0; 345759b3d2Safresh1 355759b3d2Safresh1package main; 365759b3d2Safresh1 375759b3d2Safresh1require Test::More; 385759b3d2Safresh1Test::More->import(tests => 1); 395759b3d2Safresh1 405759b3d2Safresh1{ 415759b3d2Safresh1 eval q{ like( "foo", qr/that/, 'is foo like that' ); }; 425759b3d2Safresh1 435759b3d2Safresh1 $TB->is_eq($out->read, <<OUT, 'failing output'); 445759b3d2Safresh11..1 455759b3d2Safresh1not ok 1 - is foo like that 465759b3d2Safresh1OUT 475759b3d2Safresh1 485759b3d2Safresh1 # Accept both old and new-style stringification 495759b3d2Safresh1 my $modifiers = (qr/foobar/ =~ /\Q(?^/) ? '\\^' : '-xism'; 505759b3d2Safresh1 515759b3d2Safresh1 my $err_re = <<ERR; 525759b3d2Safresh1# Failed test 'is foo like that' 535759b3d2Safresh1# at .* line 1\. 545759b3d2Safresh1# 'foo' 555759b3d2Safresh1# doesn't match '\\(\\?$modifiers:that\\)' 565759b3d2Safresh1ERR 575759b3d2Safresh1 585759b3d2Safresh1 $TB->like($err->read, qr/^$err_re$/, 'failing errors'); 595759b3d2Safresh1} 605759b3d2Safresh1 615759b3d2Safresh1{ 62*256a93a4Safresh1 # line 63 635759b3d2Safresh1 like("foo", "not a regex"); 645759b3d2Safresh1 $TB->is_eq($out->read, <<OUT); 655759b3d2Safresh1not ok 2 665759b3d2Safresh1OUT 675759b3d2Safresh1 685759b3d2Safresh1 $TB->is_eq($err->read, <<OUT); 69*256a93a4Safresh1# Failed test at $0 line 63. 705759b3d2Safresh1# 'not a regex' doesn't look much like a regex to me. 715759b3d2Safresh1OUT 725759b3d2Safresh1 735759b3d2Safresh1} 745759b3d2Safresh1 755759b3d2Safresh1END { 765759b3d2Safresh1 # Test::More thinks it failed. Override that. 775759b3d2Safresh1 $? = scalar grep { !$_ } $TB->summary; 785759b3d2Safresh1} 79