File: Warnings.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 (101 lines) | stat: -rw-r--r-- 2,013 bytes parent folder | download | duplicates (3)
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
use Test2::Bundle::Extended -target => 'Test2::Tools::Warnings';

{
    package Foo;
    use Test2::Tools::Warnings qw/warns warning warnings no_warnings/;
    ::imported_ok(qw/warns warning warnings no_warnings/);
}

is(warns { 0 }, 0, "no warnings");
is(warns { warn 'a' }, 1, "1 warning");
is(warns { warn 'a' for 1 .. 4 }, 4, "4 warnings");

ok(no_warnings { 0 }, "no warnings");

ok(!no_warnings { warn 'blah 1' }, "warnings");

my $es = intercept {
    ok(!no_warnings { warn "blah 2\n" }, "warnings 1");
    ok(no_warnings { warn "blah 3\n" }, "warnings 2")
};

like(
    [grep { $_->isa('Test2::Event::Diag') } @$es],
    [
        {message => qr/Failed test 'warnings 2'/},
        {message => "blah 3\n"},
    ],
    "When the test failed we got a diag about the warning, but we got no diag when it passed"
);

is(
    warnings { 0 },
    [],
    "Empty arrayref"
);

is(
    warnings { warn "a\n" for 1 .. 4 },
    [ map "a\n", 1 .. 4 ],
    "4 warnings in arrayref"
);

is(
    warning { warn "xyz\n" },
    "xyz\n",
    "Got expected warning"
);

is(
    warning { 0 },
    undef,
    "No warning"
);

my ($events, $warn);
$events = intercept {
    $warn = warning {
        scalar warning { warn "a\n"; warn "b\n" };
    };
};

like(
    $warn,
    qr/Extra warnings in warning \{ \.\.\. \}/,
    "Got warning about extra warnings"
);

like(
    $events,
    array {
        event Note => { message => "a\n" };
        event Note => { message => "b\n" };
    },
    "Got warnings as notes."
);

like(
    warning { warns { 1 } },
    qr/Useless use of warns\(\) in void context/,
    "warns in void context"
);

like(
    warning { warning { 1 } },
    qr/Useless use of warning\(\) in void context/,
    "warns in void context"
);

like(
    warning { warnings { 1 } },
    qr/Useless use of warnings\(\) in void context/,
    "warns in void context"
);

like(
    warning { no_warnings { 1 } },
    qr/Useless use of no_warnings\(\) in void context/,
    "warns in void context"
);

done_testing;