xref: /openbsd-src/gnu/usr.bin/perl/t/run/switchF2.t (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
16fb12b70Safresh1#!./perl
26fb12b70Safresh1
36fb12b70Safresh1BEGIN {
46fb12b70Safresh1    chdir 't' if -d 't';
56fb12b70Safresh1    @INC = '../lib';
66fb12b70Safresh1    require './test.pl';
76fb12b70Safresh1}
86fb12b70Safresh1
96fb12b70Safresh1{ # perl #116190
106fb12b70Safresh1  fresh_perl_is('print qq!@F!', '1 2',
116fb12b70Safresh1		{
126fb12b70Safresh1		 stdin => "1:2",
136fb12b70Safresh1		 switches => [ '-n', '-F:' ],
146fb12b70Safresh1		}, "passing -F implies -a");
156fb12b70Safresh1  fresh_perl_is('print qq!@F!', '1 2',
166fb12b70Safresh1		{
176fb12b70Safresh1		 stdin => "1:2",
186fb12b70Safresh1		 switches => [ '-F:' ],
196fb12b70Safresh1		}, "passing -F implies -an");
206fb12b70Safresh1  fresh_perl_is('print join q!,!, @F', '1,2',
216fb12b70Safresh1		{
226fb12b70Safresh1		 stdin => "1 2",
236fb12b70Safresh1		 switches => [ '-a' ],
246fb12b70Safresh1		}, "passing -a implies -n");
256fb12b70Safresh1}
26*f2a19305Safresh1
27*f2a19305Safresh1
28*f2a19305Safresh1my $have_config = eval { require Config; 1 };
29*f2a19305Safresh1SKIP:
30*f2a19305Safresh1{
31*f2a19305Safresh1  $have_config or skip "Can't check if we have threads", 1;
32*f2a19305Safresh1  $Config::Config{usethreads} or skip "No threads", 1;
33*f2a19305Safresh1  is_miniperl() and skip "threads module not available under miniperl", 1;
34*f2a19305Safresh1  # this would only fail under valgrind/ASAN
35*f2a19305Safresh1  fresh_perl_is('print $F[1]; threads->new(sub {})->join', "b",
36*f2a19305Safresh1                {
37*f2a19305Safresh1                    switches => [ "-F,", "-Mthreads" ],
38*f2a19305Safresh1                    stdin => "a,b,c",
39*f2a19305Safresh1                }, "PL_splitstr freed in each thread");
40*f2a19305Safresh1}
41*f2a19305Safresh1
42*f2a19305Safresh1{
43*f2a19305Safresh1  # old value of PL_splitstr wasn't freed with multiple switches (it wasn't safe to before)
44*f2a19305Safresh1  # this would only fail under valgrind/LSAN
45*f2a19305Safresh1  fresh_perl_is('print $F[1]', "b",
46*f2a19305Safresh1                {
47*f2a19305Safresh1                    switches => [ "-F:", "-F," ],
48*f2a19305Safresh1                    stdin => "a,b,c",
49*f2a19305Safresh1                }, "PL_splitstr freed on extra -F switch");
50*f2a19305Safresh1}
51*f2a19305Safresh1
52*f2a19305Safresh1done_testing();
53