/
02-dash-n.t
59 lines (42 loc) 路 982 Bytes
/
02-dash-n.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
use v6;
use Test;
=begin pod
Test -n implementation
The -n command line switch mimics the Perl5 -n command line
switch, and wraps the whole script in
for (lines) {
...
};
=end pod
# L<S19/Reference/"Act like awk.">
my @examples = (
'-n -e .say',
'-ne .say',
'-e "" -ne .say',
);
plan +@examples;
if $*OS eq "browser" {
skip_rest "Programs running in browsers don't have access to regular IO.";
exit;
}
diag "Running under $*OS";
my ($redir_in, $redir_out) = ("<", ">");
my $str = "
foo
bar
";
sub nonce () { return (".{$*PID}." ~ (1..1000).pick) }
my ($in_fn, $out_fn) = <temp-ex-input temp-ext-output> >>~>> nonce;
my $h = open("$in_fn", :w);
$h.print($str);
$h.close();
for @examples -> $ex {
my $command = "$*EXECUTABLE_NAME $ex $redir_in $in_fn $redir_out $out_fn";
diag $command;
run $command;
my $expected = $str;
my $got = slurp $out_fn;
unlink $out_fn;
is $got, $expected, "-n -e print works like cat";
}
unlink $in_fn;