File: switch-I-and-M.t

package info (click to toggle)
perl 5.42.0-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 128,392 kB
  • sloc: perl: 534,963; ansic: 240,563; sh: 72,042; pascal: 6,934; xml: 2,428; yacc: 1,360; makefile: 1,197; cpp: 208; lisp: 1
file content (55 lines) | stat: -rw-r--r-- 1,644 bytes parent folder | download
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
#!./perl

BEGIN {
    chdir 't' if -d 't';
    @INC = '../lib';
}

use strict;
use warnings;
use Config;

require './test.pl';

plan(3);

# first test using -Margs ...
$ENV{PERL5OPT} = "-Mlib=optm1 -Iopti1 -Mlib=optm2 -Iopti2";
$ENV{PERL5LIB} = join($Config{path_sep}, qw(e1 e2));

# -I causes S_incpush to be called with options that will add this if it exists,
# so we may need to expect it.
my $archdir = '../lib/' . $Config{archname};
my $archdir_expected = -d $archdir ? " $archdir" : '';

# this isn't *quite* identical to what's in perlrun.pod, because
# test.pl:_create_runperl adds -I../lib and -I.
like(
    runperl(
        switches => [qw(-Ii1 -Mlib=m1 -Ii2 -Mlib=m2)],
        prog     => 'print join(q( ), @INC)'
    ),
    qr{^\Qoptm2 optm1 m2 m1 opti2 opti1$archdir_expected ../lib . i1 i2 e1 e2\E\b},
    "Order of application of -I and -M matches documentation"
);

# and now using -M and -I args with a space. NB that '-M foo' and '-I foo'
# aren't supported in PERL5OPT.
like(
    runperl(
        switches => [qw(-I i1 -M lib=m1 -I i2 -M lib=m2)],
        prog     => 'print join(q( ), @INC)'
    ),
    qr{^\Qoptm2 optm1 m2 m1 opti2 opti1$archdir_expected ../lib . i1 i2 e1 e2\E\b},
    "... still matches when the switch is followed by a space then its parameter"
);

# and now with a mixture of args with and without spaces
like(
    runperl(
        switches => [qw(-Ii1 -Mlib=m1 -I i2 -M lib=m2)],
        prog     => 'print join(q( ), @INC)'
    ),
    qr{^\Qoptm2 optm1 m2 m1 opti2 opti1$archdir_expected ../lib . i1 i2 e1 e2\E\b},
    "... still matches when we've got a mixture of args with and without spaces"
);