1#!perl -T
2
3BEGIN {
4  my $fail = '';
5  $fail = "Skipped for perl 5.6.x" if $] < 5.007;
6  $fail = "Skipping for Android (tests fail)" if lc($^O) eq 'android';
7  if ($fail) {
8    print "1..1\nok 1\n";
9    warn "$fail\n";
10    exit(0);
11  }
12}
13
14use warnings; use strict;
15use FindBin '$Bin';
16my $bin;
17BEGIN {
18    # untaint
19    ($bin) = $Bin =~ m/(.*)/;
20}
21my $t = $bin;
22use lib $bin;
23
24use Test::More tests => 10;
25use Test::Warn;
26use TestInlineSetup;
27use Inline Config => DIRECTORY => $TestInlineSetup::DIR;
28
29# deal with running as root - actually simulate running as setuid program. Avoid on Windows.
30eval { $< = 1 }; # ignore failure
31
32my $w1 = 'Blindly untainting tainted fields in %ENV';
33my $w2 = 'Blindly untainting Inline configuration file information';
34my $w3 = 'Blindly untainting tainted fields in Inline object';
35
36warnings_like {require_taint_1()} [qr/$w1/, qr/$w2/, qr/$w1/, qr/$w3/], 'warn_test 1';
37warnings_like {require_taint_2()} [qr/$w1/, qr/$w2/, qr/$w1/, qr/$w3/], 'warn_test 2';
38warnings_like {require_taint_3()} [qr/$w1/, qr/$w2/, qr/$w1/, qr/$w3/, qr/$w1/, qr/$w2/, qr/$w1/, qr/$w3/], 'warn_test 3';
39
40sub require_taint_1 {
41    require "$t/08taint_1.p";
42}
43
44sub require_taint_2 {
45    require "$t/08taint_2.p";
46}
47
48sub require_taint_3 {
49    require "$t/08taint_3.p";
50}
51