Deprecate shellwords.pl with a warning
[p5sagit/p5-mst-13.2.git] / lib / autodie / t / context.t
1 #!/usr/bin/perl -w
2 use strict;
3
4 use Test::More;
5
6 plan 'no_plan';
7
8 sub list_return {
9     return if @_;
10     return qw(foo bar baz);
11 }
12
13 sub list_return2 {
14     return if @_;
15     return qw(foo bar baz);
16 }
17
18 # Returns a list presented to it, but also returns a single
19 # undef if given a list of a single undef.  This mimics the
20 # behaviour of many user-defined subs and built-ins (eg: open) that
21 # always return undef regardless of context.
22
23 sub list_mirror {
24     return undef if (@_ == 1 and not defined $_[0]);
25     return @_;
26
27 }
28
29 use Fatal qw(list_return);
30 use Fatal qw(:void list_return2);
31
32 TODO: {
33
34     # Clobbering context was documented as a bug in the original
35     # Fatal, so we'll still consider it a bug here.
36
37     local $TODO = "Fatal clobbers context, just like it always has.";
38
39     my @list = list_return();
40
41     is_deeply(\@list,[qw(foo bar baz)],'fatal sub works in list context');
42 }
43
44 eval {
45     my @line = list_return(1);  # Should die
46 };
47
48 ok($@,"List return fatalised");
49
50 ### Tests where we've fatalised our function with :void ###
51
52 my @list2 = list_return2();
53
54 is_deeply(\@list2,[qw(foo bar baz)],'fatal sub works in list context');
55
56 eval {
57     my @line = list_return2(1);  # Shouldn't die
58 };
59
60 ok(! $@,"void List return fatalised survives when non-void");
61
62 eval {
63     list_return2(1);
64 };
65
66 ok($@,"void List return fatalised");