Test taintedness of values returned by given/when
authorVincent Pit <perl@profvince.com>
Mon, 27 Jun 2011 08:09:00 +0000 (10:09 +0200)
committerVincent Pit <perl@profvince.com>
Mon, 27 Jun 2011 08:09:00 +0000 (10:09 +0200)
t/op/switch.t
t/op/taint.t

index bdf087d..a286559 100644 (file)
@@ -1362,5 +1362,6 @@ unreified_check(undef,"");
 }
 
 # Okay, that'll do for now. The intricacies of the smartmatch
-# semantics are tested in t/op/smartmatch.t
+# semantics are tested in t/op/smartmatch.t. Taintedness of
+# returned values is checked in t/op/taint.t.
 __END__
index 9df6fee..0c9c2d0 100644 (file)
@@ -17,7 +17,7 @@ BEGIN {
 use strict;
 use Config;
 
-plan tests => 774;
+plan tests => 780;
 
 $| = 1;
 
@@ -2144,6 +2144,30 @@ end
     is_tainted $dest, "ucfirst(tainted) taints its return value";
 }
 
+{
+    # Taintedness of values returned from given()
+    use feature 'switch';
+
+    my @descriptions = ('when', 'given end', 'default');
+
+    for (qw<x y z>) {
+       my $letter = "$_$TAINT";
+
+       my $desc = "tainted value returned from " . shift(@descriptions);
+
+       my $res = do {
+           given ($_) {
+               when ('x') { $letter }
+               when ('y') { goto leavegiven }
+               default    { $letter }
+               leavegiven:  $letter
+           }
+       };
+       is         $res, $letter, "$desc is correct";
+       is_tainted $res,          "$desc stays tainted";
+    }
+}
+
 # This may bomb out with the alarm signal so keep it last
 SKIP: {
     skip "No alarm()"  unless $Config{d_alarm};