提交 afebd687 编写于 作者: J Junio C Hamano

Merge branch 'rs/tar-tests' into maint

* rs/tar-tests:
  t5000: test long filenames
  t5000: simplify tar-tree tests
  t5000: use check_tar for prefix test
  t5000: factor out check_tar
  t5000, t5003: create directories for extracted files lazily
  t5000: integrate export-subst tests into regular tests
......@@ -30,10 +30,76 @@ GUNZIP=${GUNZIP:-gzip -d}
SUBSTFORMAT=%H%n
test_lazy_prereq TAR_NEEDS_PAX_FALLBACK '
(
mkdir pax &&
cd pax &&
"$TAR" xf "$TEST_DIRECTORY"/t5000/pax.tar &&
test -f PaxHeaders.1791/file
)
'
get_pax_header() {
file=$1
header=$2=
while read len rest
do
if test "$len" = $(echo "$len $rest" | wc -c)
then
case "$rest" in
$header*)
echo "${rest#$header}"
;;
esac
fi
done <"$file"
}
check_tar() {
tarfile=$1.tar
listfile=$1.lst
dir=$1
dir_with_prefix=$dir/$2
test_expect_success ' extract tar archive' '
(mkdir $dir && cd $dir && "$TAR" xf -) <$tarfile
'
test_expect_success TAR_NEEDS_PAX_FALLBACK ' interpret pax headers' '
(
cd $dir &&
for header in *.paxheader
do
data=${header%.paxheader}.data &&
if test -h $data -o -e $data
then
path=$(get_pax_header $header path) &&
if test -n "$path"
then
mv "$data" "$path"
fi
fi
done
)
'
test_expect_success ' validate filenames' '
(cd ${dir_with_prefix}a && find .) | sort >$listfile &&
test_cmp a.lst $listfile
'
test_expect_success ' validate file contents' '
diff -r a ${dir_with_prefix}a
'
}
test_expect_success \
'populate workdir' \
'mkdir a b c &&
'mkdir a &&
echo simple textfile >a/a &&
ten=0123456789 && hundred=$ten$ten$ten$ten$ten$ten$ten$ten$ten$ten &&
echo long filename >a/four$hundred &&
mkdir a/bin &&
cp /bin/sh a/bin &&
printf "A\$Format:%s\$O" "$SUBSTFORMAT" >a/substfile1 &&
......@@ -62,6 +128,12 @@ test_expect_success \
git update-ref HEAD $(TZ=GMT GIT_COMMITTER_DATE="2005-05-27 22:00:00" \
git commit-tree $treeid </dev/null)'
test_expect_success 'setup export-subst' '
echo "substfile?" export-subst >>.git/info/attributes &&
git log --max-count=1 "--pretty=format:A${SUBSTFORMAT}O" HEAD \
>a/substfile1
'
test_expect_success \
'create bare clone' \
'git clone --bare . bare.git &&
......@@ -75,13 +147,19 @@ test_expect_success \
'git archive' \
'git archive HEAD >b.tar'
test_expect_success \
'git tar-tree' \
'git tar-tree HEAD >b2.tar'
check_tar b
test_expect_success \
'git archive vs. git tar-tree' \
'test_cmp b.tar b2.tar'
test_expect_success 'git archive --prefix=prefix/' '
git archive --prefix=prefix/ HEAD >with_prefix.tar
'
check_tar with_prefix prefix/
test_expect_success 'git-archive --prefix=olde-' '
git archive --prefix=olde- HEAD >with_olde-prefix.tar
'
check_tar with_olde-prefix olde-
test_expect_success 'git archive on large files' '
test_config core.bigfilethreshold 1 &&
......@@ -118,66 +196,14 @@ test_expect_success \
'git get-tar-commit-id <b.tar >b.commitid &&
test_cmp .git/$(git symbolic-ref HEAD) b.commitid'
test_expect_success \
'extract tar archive' \
'(cd b && "$TAR" xf -) <b.tar'
test_expect_success \
'validate filenames' \
'(cd b/a && find .) | sort >b.lst &&
test_cmp a.lst b.lst'
test_expect_success \
'validate file contents' \
'diff -r a b/a'
test_expect_success \
'git tar-tree with prefix' \
'git tar-tree HEAD prefix >c.tar'
test_expect_success \
'extract tar archive with prefix' \
'(cd c && "$TAR" xf -) <c.tar'
test_expect_success \
'validate filenames with prefix' \
'(cd c/prefix/a && find .) | sort >c.lst &&
test_cmp a.lst c.lst'
test_expect_success \
'validate file contents with prefix' \
'diff -r a c/prefix/a'
test_expect_success \
'create archives with substfiles' \
'cp .git/info/attributes .git/info/attributes.before &&
echo "substfile?" export-subst >>.git/info/attributes &&
git archive HEAD >f.tar &&
git archive --prefix=prefix/ HEAD >g.tar &&
mv .git/info/attributes.before .git/info/attributes'
test_expect_success \
'extract substfiles' \
'(mkdir f && cd f && "$TAR" xf -) <f.tar'
test_expect_success \
'validate substfile contents' \
'git log --max-count=1 "--pretty=format:A${SUBSTFORMAT}O" HEAD \
>f/a/substfile1.expected &&
test_cmp f/a/substfile1.expected f/a/substfile1 &&
test_cmp a/substfile2 f/a/substfile2
test_expect_success 'git tar-tree' '
git tar-tree HEAD >tar-tree.tar &&
test_cmp b.tar tar-tree.tar
'
test_expect_success \
'extract substfiles from archive with prefix' \
'(mkdir g && cd g && "$TAR" xf -) <g.tar'
test_expect_success \
'validate substfile contents from archive with prefix' \
'git log --max-count=1 "--pretty=format:A${SUBSTFORMAT}O" HEAD \
>g/prefix/a/substfile1.expected &&
test_cmp g/prefix/a/substfile1.expected g/prefix/a/substfile1 &&
test_cmp a/substfile2 g/prefix/a/substfile2
test_expect_success 'git tar-tree with prefix' '
git tar-tree HEAD prefix >tar-tree_with_prefix.tar &&
test_cmp with_prefix.tar tar-tree_with_prefix.tar
'
test_expect_success 'git archive with --output, override inferred format' '
......@@ -197,18 +223,6 @@ test_expect_success 'clients cannot access unreachable commits' '
test_must_fail git archive --remote=. $sha1 >remote.tar
'
test_expect_success 'git-archive --prefix=olde-' '
git archive --prefix=olde- >h.tar HEAD &&
(
mkdir h &&
cd h &&
"$TAR" xf - <../h.tar
) &&
test -d h/olde-a &&
test -d h/olde-a/bin &&
test -f h/olde-a/bin/sh
'
test_expect_success 'setup tar filters' '
git config tar.tar.foo.command "tr ab ba" &&
git config tar.bar.command "tr ab ba" &&
......
文件已添加
......@@ -37,7 +37,7 @@ check_zip() {
test_expect_success \
'populate workdir' \
'mkdir a b c &&
'mkdir a &&
echo simple textfile >a/a &&
mkdir a/bin &&
cp /bin/sh a/bin &&
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册