summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/op/switch.t3
-rw-r--r--t/op/taint.t26
2 files changed, 27 insertions, 2 deletions
diff --git a/t/op/switch.t b/t/op/switch.t
index bdf087dd38..a28655920c 100644
--- a/t/op/switch.t
+++ b/t/op/switch.t
@@ -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__
diff --git a/t/op/taint.t b/t/op/taint.t
index 9df6fee35c..0c9c2d07b7 100644
--- a/t/op/taint.t
+++ b/t/op/taint.t
@@ -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};