Hello tarchivers,
test 95 "filename normalization" (incr08.at) fails with tar-1.28 (see
attachment testsuite.log).
There are 3 additional lines in the stdout compared to the expected
result:
./
./subdir/
./subdir/dir1/
ABSPATH/
+ABSPATH/foo/
+ABSPATH/foo/subdir/
+ABSPATH/foo/subdir/dir1/
ABSPATH/subdir/
ABSPATH/subdir/dir2/
After searching, I found that the reason was I built tar from a directory
"tar-src" symlinked to "tar-1.28" and the function normalize_filename()
doesn't return the same path if the same directory is absolute or relative.
For the relative directories:
.
./subdir
./subdir/dir1
normalize_filename() returns:
/home/seti/source/tar-1.28/tests/testsuite.dir/095/gnu/tartest/foo
/home/seti/source/tar-1.28/tests/testsuite.dir/095/gnu/tartest/foo/subdir
/home/seti/source/tar-1.28/tests/testsuite.dir/095/gnu/tartest/foo/subdir/dir1
Whereas the following absolute directories are left unchanged:
/home/seti/source/tar-src/tests/testsuite.dir/095/gnu/tartest/foo
/home/seti/source/tar-src/tests/testsuite.dir/095/gnu/tartest/foo/subdir
/home/seti/source/tar-src/tests/testsuite.dir/095/gnu/tartest/foo/subdir/dir1
In the testsuite.log stderr output, there is an additional line compared
to the expected result:
tar: ./subdir: Directory is new
tar: ./subdir/dir1: Directory is new
tar: ABSPATH: Directory is new
+tar: ABSPATH/foo: Directory has been renamed from '.'
tar: ABSPATH/subdir: Directory is new
tar: ABSPATH/subdir/dir2: Directory is new
tar: Removing leading `/' from member names
I think it is related to the normalize_filename() too but I didn't dig
more.
Sylvain.
# -*- compilation -*-
95. incr08.at:38: testing filename normalization ...
./incr08.at:41:
mkdir gnu
(cd gnu
TEST_TAR_FORMAT=gnu
export TEST_TAR_FORMAT
TAR_OPTIONS="-H gnu"
export TAR_OPTIONS
rm -rf *
test -z "`sort < /dev/null 2>&1`" || exit 77
mkdir tartest
cd tartest
mkdir foo
mkdir foo/subdir
mkdir foo/subdir/dir1
mkdir subdir
mkdir subdir/dir2
decho A
find .|sort
decho B
DIR=`pwd`
tar -cvf ../foo.tar --listed-incremental=../foo.snar -C foo . $DIR 2>../err |\
sed "s|$DIR|ABSPATH|"
sed "s|$DIR|ABSPATH|" ../err >&2
)
--- - 2015-11-01 10:31:08.399380434 +0100
+++ /home/seti/source/tar-src/tests/testsuite.dir/at-groups/95/stderr
2015-11-01 10:31:08.392424200 +0100
@@ -4,6 +4,7 @@
tar: ./subdir: Directory is new
tar: ./subdir/dir1: Directory is new
tar: ABSPATH: Directory is new
+tar: ABSPATH/foo: Directory has been renamed from '.'
tar: ABSPATH/subdir: Directory is new
tar: ABSPATH/subdir/dir2: Directory is new
tar: Removing leading `/' from member names
--- - 2015-11-01 10:31:08.401388853 +0100
+++ /home/seti/source/tar-src/tests/testsuite.dir/at-groups/95/stdout
2015-11-01 10:31:08.392424200 +0100
@@ -10,6 +10,9 @@
./subdir/
./subdir/dir1/
ABSPATH/
+ABSPATH/foo/
+ABSPATH/foo/subdir/
+ABSPATH/foo/subdir/dir1/
ABSPATH/subdir/
ABSPATH/subdir/dir2/
95. incr08.at:38: 95. filename normalization (incr08.at:38): FAILED
(incr08.at:41)