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)

Reply via email to