Build all packages removed dependencies of libtest-exception-perl libtest-warn-perl...
[dh-make-perl] / dev / i386 / libperl-critic-perl / libperl-critic-perl-1.088 / t / Subroutines / RequireFinalReturn.run
diff --git a/dev/i386/libperl-critic-perl/libperl-critic-perl-1.088/t/Subroutines/RequireFinalReturn.run b/dev/i386/libperl-critic-perl/libperl-critic-perl-1.088/t/Subroutines/RequireFinalReturn.run
new file mode 100644 (file)
index 0000000..48a0f63
--- /dev/null
@@ -0,0 +1,158 @@
+##############################################################################
+#     $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/t/Subroutines/RequireFinalReturn.run $
+#    $Date: 2008-03-16 17:40:45 -0500 (Sun, 16 Mar 2008) $
+#   $Author: clonezone $
+# $Revision: 2187 $
+##############################################################################
+
+
+#-----------------------------------------------------------------------------
+
+## name basic passes
+## failures 0
+## cut
+sub foo { }
+sub bar;
+sub baz { return; }
+sub quux { return {some => [qw(complicated data)], q{ } => /structure/}; }
+
+#-----------------------------------------------------------------------------
+
+## name complex passes
+## failures 0
+## cut
+sub foo { if ($bool) { return; } else { return; } }
+sub bar { unless ($bool) { return; } else { return; } }
+sub baz { if ($bool) { return; } elsif ($bool2) { return; } else { return; } }
+sub quuz { unless ($bool) { return; } elsif ($bool2) { return; } else { return; } }
+
+#-----------------------------------------------------------------------------
+
+## name ternary returns
+## failures 0
+## TODO We are not yet detecting ternaries
+## cut
+sub foo { 1 ? return : 2 ? return : return; }
+
+#-----------------------------------------------------------------------------
+
+## name returning ternaries
+## failures 0
+## cut
+sub foo { return 1 ? 1 : 2 ? 2 : 3; }
+
+#-----------------------------------------------------------------------------
+
+## name implicit returns fail
+## failures 2
+## cut
+sub foo { 1 }
+sub foo { 'Club sandwich'; }
+
+#-----------------------------------------------------------------------------
+
+## name return in a constant loop
+## failures 1
+## cut
+sub foo { while (1==1) { return; } }
+
+#-----------------------------------------------------------------------------
+
+## name not all code paths returns
+## failures 3
+## cut
+sub foo { if ($bool) { } else { } }
+sub foo { if ($bool) { $foo = 'bar'; } else { return; } }
+sub foo { unless ($bool) { $foo = 'bar'; } else { return; } }
+
+#-----------------------------------------------------------------------------
+
+## name special blocks exemption
+## failures 0
+## cut
+BEGIN {
+  print 'this should not need a return';
+}
+INIT {
+  print 'nor this';
+}
+CHECK {
+  print 'nor this';
+}
+END {
+  print 'nor this';
+}
+
+#-----------------------------------------------------------------------------
+
+## name goto is equivalent to return
+## failures 0
+## cut
+sub foo { goto &bar; }
+END_PERL
+
+#-----------------------------------------------------------------------------
+
+## name next and last are not equivalent to return (and are invalid Perl)
+## failures 2
+## cut
+sub foo { next; }
+sub bar { last; }
+
+#-----------------------------------------------------------------------------
+
+## name abnormal termination is allowed
+## failures 0
+## cut
+sub foo   { die; }
+sub bar   { croak; }
+sub baz   { confess; }
+sub bar_C { Carp::croak; }
+sub baz_C { Carp::confess; }
+sub quux  { exit; }
+sub quux2 { throw 'nuts'; }
+
+#-----------------------------------------------------------------------------
+
+## name Final return is present, but conditional
+## failures 4
+## cut
+sub foo   { die if $condition }
+sub bar   { croak unless $condition }
+sub baz   { exit for @condition }
+sub quux  { throw 'nuts'if not $condition }
+
+#-----------------------------------------------------------------------------
+
+## name Compound final return is present, but conditional
+## failures 1
+## cut
+sub foo {
+
+    if( $condition ) {
+        return if $today_is_tuesday;
+    }
+    else {
+        exit unless $today_is_wednesday;
+    }
+}
+
+#-----------------------------------------------------------------------------
+
+## name Custom terminals
+## parms { terminal_funcs => 'bailout abort quit' };
+## failures 0
+## cut
+sub foo  { if ($condition) { return 1; }else{ abort } }
+sub bar  { if ($condition) { bailout }else{ return 1 } }
+sub baz  { quit }
+
+##############################################################################
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 78
+#   indent-tabs-mode: nil
+#   c-indentation-style: bsd
+# End:
+# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :