summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2017-01-14 23:08:37 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2017-01-16 01:16:53 +0000
commitb5aba87052036cc6afcac1b460a522e556adb607 (patch)
treed2d1ecf0a5623f112a740b5e45a3b6f551079531
parentff7e17f00e19a8940b2a58edc395e24f927a56d2 (diff)
test suite: gitattributes: new test, still wip
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rw-r--r--debian/tests/control4
-rwxr-xr-xtests/tests/gitattributes111
2 files changed, 115 insertions, 0 deletions
diff --git a/debian/tests/control b/debian/tests/control
index 2ba4183..5563a80 100644
--- a/debian/tests/control
+++ b/debian/tests/control
@@ -11,6 +11,10 @@ Tests-Directory: tests/tests
Depends: dgit, dgit-infrastructure, devscripts, debhelper (>=8), fakeroot, build-essential
Restrictions: x-dgit-intree-only x-dgit-git-only
+Tests: gitattributes
+Tests-Directory: tests/tests
+Depends: dgit, dgit-infrastructure, devscripts, debhelper (>=8), fakeroot, build-essential, bsdgames
+
Tests: defdistro-mirror mirror mirror-debnewgit mirror-private
Tests-Directory: tests/tests
Depends: dgit, dgit-infrastructure, devscripts, debhelper (>=8), fakeroot, build-essential, rsync
diff --git a/tests/tests/gitattributes b/tests/tests/gitattributes
new file mode 100755
index 0000000..0b4bad6
--- /dev/null
+++ b/tests/tests/gitattributes
@@ -0,0 +1,111 @@
+#!/bin/bash
+set -e
+. tests/lib
+
+t-dependencies bsdgames
+t-tstunt-parsechangelog
+
+t-archive-none example
+v=1.0
+t-worktree $v
+
+cd $p
+
+: ----- convert to "3.0 (quilt)"
+
+rm -rf .git
+tar --exclude=debian -C .. -zcf ../${p}_${v}.orig.tar.gz $p
+dch -v 1.0-1 -m convert
+mkdir -p debian/source
+echo '3.0 (quilt)' >debian/source/format
+
+v=1.0-1
+
+: ----- make everything break -----
+
+mkdir af
+
+addpatch () {
+ pname=$1
+ cat >../editor.pl <<END
+ next if m/^$/..0;
+ s{^(description:).*}{\$1 dgit test patch $pname}i;
+ \$_='' if m/^ /;
+END
+ EDITOR="perl -pi $tmp/editor.pl" dpkg-source -iX --commit . $pname
+ test -f debian/patches/$pname
+}
+
+badattr1 () {
+ local filename=$1
+ local attrspec=$2
+ echo >>af/$filename "Test file with $attrspec"
+ printf >>af/$filename 'crlf: \r\n'
+ echo >>af/$filename 'id $Id: $'
+ echo >>af/$filename 'id $Id: SPLARK $'
+ echo >>.gitattributes "af/$filename" "$attrspec"
+}
+
+badattr () {
+ attrname=$1; shift
+ badattr1 $attrname-set $attrname
+ badattr1 $attrname-unset -$attrname
+ badattr1 $attrname-unspec \!$attrname
+ local val
+ for val in "$@"; do
+ badattr1 $attrname=$val $attrname=$val
+ done
+}
+
+# xxx want to make each of these files into a quilt patch
+
+t-git-config core.eol crlf
+
+badattr text auto
+badattr eol lf crlf
+badattr ident
+
+t-git-config filter.dgit-test-crazy-f.smudge '/usr/games/rot13 2'
+t-git-config filter.dgit-test-crazy-f.clean '/usr/games/rot13 24'
+t-git-config filter.dgit-test-crazy-f.requrired true
+
+badattr filter dgit-test-crazy-f
+
+badattr diff
+badattr merge text binary union
+badattr whitespace
+badattr export-ignore
+badattr export-subst
+badattr delta
+badattr encoding no-such-encoding
+
+mv af ../af.aside
+addpatch gitattrs
+
+mv ../af.aside af
+addpatch files
+
+sha256sum af/* >sums
+addpatch sums
+
+dpkg-source -b .
+
+cd ..
+mkdir $p.import
+cd $p.import
+git init
+
+#t-dgit --force-import-gitapply-absurd import-dsc ../${p}_${v}.dsc +import
+t-dgit import-dsc ../${p}_${v}.dsc +import
+
+git checkout import
+
+for f in af/*; do
+ git cat-file blob "refs/heads/import:$f" | sha256sum | \
+ sed -e 's#-$#'$f'#' \
+ >>../sums
+done
+
+diff -U0 sums ../sums
+
+#t-ok