chiark / gitweb /
2e24bba3ab7adfdaf33290fba28740cdd80d2f63
[dgit.git] / tests / tests / gitattributes
1 #!/bin/bash
2 set -e
3 . tests/lib
4
5 t-dependencies bsdgames
6 t-tstunt-parsechangelog
7
8 t-archive-none example
9 bv=1.0
10 t-worktree $bv
11
12 : ----- prepare badnesses -----
13
14 mkdir af
15
16 badattr1 () {
17         local filename=$1
18         local attrspec=$2
19         echo >>af/$filename "Test file with $attrspec"
20         printf >>af/$filename 'crlf: \r\n'
21         echo >>af/$filename 'id $Id: $'
22         echo >>af/$filename 'id $Id: SPLARK $'
23         echo >>gitattrs "af/$filename" "$attrspec"
24 }
25
26 badattr () {
27         attrname=$1; shift
28         badattr1 $attrname-set $attrname
29         badattr1 $attrname-unset -$attrname
30         badattr1 $attrname-unspec \!$attrname
31         local val
32         for val in "$@"; do
33                 badattr1 $attrname=$val $attrname=$val
34         done
35 }
36
37 # xxx want to make each of these files into a quilt patch
38
39 t-git-config core.eol crlf
40
41 badattr text auto
42 badattr eol lf crlf
43 badattr ident
44
45 t-git-config filter.dgit-test-crazy-f.smudge '/usr/games/rot13 2'
46 t-git-config filter.dgit-test-crazy-f.clean  '/usr/games/rot13 24'
47 t-git-config filter.dgit-test-crazy-f.requrired true
48
49 badattr filter dgit-test-crazy-f
50
51 badattr diff
52 badattr merge text binary union
53 badattr whitespace
54 badattr export-ignore
55 badattr export-subst
56 badattr delta
57 badattr encoding no-such-encoding
58
59 sha256sum af/* >sums
60
61 # ----- common to source formats -----
62
63 sfmt_setup () {
64         v=$1
65         sfmt=$2
66
67         pdb=$p.$sfmt
68
69         local addpatch=${sfmt}_addpatch
70         local convert=${sfmt}_convert
71
72         cp -a $p $pdb-edit
73         cd $pdb-edit
74
75         $convert
76
77         dch -v $v -m convert
78
79         rm -rf .git
80
81         cp ../gitattrs .gitattributes
82         $addpatch gitattrs
83
84         cp -a ../af .
85         $addpatch files
86
87         cp ../sums .
88         $addpatch sums
89
90         dpkg-source -b .
91
92         cd ..
93 }
94
95 sfmt_import () {
96         inst=$1
97         dgitargs=$2
98         refname="import.$sfmt-$inst"
99         brkerr=stderr.$sfmt-$inst.broken
100
101         mkdir $pdb-import-$inst
102         cd $pdb-import-$inst
103         git init
104
105         LC_MESSAGES=C \
106         t-dgit $dgitargs import-dsc ../${p}_${v}.dsc +$refname.broken \
107                 2>&1 |tee ../$brkerr
108         fgrep 'warning: source tree contains .gitattributes' ../$brkerr
109         git checkout $refname.broken
110         sha256sum af/* >../$sums.broken
111
112         for s in ../sums ../$sums.broken; do
113                 sed 's/[0-9a-f]* //' $s >$s.nosums
114         done
115         diff -U0 ../sums.nosums ../$sums.broken.nosums
116         set +e
117         diff -U0 ../sums ../$sums.broken
118         rc=$?
119         set -e
120         test $rc = 1
121
122         t-dgit setup-new-tree
123
124         t-dgit $dgitargs import-dsc ../${p}_${v}.dsc +$refname
125         git checkout $refname
126
127         sums=sums.$sfmt-$inst
128
129         for f in af/*; do
130                 git cat-file blob "refs/heads/$refname:$f" \
131                         | sha256sum \
132                         | sed -e 's#-$#'$f'#' \
133                 >>../$sums
134         done
135
136         cd ..
137         diff -U0 sums $sums
138 }
139
140 : ----- generate the orig -----
141
142 tar --exclude=debian --exclude=.git -zcf ${p}_${bv}.orig.tar.gz $p
143
144 : ----- test 1.0 native -----
145
146 native_addpatch () { :; }
147 native_convert () { :; }
148
149 sfmt_setup 1.1 native
150 sfmt_import norm
151
152 : ----- test 1.0 diff -----
153
154 diff_addpatch () { :; }
155 diff_convert () { :; }
156
157 sfmt_setup 1.1 diff
158 sfmt_import norm
159
160 : ----- test "3.0 (quilt)"
161
162 quilt_addpatch () {
163         pname=$1
164         cat >../editor.pl <<END
165                 next if m/^$/..0;
166                 s{^(description:).*}{\$1 dgit test patch $pname}i;
167                 \$_='' if m/^ /;
168 END
169         EDITOR="perl -pi $tmp/editor.pl" dpkg-source -iX --commit . $pname
170         test -f debian/patches/$pname
171 }
172
173 quilt_convert () {
174         mkdir -p debian/source
175         echo '3.0 (quilt)' >debian/source/format
176 }
177
178 sfmt_setup 1.0-1 quilt
179 sfmt_import norm
180 sfmt_import absurd --force-import-gitapply-absurd
181
182 #t-ok