summaryrefslogtreecommitdiff
path: root/cpan/dist/PathTools/t/tmpdir.t
diff options
context:
space:
mode:
Diffstat (limited to 'cpan/dist/PathTools/t/tmpdir.t')
-rw-r--r--cpan/dist/PathTools/t/tmpdir.t53
1 files changed, 53 insertions, 0 deletions
diff --git a/cpan/dist/PathTools/t/tmpdir.t b/cpan/dist/PathTools/t/tmpdir.t
new file mode 100644
index 00000000..0f03dc55
--- /dev/null
+++ b/cpan/dist/PathTools/t/tmpdir.t
@@ -0,0 +1,53 @@
+use strict;
+use Test::More tests => 8;
+
+# Grab all of the plain routines from File::Spec
+use File::Spec;
+use File::Spec::Win32;
+
+require_ok($_) foreach qw(File::Spec File::Spec::Win32);
+
+
+if ($^O eq 'VMS') {
+ # hack:
+ # Need to cause the %ENV to get populated or you only get the builtins at
+ # first, and then something else can cause the hash to get populated.
+ my %look_env = %ENV;
+}
+my $num_keys = keys %ENV;
+File::Spec->tmpdir;
+is scalar keys %ENV, $num_keys, "tmpdir() shouldn't change the contents of %ENV";
+
+SKIP: {
+ skip("Can't make list assignment to %ENV on this system", 1)
+ if $^O eq 'VMS';
+
+ local %ENV;
+ File::Spec::Win32->tmpdir;
+ is(scalar keys %ENV, 0, "Win32->tmpdir() shouldn't change the contents of %ENV");
+}
+
+File::Spec::Win32->tmpdir;
+is(scalar keys %ENV, $num_keys, "Win32->tmpdir() shouldn't change the contents of %ENV");
+
+# Changing tmpdir dynamically
+for ('File::Spec', "File::Spec::Win32") {
+ SKIP: {
+ skip('sys$scratch: takes precedence over env on vms', 1)
+ if $^O eq 'VMS';
+ local $ENV{TMPDIR} = $_->catfile($_->curdir, 'lib');
+ -d $ENV{TMPDIR} && -w _
+ or skip "Can't create usable TMPDIR env var", 1;
+ my $tmpdir1 = $_->tmpdir;
+ $ENV{TMPDIR} = $_->catfile($_->curdir, 't');
+ -d $ENV{TMPDIR} && -w _
+ or skip "Can't create usable TMPDIR env var", 1;
+ my $tmpdir2 = $_->tmpdir;
+ isn't $tmpdir2, $tmpdir1, "$_->tmpdir works with changing env";
+ }
+}
+
+ok(
+ File::Spec->file_name_is_absolute(File::Spec->tmpdir()),
+ "tmpdir() always returns an absolute path"
+);