File: 132-bool.t

package info (click to toggle)
perl 5.42.0-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 128,392 kB
  • sloc: perl: 534,963; ansic: 240,563; sh: 72,042; pascal: 6,934; xml: 2,428; yacc: 1,360; makefile: 1,197; cpp: 208; lisp: 1
file content (57 lines) | stat: -rw-r--r-- 1,335 bytes parent folder | download | duplicates (8)
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
use Test2::Require::AuthorTesting;
use Test2::Require::Perl 'v5.20';
use Test2::V0;
use Test2::Plugin::BailOnFail;

opendir(my $dh, 'lib/Test2/Compare/') or die "Could not open compare lib dir: $!";

for my $file (readdir($dh)) {
    next unless $file =~ m/.pm$/;
    next if $file eq 'Delta.pm';

    require "Test2/Compare/$file";
    my $name = $file;
    $name =~ s/\.pm$//g;
    my $mod = "Test2::Compare::$name";

    my $test = "./t/modules/Compare/$name.t";
    next unless -f $test;

    eval <<"    EOT" or die $@;
        package $mod;

        require Test2::Tools::Basic;
        require Carp;

        use overload bool => sub { Carp::confess( 'illegal use of overloaded bool') } ;
        use overload '""' => sub { \$_[0] };

        my \$err;
        main::subtest($name => sub {
            package Test::$mod;
            local \$@;

            main::like(
                main::dies(sub { if(bless({}, "$mod")) { die "oops" }}),
                qr/illegal use of overloaded bool/,
                "Override for $mod is in place",
            );

            do "$test";
            \$err = \$@;
            1;
        });

        eval <<"        ETT" or die $@;
            no overload 'bool';
            no overload '""';
        1;
        ETT

        die \$err if \$err;

        1;
    EOT
}

done_testing;