chiark / gitweb /
test suite: gitattributes: Test that checkout is good too
[dgit.git] / tests / tests / gitattributes
index c8d1b0ae64fa353f46c9388527c6b51b456ccef5..e6089bd9cdda9007c597a7e2c9728cf9a3e90d48 100755 (executable)
@@ -3,9 +3,11 @@ set -e
 . tests/lib
 
 t-dependencies bsdgames
+t-dependencies man-db git-man
 t-tstunt-parsechangelog
 
 t-archive-none example
+t-git-none
 bv=1.0
 t-worktree $bv
 
@@ -56,6 +58,15 @@ badattr export-subst
 badattr delta
 badattr encoding no-such-encoding
 
+man gitattributes \
+| perl -ne 'print $1,"\n" if m/^ *(\w[-a-z]*)$/' \
+> grepped-attrs
+
+exec <grepped-attrs
+while read attr; do
+       badattr $attr
+done
+
 sha256sum af/* >sums
 
 # ----- common to source formats -----
@@ -92,34 +103,69 @@ sfmt_setup () {
        cd ..
 }
 
+sums_check () {
+       # caller should cd into working directory, set
+       #   $sums  $branch
+       # and check out $branch
+
+       sha256sum af/* >../$sums.checkout
+       diff -U0 ../sums ../$sums.checkout
+
+       for f in af/*; do
+               git cat-file blob "refs/heads/$branch:$f" \
+                       | sha256sum \
+                       | sed -e 's#-$#'$f'#' \
+               >>../$sums
+       done
+
+       diff -U0 ../sums ../$sums
+}
+
 sfmt_import () {
        inst=$1
        dgitargs=$2
-       refname="import.$sfmt-$inst"
+       branch="import.$sfmt-$inst"
+       brkerr=stderr.$sfmt-$inst.broken
+       dscf=${p}_${v}.dsc
+       sums=sums.$sfmt-$inst
 
        mkdir $pdb-import-$inst
        cd $pdb-import-$inst
        git init
-       t-dgit setup-new-tree
-
-       t-dgit $dgitargs import-dsc ../${p}_${v}.dsc +$refname
-       git checkout $refname
 
-       sums=sums.$sfmt-$inst
+       LC_MESSAGES=C \
+       t-dgit $dgitargs import-dsc ../$dscf +$branch.broken \
+               2>&1 |tee ../$brkerr
+       fgrep 'warning: source tree contains .gitattributes' ../$brkerr
+       git checkout $branch.broken
+       sha256sum af/* >../$sums.broken
 
-       for f in af/*; do
-               git cat-file blob "refs/heads/$refname:$f" | sha256sum | \
-                       sed -e 's#-$#'$f'#' \
-                       >>../$sums
+       for s in ../sums ../$sums.broken; do
+               sed 's/[0-9a-f]* //' $s >$s.nosums
        done
+       diff -U0 ../sums.nosums ../$sums.broken.nosums
+       set +e
+       diff -U0 ../sums ../$sums.broken
+       rc=$?
+       set -e
+       test $rc = 1
+
+       t-dgit setup-new-tree
+
+       t-dgit $dgitargs import-dsc ../$dscf +$branch
+       git checkout $branch
+       git reset --hard
+
+       sums_check
 
        cd ..
-       diff -U0 sums $sums
 }
 
 : ----- generate the orig -----
 
-tar --exclude=debian -zcf ${p}_${bv}.orig.tar.gz $p
+origtar=${p}_${bv}.orig.tar.gz
+
+tar --exclude=debian --exclude=.git -zcf $origtar $p
 
 : ----- test 1.0 native -----
 
@@ -137,7 +183,7 @@ diff_convert () { :; }
 sfmt_setup 1.1 diff
 sfmt_import norm
 
-: ----- test "3.0 (quilt)"
+: ----- test "3.0 (quilt)" -----
 
 quilt_addpatch () {
        pname=$1