Commit | Line | Data |
76dd4efc |
1 | #!./perl -w |
2 | |
3 | # Tests for the command-line switches |
4 | |
5 | BEGIN { |
6 | chdir 't' if -d 't'; |
7 | @INC = '../lib'; |
8 | unless (find PerlIO::Layer 'perlio') { |
9 | print "1..0 # Skip: not perlio\n"; |
10 | exit 0; |
11 | } |
e27b5b51 |
12 | if ($ENV{PERL_CORE_MINITEST}) { |
13 | print "1..0 # Skip : -C and \$ENV{PERL_UNICODE} are disabled on miniperl\n"; |
14 | exit 0; |
15 | } |
16 | |
76dd4efc |
17 | } |
18 | |
768fd157 |
19 | BEGIN { require "./test.pl"; } |
76dd4efc |
20 | |
74b2b4b1 |
21 | plan(tests => 9); |
76dd4efc |
22 | |
23 | my $r; |
24 | |
2d90ac95 |
25 | my $tmpfile = tempfile(); |
76dd4efc |
26 | |
a901eef8 |
27 | my $b = pack("C*", unpack("U0C*", pack("U",256))); |
28 | |
76dd4efc |
29 | $r = runperl( switches => [ '-CO', '-w' ], |
30 | prog => 'print chr(256)', |
31 | stderr => 1 ); |
a901eef8 |
32 | like( $r, qr/^$b(?:\r?\n)?$/s, '-CO: no warning on UTF-8 output' ); |
76dd4efc |
33 | |
06e66572 |
34 | SKIP: { |
81ff9b36 |
35 | if (exists $ENV{PERL_UNICODE} && |
36 | ($ENV{PERL_UNICODE} eq "" || $ENV{PERL_UNICODE} =~ /[SO]/)) { |
37 | skip(qq[cannot test with PERL_UNICODE locale "" or /[SO]/], 1); |
06e66572 |
38 | } |
39 | $r = runperl( switches => [ '-CI', '-w' ], |
40 | prog => 'print ord(<STDIN>)', |
41 | stderr => 1, |
a901eef8 |
42 | stdin => $b ); |
a4c0dc87 |
43 | like( $r, qr/^256(?:\r?\n)?$/s, '-CI: read in UTF-8 input' ); |
06e66572 |
44 | } |
76dd4efc |
45 | |
46 | $r = runperl( switches => [ '-CE', '-w' ], |
47 | prog => 'warn chr(256), qq(\n)', |
48 | stderr => 1 ); |
a901eef8 |
49 | like( $r, qr/^$b(?:\r?\n)?$/s, '-CE: UTF-8 stderr' ); |
76dd4efc |
50 | |
51 | $r = runperl( switches => [ '-Co', '-w' ], |
2d90ac95 |
52 | prog => "open(F, q(>$tmpfile)); print F chr(256); close F", |
76dd4efc |
53 | stderr => 1 ); |
a4c0dc87 |
54 | like( $r, qr/^$/s, '-Co: auto-UTF-8 open for output' ); |
76dd4efc |
55 | |
76dd4efc |
56 | $r = runperl( switches => [ '-Ci', '-w' ], |
2d90ac95 |
57 | prog => "open(F, q(<$tmpfile)); print ord(<F>); close F", |
76dd4efc |
58 | stderr => 1 ); |
a4c0dc87 |
59 | like( $r, qr/^256(?:\r?\n)?$/s, '-Ci: auto-UTF-8 open for input' ); |
76dd4efc |
60 | |
61 | $r = runperl( switches => [ '-CA', '-w' ], |
62 | prog => 'print ord shift', |
63 | stderr => 1, |
64 | args => [ chr(256) ] ); |
a4c0dc87 |
65 | like( $r, qr/^256(?:\r?\n)?$/s, '-CA: @ARGV' ); |
76dd4efc |
66 | |
4ba71d51 |
67 | $r = runperl( switches => [ '-CS', '-w' ], |
ff197582 |
68 | progs => [ '#!perl -CS', 'print chr(256)'], |
4ba71d51 |
69 | stderr => 1, ); |
70 | like( $r, qr/^$b(?:\r?\n)?$/s, '#!perl -C' ); |
74b2b4b1 |
71 | |
72 | $r = runperl( switches => [ '-CA', '-w' ], |
ff197582 |
73 | progs => [ '#!perl -CS', 'print chr(256)' ], |
74b2b4b1 |
74 | stderr => 1, ); |
75 | like( $r, qr/^Too late for "-CS" option at -e line 1\.$/s, |
76 | '#!perl -C with different -C on command line' ); |
77 | |
78 | $r = runperl( switches => [ '-w' ], |
ff197582 |
79 | progs => [ '#!perl -CS', 'print chr(256)' ], |
74b2b4b1 |
80 | stderr => 1, ); |
81 | like( $r, qr/^Too late for "-CS" option at -e line 1\.$/s, |
82 | '#!perl -C but not command line' ); |