1N/A#!./perl -w
1N/A
1N/ABEGIN {
1N/A chdir 't';
1N/A @INC = '../lib';
1N/A @OrigINC = @INC;
1N/A}
1N/A
1N/Ause Test::More tests => 13;
1N/Ause Config;
1N/Ause File::Spec;
1N/Ause File::Path;
1N/A
1N/A#set up files and directories
1N/Amy @lib_dir;
1N/Amy $Lib_Dir;
1N/Amy $Arch_Dir;
1N/Amy $Auto_Dir;
1N/Amy $Module;
1N/ABEGIN {
1N/A # lib.pm is documented to only work with Unix filepaths.
1N/A @lib_dir = qw(stuff moo);
1N/A $Lib_Dir = join "/", @lib_dir;
1N/A $Arch_Dir = join "/", @lib_dir, $Config{archname};
1N/A
1N/A # create the auto/ directory and a module
1N/A $Auto_Dir = File::Spec->catdir(@lib_dir, $Config{archname},'auto');
1N/A $Module = File::Spec->catfile(@lib_dir, 'Yup.pm');
1N/A
1N/A mkpath [$Auto_Dir];
1N/A
1N/A open(MOD, ">$Module") || DIE $!;
1N/A print MOD <<'MODULE';
1N/Apackage Yup;
1N/A$Plan = 9;
1N/Areturn '42';
1N/AMODULE
1N/A
1N/A close MOD;
1N/A}
1N/A
1N/AEND {
1N/A # cleanup the auto/ directory we created.
1N/A rmtree([$lib_dir[0]]);
1N/A}
1N/A
1N/A
1N/Ause lib $Lib_Dir;
1N/Ause lib $Lib_Dir;
1N/A
1N/ABEGIN { use_ok('Yup') }
1N/A
1N/ABEGIN {
1N/A if ($^O eq 'MacOS') {
1N/A for ($Lib_Dir, $Arch_Dir) {
1N/A tr|/|:|;
1N/A $_ .= ":" unless /:$/;
1N/A $_ = ":$_" unless /^:/; # we know this path is relative
1N/A }
1N/A }
1N/A is( $INC[1], $Lib_Dir, 'lib adding at end of @INC' );
1N/A print "# \@INC == @INC\n";
1N/A is( $INC[0], $Arch_Dir, ' auto/ dir in front of that' );
1N/A is( grep(/^\Q$Lib_Dir\E$/, @INC), 1, ' no duplicates' );
1N/A
1N/A # Yes, %INC uses Unixy filepaths.
1N/A # Not on Mac OS, it doesn't ... it never has, at least.
1N/A my $path = join("/",$Lib_Dir, 'Yup.pm');
1N/A if ($^O eq 'MacOS') {
1N/A $path = $Lib_Dir . 'Yup.pm';
1N/A }
1N/A is( $INC{'Yup.pm'}, $path, '%INC set properly' );
1N/A
1N/A is( eval { do 'Yup.pm' }, 42, 'do() works' );
1N/A ok( eval { require Yup; }, ' require()' );
1N/A ok( eval "use Yup; 1;", ' use()' );
1N/A is( $@, '' );
1N/A
1N/A is_deeply(\@OrigINC, \@lib::ORIG_INC, '@lib::ORIG_INC' );
1N/A}
1N/A
1N/Ano lib $Lib_Dir;
1N/A
1N/Aunlike( do { eval 'use lib $Config{installsitelib};'; $@ || '' },
1N/A qr/::Config is read-only/, 'lib handles readonly stuff' );
1N/A
1N/ABEGIN {
1N/A is( grep(/stuff/, @INC), 0, 'no lib' );
1N/A ok( !do 'Yup.pm', ' do() effected' );
1N/A}