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