xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Simple/t/Legacy/fail-like.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
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