summaryrefslogtreecommitdiffhomepage
path: root/testsuite
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-04-09 10:52:52 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-04-09 10:52:52 +0200
commit02365a6ef73defb8689d3ed5228125d72993dec9 (patch)
tree26358e718c5232ee44ad750f1b386f0f4138512a /testsuite
parent823b636cd14d337ebb8766c5c181737fb3860b42 (diff)
tar: fix mishandling of repeated hardlink in tarball; expand tests
function old new delta data_extract_all 727 767 +40 get_header_tar 1576 1572 -4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'testsuite')
-rwxr-xr-xtestsuite/tar.tests52
1 files changed, 45 insertions, 7 deletions
diff --git a/testsuite/tar.tests b/testsuite/tar.tests
index 71095cb20..dd8f11062 100755
--- a/testsuite/tar.tests
+++ b/testsuite/tar.tests
@@ -4,20 +4,25 @@
. ./testing.sh
-mkdir tempdir && cd tempdir || exit 1
+rm -rf tar.tempdir 2>/dev/null
+mkdir tar.tempdir && cd tar.tempdir || exit 1
# testing "test name" "script" "expected result" "file input" "stdin"
-testing "tar hardlinks and repeated files" "\
+testing "tar hardlinks and repeated files" '\
rm -rf input_* test.tar 2>/dev/null
>input_hard1
ln input_hard1 input_hard2
mkdir input_dir
>input_dir/file
+chmod -R 644 *
+chmod 755 input_dir
tar cf test.tar input input_dir/ input_hard1 input_hard2 input_hard1 input_dir/ input
-tar tvf test.tar | sed 's/.*[0-9] input/input/'
-tar xf test.tar 2>&1 && echo Ok
-" "\
+tar tvf test.tar | sed "s/.*[0-9] input/input/"
+tar xf test.tar 2>&1
+echo Ok: $?
+ls -l . input_dir/* | grep input_ | sed "s/\\(^[^ ]*\\) .* input/\\1 input/"
+' "\
input
input_dir/
input_dir/file
@@ -27,7 +32,40 @@ input_hard1 -> input_hard1
input_dir/
input_dir/file
input
-Ok
+Ok: 0
+-rw-r--r-- input_dir/file
+drwxr-xr-x input_dir
+-rw-r--r-- input_hard1
+-rw-r--r-- input_hard2
+" \
+"" ""
+
+testing "tar hardlinks mode" '\
+rm -rf input_* test.tar 2>/dev/null
+>input_hard1
+chmod 741 input_hard1
+ln input_hard1 input_hard2
+mkdir input_dir
+chmod 550 input_dir
+ln input_hard1 input_dir
+ln input_hard2 input_dir
+tar cf test.tar input_*
+tar tvf test.tar | sed "s/.*[0-9] input/input/"
+tar xf test.tar 2>&1
+echo Ok: $?
+ls -l . input_dir/* | grep input_ | sed "s/\\(^[^ ]*\\) .* input/\\1 input/"
+' "\
+input_dir/
+input_dir/input_hard1
+input_dir/input_hard2 -> input_dir/input_hard1
+input_hard1 -> input_dir/input_hard1
+input_hard2 -> input_dir/input_hard1
+Ok: 0
+-rwxr----x input_dir/input_hard1
+-rwxr----x input_dir/input_hard2
+dr-xr-x--- input_dir
+-rwxr----x input_hard1
+-rwxr----x input_hard2
" \
"" ""
@@ -46,6 +84,6 @@ Ok
"Ok\n" ""
SKIP=
-cd .. && rm -rf tempdir || exit 1
+cd .. && rm -rf tar.tempdir || exit 1
exit $FAILCOUNT