mirror of
git://git.sv.gnu.org/coreutils
synced 2026-05-20 06:11:56 -04:00
f4bc6c5d12
pwd when there are multiple names for the working directory (which can happen with an automounter, sigh).
64 lines
1.3 KiB
Bash
Executable File
64 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
: ${PERL=perl}
|
|
|
|
$PERL -e 1 > /dev/null 2>&1 || {
|
|
echo 1>&2 "$0: configure didn't find a usable version of Perl," \
|
|
"so can't run this test"
|
|
exit 77
|
|
}
|
|
|
|
framework_failure=0
|
|
pwd=`${BUILD_SRC_DIR?}/pwd` || framework_failure=1
|
|
t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
|
|
trap 'status=$?; cd $pwd; chmod -R u+rwx $t0; rm -rf $t0 && exit $status' 0
|
|
trap '(exit $?); exit $?' 1 2 13 15
|
|
|
|
mkdir -p $tmp || framework_failure=1
|
|
cd $tmp || framework_failure=1
|
|
|
|
if test $framework_failure = 1; then
|
|
echo "$0: failure in testing framework" 1>&2
|
|
(exit 1); exit 1
|
|
fi
|
|
|
|
ARGV_0=$0
|
|
export ARGV_0
|
|
|
|
CWD=$pwd/$tmp
|
|
export CWD
|
|
|
|
$PERL -w -- - <<\EOF
|
|
|
|
# Show that pwd works even when the length of the resulting
|
|
# directory name is longer than PATH_MAX.
|
|
use strict;
|
|
use Cwd;
|
|
|
|
(my $ME = $ENV{ARGV_0}) =~ s|.*/||;
|
|
|
|
my $cwd = $ENV{CWD};
|
|
my $z = 'z' x 31;
|
|
my $n = 256;
|
|
my $expected = $cwd . ("/$z" x $n);
|
|
|
|
my $i = 0;
|
|
do
|
|
{
|
|
mkdir $z, 0700
|
|
or die "$ME: at depth $i: $!\n";
|
|
chdir $z;
|
|
}
|
|
until (++$i == $n);
|
|
|
|
my $build_src_dir = $ENV{BUILD_SRC_DIR};
|
|
$build_src_dir
|
|
or die "$ME: envvar BUILD_SRC_DIR not defined\n";
|
|
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`);
|
|
$expected eq $actual
|
|
or die "$ME: $expected\n$actual\n";
|
|
EOF
|