From 61097a0ac091093a5b2829b9470f9ec71a92b7bf Mon Sep 17 00:00:00 2001 From: James E Keenan Date: Sun, 1 Dec 2013 19:24:06 +0100 Subject: [PATCH] Standardize dir_path() and file_path() in package Testing. The versions of dir_path() and file_path() previously found in find.t and taint.t differed only in VMS-specific provisions in taint.t. Move the taint.t-versions to the package and use them in both files. --- ext/File-Find/t/find.t | 57 ++------------------------------------ ext/File-Find/t/lib/Testing.pm | 61 +++++++++++++++++++++++++++++++++++++++++ ext/File-Find/t/taint.t | 62 ++---------------------------------------- 3 files changed, 65 insertions(+), 115 deletions(-) diff --git a/ext/File-Find/t/find.t b/ext/File-Find/t/find.t index 42b379c..03a2145 100644 --- a/ext/File-Find/t/find.t +++ b/ext/File-Find/t/find.t @@ -36,6 +36,8 @@ use Testing qw( create_file_ok mkdir_ok symlink_ok + dir_path + file_path ); my %Expect_File = (); # what we expect for $_ @@ -211,66 +213,11 @@ sub my_postprocess { delete $Expect_Dir{ $File::Find::dir}; } -# Use dir_path() to specify a directory path that is expected for -# $File::Find::dir (%Expect_Dir). Also use it in file operations like -# chdir, rmdir etc. -# -# dir_path() concatenates directory names to form a *relative* -# directory path, independent from the platform it is run on, although -# there are limitations. Do not try to create an absolute path, -# because that may fail on operating systems that have the concept of -# volume names (e.g. Mac OS). As a special case, you can pass it a "." -# as first argument, to create a directory path like "./fa/dir". If there is -# no second argument, this function will return "./" - -sub dir_path { - my $first_arg = shift @_; - - if ($first_arg eq '.') { - return './' unless @_; - my $path = File::Spec->catdir(@_); - # add leading "./" - $path = "./$path"; - return $path; - } - else { # $first_arg ne '.' - return $first_arg unless @_; # return plain filename - return File::Spec->catdir($first_arg, @_); # relative path - } -} - # Use topdir() to specify a directory path that you want to pass to # find/finddepth. Historically topdir() differed on Mac OS classic. *topdir = \&dir_path; -# Use file_path() to specify a file path that is expected for $_ -# (%Expect_File). Also suitable for file operations like unlink etc. -# -# file_path() concatenates directory names (if any) and a filename to -# form a *relative* file path (the last argument is assumed to be a -# file). It is independent from the platform it is run on, although -# there are limitations. As a special case, you can pass it a "." as -# first argument, to create a file path like "./fa/file" on operating -# systems. If there is no second argument, this function will return the -# string "./" - -sub file_path { - my $first_arg = shift @_; - - if ($first_arg eq '.') { - return './' unless @_; - my $path = File::Spec->catfile(@_); - # add leading "./" - $path = "./$path"; - return $path; - } - else { # $first_arg ne '.' - return $first_arg unless @_; # return plain filename - return File::Spec->catfile($first_arg, @_); # relative path - } -} - # Use file_path_name() to specify a file path that is expected for # $File::Find::Name (%Expect_Name). Note: When the no_chdir => 1 # option is in effect, $_ is the same as $File::Find::Name. In that diff --git a/ext/File-Find/t/lib/Testing.pm b/ext/File-Find/t/lib/Testing.pm index 70c5dcd..c638ce0 100644 --- a/ext/File-Find/t/lib/Testing.pm +++ b/ext/File-Find/t/lib/Testing.pm @@ -8,6 +8,8 @@ our @EXPORT_OK = qw( create_file_ok mkdir_ok symlink_ok + dir_path + file_path ); # Wrappers around Test::More::ok() for creation of files, directories and @@ -36,4 +38,63 @@ sub symlink_ok($$;$) { or die("Unable to symlink from $oldfile to $newfile"); } +# Use dir_path() to specify a directory path that is expected for +# $File::Find::dir (%Expect_Dir). Also use it in file operations like +# chdir, rmdir etc. +# +# dir_path() concatenates directory names to form a *relative* +# directory path, independent from the platform it is run on, although +# there are limitations. Do not try to create an absolute path, +# because that may fail on operating systems that have the concept of +# volume names (e.g. Mac OS). As a special case, you can pass it a "." +# as first argument, to create a directory path like "./fa/dir". If there is +# no second argument, this function will return "./" + +sub dir_path { + my $first_arg = shift @_; + + if ($first_arg eq '.') { + return './' unless @_; + my $path = File::Spec->catdir(@_); + # add leading "./" + $path = "./$path"; + return $path; + } + else { # $first_arg ne '.' + return $first_arg unless @_; # return plain filename + my $fname = File::Spec->catdir($first_arg, @_); # relative path + $fname = VMS::Filespec::unixpath($fname) if $^O eq 'VMS'; + return $fname; + } +} + +# Use file_path() to specify a file path that is expected for $_ +# (%Expect_File). Also suitable for file operations like unlink etc. +# +# file_path() concatenates directory names (if any) and a filename to +# form a *relative* file path (the last argument is assumed to be a +# file). It is independent from the platform it is run on, although +# there are limitations. As a special case, you can pass it a "." as +# first argument, to create a file path like "./fa/file" on operating +# systems. If there is no second argument, this function will return the +# string "./" + +sub file_path { + my $first_arg = shift @_; + + if ($first_arg eq '.') { + return './' unless @_; + my $path = File::Spec->catfile(@_); + # add leading "./" + $path = "./$path"; + return $path; + } + else { # $first_arg ne '.' + return $first_arg unless @_; # return plain filename + my $fname = File::Spec->catfile($first_arg, @_); # relative path + $fname = VMS::Filespec::unixify($fname) if $^O eq 'VMS'; + return $fname; + } +} + 1; diff --git a/ext/File-Find/t/taint.t b/ext/File-Find/t/taint.t index e4fb6c9..1675e6c 100644 --- a/ext/File-Find/t/taint.t +++ b/ext/File-Find/t/taint.t @@ -13,6 +13,8 @@ use Testing qw( create_file_ok mkdir_ok symlink_ok + dir_path + file_path ); my %Expect_File = (); # what we expect for $_ @@ -139,71 +141,11 @@ sub simple_wanted { print "# \$_ => '$_'\n"; } - -# Use dir_path() to specify a directory path that's expected for -# $File::Find::dir (%Expect_Dir). Also use it in file operations like -# chdir, rmdir etc. -# -# dir_path() concatenates directory names to form a *relative* -# directory path, independent from the platform it's run on, although -# there are limitations. Don't try to create an absolute path, -# because that may fail on operating systems that have the concept of -# volume names (e.g. Mac OS). As a special case, you can pass it a "." -# as first argument, to create a directory path like "./fa/dir". If there's -# no second argument this function will return the string "./" - -sub dir_path { - my $first_arg = shift @_; - - if ($first_arg eq '.') { - return './' unless @_; - my $path = File::Spec->catdir(@_); - # add leading "./" - $path = "./$path"; - return $path; - } else { # $first_arg ne '.' - return $first_arg unless @_; # return plain filename - my $fname = File::Spec->catdir($first_arg, @_); # relative path - $fname = VMS::Filespec::unixpath($fname) if $^O eq 'VMS'; - return $fname; - } -} - - # Use topdir() to specify a directory path that you want to pass to # find/finddepth. Historically topdir() differed on Mac OS classic. *topdir = \&dir_path; - -# Use file_path() to specify a file path that's expected for $_ -# (%Expect_File). Also suitable for file operations like unlink etc. -# -# file_path() concatenates directory names (if any) and a filename to -# form a *relative* file path (the last argument is assumed to be a -# file). It's independent from the platform it's run on, although -# there are limitations. As a special case, you can pass it a "." as -# first argument, to create a file path like "./fa/file". If there's no -# second argument, this function will return the string "./" otherwise. - -sub file_path { - my $first_arg = shift @_; - - if ($first_arg eq '.') { - return './' unless @_; - my $path = File::Spec->catfile(@_); - # add leading "./" - $path = "./$path"; - return $path; - } else { # $first_arg ne '.' - return $first_arg unless @_; # return plain filename - my $fname = File::Spec->catfile($first_arg, @_); # relative path - $fname = VMS::Filespec::unixify($fname) if $^O eq 'VMS'; - return $fname; - } -} - - # Use file_path_name() to specify a file path that's expected for # $File::Find::Name (%Expect_Name). Note: When the no_chdir => 1 # option is in effect, $_ is the same as $File::Find::Name. In that -- 1.8.3.1