bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FYI: tests/misc/pwd-long: tiny change


From: Jim Meyering
Subject: FYI: tests/misc/pwd-long: tiny change
Date: Mon, 23 Oct 2006 11:56:47 +0200

I started getting a new diagnostic yesterday during "make check",
in tests/misc, but it didn't cause a test failure:

    shell-init: error retrieving current directory: getcwd: cannot access 
parent directories: File name too long
    PASS: pwd-long

Here's how I fixed it:

2006-10-23  Jim Meyering  <address@hidden>

        * tests/misc/pwd-long: Undo last change, since it made Perl invoke
        pwd via a shell.  Instead, ensure that the absolute name of the
        pwd binary consists solely of reasonable characters.

diff --git a/tests/misc/pwd-long b/tests/misc/pwd-long
index bf6d004..a9fb402 100755
--- a/tests/misc/pwd-long
+++ b/tests/misc/pwd-long
@@ -1,5 +1,5 @@
 #!/bin/sh
-# Check "printf" with long arguments.
+# Ensure that pwd works even when run from a very deep directory.

 # Copyright (C) 2006 Free Software Foundation, Inc.

@@ -46,7 +46,7 @@ export ARGV_0
 CWD=$pwd/$tmp
 export CWD

-$PERL -w -- - <<\EOF
+exec $PERL -Tw -- - <<\EOF

 # Show that pwd works even when the length of the resulting
 # directory name is longer than PATH_MAX.
@@ -55,6 +55,10 @@ use Cwd;

 (my $ME = $ENV{ARGV_0}) =~ s|.*/||;

+# Set up a safe, well-known environment
+delete @ENV{qw(BASH_ENV CDPATH ENV PATH)};
+$ENV{IFS}  = '';
+
 my $cwd = $ENV{CWD};
 my $z = 'z' x 31;
 my $n = 256;
@@ -72,10 +76,19 @@ until (++$i == $n);
 my $build_src_dir = $ENV{BUILD_SRC_DIR};
 $build_src_dir
   or die "$ME: envvar BUILD_SRC_DIR not defined\n";
+if ($build_src_dir !~ m!^([-.:/\w]+)$!)
+  {
+    warn "$0: skipping this test; odd build source directory name:\n"
+      . "$build_src_dir\n";
+    exit 77;
+  }
+$build_src_dir = $1;
+
 my $pwd_binary = "$build_src_dir/pwd";
+
 -x $pwd_binary
   or die "$ME: $pwd_binary is not an executable file\n";
-chomp (my $actual = `"$pwd_binary"`);
+chomp (my $actual = `$pwd_binary`);
 if ($expected ne $actual)
   {
     my $e_len = length $expected;
M ChangeLog
M tests/misc/pwd-long
Committed as a002111341cec3efa6207143b56ca51db1123f91




reply via email to

[Prev in Thread] Current Thread [Next in Thread]