mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-19 22:02:21 +02:00
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
|