mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
97
samples/Perl 6/01-dash-uppercase-i.t
Normal file
97
samples/Perl 6/01-dash-uppercase-i.t
Normal file
@@ -0,0 +1,97 @@
|
||||
use v6;
|
||||
|
||||
use Test;
|
||||
|
||||
=begin pod
|
||||
|
||||
Test handling of -I.
|
||||
|
||||
Multiple C<-I> switches are supposed to
|
||||
prepend left-to-right:
|
||||
|
||||
-Ifoo -Ibar
|
||||
|
||||
should make C<@*INC> look like:
|
||||
|
||||
foo
|
||||
bar
|
||||
...
|
||||
|
||||
Duplication of directories on the command line is mirrored
|
||||
in the C<@*INC> variable, so C<pugs -Ilib -Ilib> will have B<two>
|
||||
entries C<lib/> in C<@*INC>.
|
||||
|
||||
=end pod
|
||||
|
||||
# L<S19/Reference/"Prepend directories to">
|
||||
|
||||
my $fragment = '-e "@*INC.perl.say"';
|
||||
|
||||
my @tests = (
|
||||
'foo',
|
||||
'foo$bar',
|
||||
'foo bar$baz',
|
||||
'foo$foo',
|
||||
);
|
||||
|
||||
plan @tests*2;
|
||||
|
||||
diag "Running under $*OS";
|
||||
|
||||
my ($pugs,$redir) = ($*EXECUTABLE_NAME, ">");
|
||||
|
||||
if $*OS eq any <MSWin32 mingw msys cygwin> {
|
||||
$pugs = 'pugs.exe';
|
||||
$redir = '>';
|
||||
};
|
||||
|
||||
sub nonce () { return (".{$*PID}." ~ (1..1000).pick) }
|
||||
|
||||
sub run_pugs ($c) {
|
||||
my $tempfile = "temp-ex-output" ~ nonce;
|
||||
my $command = "$pugs $c $redir $tempfile";
|
||||
diag $command;
|
||||
run $command;
|
||||
my $res = slurp $tempfile;
|
||||
unlink $tempfile;
|
||||
return $res;
|
||||
}
|
||||
|
||||
for @tests -> $t {
|
||||
my @dirs = split('$',$t);
|
||||
my $command;
|
||||
# This should be smarter about quoting
|
||||
# (currently, this should work for WinNT and Unix shells)
|
||||
$command = join " ", map { qq["-I$_"] }, @dirs;
|
||||
my $got = run_pugs( $command ~ " $fragment" );
|
||||
$got .= chomp;
|
||||
|
||||
if (substr($got,0,1) ~~ "[") {
|
||||
# Convert from arrayref to array
|
||||
$got = substr($got, 1, -1);
|
||||
};
|
||||
|
||||
my @got = EVAL $got;
|
||||
@got = @got[ 0..@dirs-1 ];
|
||||
my @expected = @dirs;
|
||||
|
||||
is @got, @expected, "'" ~ @dirs ~ "' works";
|
||||
|
||||
$command = join " ", map { qq[-I "$_"] }, @dirs;
|
||||
$got = run_pugs( $command ~ " $fragment" );
|
||||
|
||||
$got .= chomp;
|
||||
if (substr($got,0,1) ~~ "[") {
|
||||
# Convert from arrayref to array
|
||||
$got = substr($got, 1, -1);
|
||||
};
|
||||
|
||||
@got = EVAL $got;
|
||||
@got = @got[ 0..@dirs-1 ];
|
||||
@expected = @dirs;
|
||||
|
||||
is @got, @expected, "'" ~ @dirs ~ "' works (with a space delimiting -I)";
|
||||
}
|
||||
|
||||
|
||||
# vim: ft=perl6
|
||||
Reference in New Issue
Block a user