1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
|
#!perl -w
use strict;
use lib 't/lib';
require Test::Simple::Catch;
my($out, $err) = Test::Simple::Catch::caught();
# Can't use Test.pm, that's a 5.005 thing.
package My::Test;
print "1..2\n";
my $test_num = 1;
# Utility testing functions.
sub ok ($;$) {
my($test, $name) = @_;
my $ok = '';
$ok .= "not " unless $test;
$ok .= "ok $test_num";
$ok .= " - $name" if defined $name;
$ok .= "\n";
print $ok;
$test_num++;
return $test;
}
package main;
require Test::More;
my $Total = 28;
Test::More->import(tests => $Total);
# Preserve the line numbers.
#line 38
ok( 0, 'failing' );
#line 40
is( "foo", "bar", 'foo is bar?');
is( undef, '', 'undef is empty string?');
is( undef, 0, 'undef is 0?');
is( '', 0, 'empty string is 0?' );
isnt("foo", "foo", 'foo isnt foo?' );
isn't("foo", "foo",'foo isn\'t foo?' );
like( "foo", '/that/', 'is foo like that' );
unlike( "foo", '/foo/', 'is foo unlike foo' );
# Nick Clark found this was a bug. Fixed in 0.40.
like( "bug", '/(%)/', 'regex with % in it' );
fail('fail()');
#line 52
can_ok('Mooble::Hooble::Yooble', qw(this that));
can_ok('Mooble::Hooble::Yooble', ());
isa_ok(bless([], "Foo"), "Wibble");
isa_ok(42, "Wibble", "My Wibble");
isa_ok(undef, "Wibble", "Another Wibble");
isa_ok([], "HASH");
#line 68
cmp_ok( 'foo', 'eq', 'bar', 'cmp_ok eq' );
cmp_ok( 42.1, '==', 23, , ' ==' );
cmp_ok( 42, '!=', 42 , ' !=' );
cmp_ok( 1, '&&', 0 , ' &&' );
cmp_ok( 42, '==', "foo", ' == with strings' );
cmp_ok( 42, 'eq', "foo", ' eq with numbers' );
cmp_ok( undef, 'eq', 'foo', ' eq with undef' );
# generate a $!, it changes its value by context.
-e "wibblehibble";
my $Errno_Number = $!+0;
my $Errno_String = $!.'';
cmp_ok( $!, 'eq', '', ' eq with stringified errno' );
cmp_ok( $!, '==', -1, ' eq with numerified errno' );
#line 84
use_ok('Hooble::mooble::yooble');
require_ok('ALL::YOUR::BASE::ARE::BELONG::TO::US::wibble');
#line 88
END {
My::Test::ok($$out eq <<OUT, 'failing output');
1..$Total
not ok 1 - failing
not ok 2 - foo is bar?
not ok 3 - undef is empty string?
not ok 4 - undef is 0?
not ok 5 - empty string is 0?
not ok 6 - foo isnt foo?
not ok 7 - foo isn't foo?
not ok 8 - is foo like that
not ok 9 - is foo unlike foo
not ok 10 - regex with % in it
not ok 11 - fail()
not ok 12 - Mooble::Hooble::Yooble->can(...)
not ok 13 - Mooble::Hooble::Yooble->can(...)
not ok 14 - The object isa Wibble
not ok 15 - My Wibble isa Wibble
not ok 16 - Another Wibble isa Wibble
not ok 17 - The object isa HASH
not ok 18 - cmp_ok eq
not ok 19 - ==
not ok 20 - !=
not ok 21 - &&
not ok 22 - == with strings
not ok 23 - eq with numbers
not ok 24 - eq with undef
not ok 25 - eq with stringified errno
not ok 26 - eq with numerified errno
not ok 27 - use Hooble::mooble::yooble;
not ok 28 - require ALL::YOUR::BASE::ARE::BELONG::TO::US::wibble;
OUT
my $err_re = <<ERR;
# Failed test ($0 at line 38)
# Failed test ($0 at line 40)
# got: 'foo'
# expected: 'bar'
# Failed test ($0 at line 41)
# got: undef
# expected: ''
# Failed test ($0 at line 42)
# got: undef
# expected: '0'
# Failed test ($0 at line 43)
# got: ''
# expected: '0'
# Failed test ($0 at line 45)
# 'foo'
# ne
# 'foo'
# Failed test ($0 at line 46)
# 'foo'
# ne
# 'foo'
# Failed test ($0 at line 48)
# 'foo'
# doesn't match '/that/'
# Failed test ($0 at line 49)
# 'foo'
# matches '/foo/'
# Failed test ($0 at line 52)
# 'bug'
# doesn't match '/(%)/'
# Failed test ($0 at line 54)
# Failed test ($0 at line 52)
# Mooble::Hooble::Yooble->can('this') failed
# Mooble::Hooble::Yooble->can('that') failed
# Failed test ($0 at line 53)
# can_ok() called with no methods
# Failed test ($0 at line 55)
# The object isn't a 'Wibble' its a 'Foo'
# Failed test ($0 at line 56)
# My Wibble isn't a reference
# Failed test ($0 at line 57)
# Another Wibble isn't defined
# Failed test ($0 at line 58)
# The object isn't a 'HASH' its a 'ARRAY'
# Failed test ($0 at line 68)
# got: 'foo'
# expected: 'bar'
# Failed test ($0 at line 69)
# got: 42.1
# expected: 23
# Failed test ($0 at line 70)
# '42'
# !=
# '42'
# Failed test ($0 at line 71)
# '1'
# &&
# '0'
# Failed test ($0 at line 72)
# got: 42
# expected: 0
# Failed test ($0 at line 73)
# got: '42'
# expected: 'foo'
# Failed test ($0 at line 74)
# got: undef
# expected: 'foo'
# Failed test ($0 at line 80)
# got: '$Errno_String'
# expected: ''
# Failed test ($0 at line 81)
# got: $Errno_Number
# expected: -1
ERR
my $filename = quotemeta $0;
my $more_err_re = <<ERR;
# Failed test \\($filename at line 84\\)
# Tried to use 'Hooble::mooble::yooble'.
# Error: Can't locate Hooble.* in \\\@INC .*
# Failed test \\($filename at line 85\\)
# Tried to require 'ALL::YOUR::BASE::ARE::BELONG::TO::US::wibble'.
# Error: Can't locate ALL.* in \\\@INC .*
# Looks like you failed $Total tests of $Total.
ERR
unless( My::Test::ok($$err =~ /^\Q$err_re\E$more_err_re$/,
'failing errors') ) {
print $$err;
}
exit(0);
}
|