chiark / gitweb /
test suite: sbuild-gitish: Do not use build-products-dir
[dgit.git] / tests / tests / gdr-merge-conflicts
1 #!/bin/bash
2 set -e
3 autoimport=
4 . tests/lib
5
6 t-dependencies NO-DGIT GDR quilt
7
8 t-tstunt-parsechangelog
9 t-tstunt debchange
10 t-setup-import gdr-convert-gbp-noarchive
11
12 t_gdr_xopts+=' --experimental-merge-resolution'
13
14 wreckage-before () {
15         junkref=refs/debrebase/wreckage/junk
16         git update-ref $junkref v2.1
17 }
18
19 wreckage-after () {
20         test '' = "$(t-git-get-ref-exact $junkref)"
21         git for-each-ref refs/debrebase/wreckage | egrep .
22 }
23
24 no-wreckage () {
25         if git for-each-ref refs/debrebase/wreckage | egrep .; then
26                 fail wreckage
27         fi
28 }
29
30 : ----- prepare the baseline -----
31
32 cd $p
33
34 t-gdr-prep-new-upstream 2.1
35 git tag v2.1 upstream
36
37 t-some-changes before
38 t-git-debrebase quick
39
40 : ===== early failure in walk =====
41
42 : ----- prepare other -----
43
44 git checkout -b other
45 t-some-changes other '' -other
46
47 git branch other-before-new-upstream
48
49 t-git-debrebase new-upstream 2.1
50 t-git-next-date
51
52 : ----- prepare master -----
53
54 git checkout master
55 t-git-debrebase new-upstream 2.1
56 t-git-next-date
57
58 git branch master-before-merge
59
60 : ----- make the merge -----
61
62 git merge --no-edit -s ours other
63
64 # we have to do a little dance to make this not a pseudomerge
65 t-git-next-date
66 dch -a 'Merge, only conflict was in debian/changelog'
67 t-dch-r-rune dch
68 git commit -a --amend --no-edit
69
70 wreckage-before
71
72 t-expect-fail F:'divergent anchors' \
73 t-git-debrebase
74
75 wreckage-after
76
77 : ===== late failure in apply =====
78
79 git checkout other
80 git reset --hard other-before-new-upstream
81
82 echo other-upstream-confict >>docs/README
83 git commit -m 'other-upstream-conflict' docs/README
84
85 t-git-debrebase quick
86
87 no-wreckage
88
89 : ----- make the merge -----
90
91 git checkout master
92 git reset --hard master-before-merge
93
94 t-merge-conflicted-stripping-conflict-markers other docs/README
95 t-git-debrebase stitch
96
97 : ----- expect failure -----
98
99 wreckage-before
100
101 t-expect-fail F:'docs/README' \
102 t-git-debrebase
103
104 wreckage-after
105
106 : ===== resolve the conflict =====
107
108 # omg
109
110 quilt_faff_before () {
111         git checkout -b fix$1 debrebase/wreckage/merged-patchqueue
112         QUILT_PATCHES=debian/patches quilt push -a
113 }
114 quilt_faff_after () {
115         QUILT_PATCHES=debian/patches quilt refresh
116         git add debian/patches
117         git commit -m FIX
118         git reset --hard
119         git clean -xdff
120         t-git-debrebase record-resolved-merge
121         git checkout master
122 }
123
124 : ----- badly -----
125
126 quilt_faff_before 1
127 quilt_faff_after
128
129 t-expect-fail E:'upstream files are not the same' \
130 t-git-debrebase
131
132 t-git-debrebase scrap
133 no-wreckage
134
135 : ----- well -----
136
137 t-expect-fail F:'docs/README' \
138 t-git-debrebase
139 wreckage-after
140
141 quilt_faff_before 2
142 git checkout master docs/README
143 git reset docs/README
144 quilt_faff_after
145
146 t-git-debrebase
147
148 t-gdr-good laundered
149
150 t-ok