]> git.vpit.fr Git - perl/modules/re-engine-Plugin.git/blobdiff - t/60-taint/util.t
Order the test subdirectories
[perl/modules/re-engine-Plugin.git] / t / 60-taint / util.t
diff --git a/t/60-taint/util.t b/t/60-taint/util.t
new file mode 100644 (file)
index 0000000..11905b3
--- /dev/null
@@ -0,0 +1,51 @@
+#!/usr/bin/env perl -T
+use strict;
+use Test::More;
+
+BEGIN {
+    eval {
+        require Taint::Util;
+        Taint::Util->import;
+    };
+
+    plan $@
+        ? (skip_all => "Taint::Util required for taint tests")
+        : (tests => 8);
+}
+
+use re::engine::Plugin (
+    exec => sub {
+        my ($re, $str) = @_;
+
+        ok(tainted($str) => 'matched string tainted');
+
+        my $one = $str;
+        my $two = $str; untaint($two);
+
+        ok(tainted($one));
+        ok(!tainted($two));
+
+        $re->num_captures(
+            FETCH => sub {
+                my ($re, $p) = @_;
+
+                return $one if $p == 1;
+                return $two if $p == 2;
+            },
+        );
+
+        1;
+    }
+);
+
+my $str = "string";
+taint($str);
+ok(tainted($str));
+
+if ($str =~ /pattern/) {
+    cmp_ok $1, 'eq', $str;
+    ok(tainted($1) => '$1 is tainted');
+
+    cmp_ok $2, 'eq', $str;
+    ok(!tainted($2) => '$2 is untainted');
+}