xref: /openbsd-src/gnu/usr.bin/perl/cpan/autodie/t/context_lexical.t (revision b39c515898423c8d899e35282f4b395f7cad3298)
1*b39c5158Smillert#!/usr/bin/perl -w
2*b39c5158Smillertuse strict;
3*b39c5158Smillert
4*b39c5158Smillertuse Test::More;
5*b39c5158Smillert
6*b39c5158Smillertplan 'no_plan';
7*b39c5158Smillert
8*b39c5158Smillert# Returns a list presented to it, but also returns a single
9*b39c5158Smillert# undef if given a list of a single undef.  This mimics the
10*b39c5158Smillert# behaviour of many user-defined subs and built-ins (eg: open) that
11*b39c5158Smillert# always return undef regardless of context.
12*b39c5158Smillert#
13*b39c5158Smillert# We also do an 'empty return' if no arguments are passed.  This
14*b39c5158Smillert# mimics the PBP guideline for returning nothing.
15*b39c5158Smillert
16*b39c5158Smillertsub list_mirror {
17*b39c5158Smillert    return undef if (@_ == 1 and not defined $_[0]);
18*b39c5158Smillert    return if not @_;
19*b39c5158Smillert    return @_;
20*b39c5158Smillert
21*b39c5158Smillert}
22*b39c5158Smillert
23*b39c5158Smillert### autodie clobbering tests ###
24*b39c5158Smillert
25*b39c5158Smillerteval {
26*b39c5158Smillert    list_mirror();
27*b39c5158Smillert};
28*b39c5158Smillert
29*b39c5158Smillertis($@, "", "No autodie, no fatality");
30*b39c5158Smillert
31*b39c5158Smillerteval {
32*b39c5158Smillert    use autodie qw(list_mirror);
33*b39c5158Smillert    list_mirror();
34*b39c5158Smillert};
35*b39c5158Smillert
36*b39c5158Smillertok($@, "Autodie fatality for empty return in void context");
37*b39c5158Smillert
38*b39c5158Smillerteval {
39*b39c5158Smillert    list_mirror();
40*b39c5158Smillert};
41*b39c5158Smillert
42*b39c5158Smillertis($@, "", "No autodie, no fatality (after autodie used)");
43*b39c5158Smillert
44*b39c5158Smillerteval {
45*b39c5158Smillert    use autodie qw(list_mirror);
46*b39c5158Smillert    list_mirror(undef);
47*b39c5158Smillert};
48*b39c5158Smillert
49*b39c5158Smillertok($@, "Autodie fatality for undef return in void context");
50*b39c5158Smillert
51*b39c5158Smillerteval {
52*b39c5158Smillert    use autodie qw(list_mirror);
53*b39c5158Smillert    my @list = list_mirror();
54*b39c5158Smillert};
55*b39c5158Smillert
56*b39c5158Smillertok($@,"Autodie fatality for empty list return");
57*b39c5158Smillert
58*b39c5158Smillerteval {
59*b39c5158Smillert    use autodie qw(list_mirror);
60*b39c5158Smillert    my @list = list_mirror(undef);
61*b39c5158Smillert};
62*b39c5158Smillert
63*b39c5158Smillertok($@,"Autodie fatality for undef list return");
64*b39c5158Smillert
65*b39c5158Smillerteval {
66*b39c5158Smillert    use autodie qw(list_mirror);
67*b39c5158Smillert    my @list = list_mirror("tada");
68*b39c5158Smillert};
69*b39c5158Smillert
70*b39c5158Smillertok(! $@,"No Autodie fatality for defined list return");
71*b39c5158Smillert
72*b39c5158Smillerteval {
73*b39c5158Smillert    use autodie qw(list_mirror);
74*b39c5158Smillert    my $single = list_mirror("tada");
75*b39c5158Smillert};
76*b39c5158Smillert
77*b39c5158Smillertok(! $@,"No Autodie fatality for defined scalar return");
78*b39c5158Smillert
79*b39c5158Smillerteval {
80*b39c5158Smillert    use autodie qw(list_mirror);
81*b39c5158Smillert    my $single = list_mirror(undef);
82*b39c5158Smillert};
83*b39c5158Smillert
84*b39c5158Smillertok($@,"Autodie fatality for undefined scalar return");
85