mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
98 lines
1.8 KiB
Raku
98 lines
1.8 KiB
Raku
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
|