@@ -33,7 +33,123 @@ test_expect_success setup '
33
33
git commit -m "related commit"
34
34
'
35
35
36
- testrebase () {
36
+ create_expected_success_am () {
37
+ cat > expected << -EOF
38
+ $( grep " ^Created autostash: [0-9a-f][0-9a-f]*\$ " actual)
39
+ HEAD is now at $( git rev-parse --short feature-branch) third commit
40
+ First, rewinding head to replay your work on top of it...
41
+ Applying: second commit
42
+ Applying: third commit
43
+ Applied autostash.
44
+ EOF
45
+ }
46
+
47
+ create_expected_success_interactive () {
48
+ q_to_cr > expected << -EOF
49
+ $( grep " ^Created autostash: [0-9a-f][0-9a-f]*\$ " actual)
50
+ HEAD is now at $( git rev-parse --short feature-branch) third commit
51
+ Rebasing (1/2)QRebasing (2/2)QApplied autostash.
52
+ Successfully rebased and updated refs/heads/rebased-feature-branch.
53
+ EOF
54
+ }
55
+
56
+ create_expected_success_merge () {
57
+ cat > expected << -EOF
58
+ $( grep " ^Created autostash: [0-9a-f][0-9a-f]*\$ " actual)
59
+ HEAD is now at $( git rev-parse --short feature-branch) third commit
60
+ First, rewinding head to replay your work on top of it...
61
+ Merging unrelated-onto-branch with HEAD~1
62
+ Merging:
63
+ $( git rev-parse --short unrelated-onto-branch) unrelated commit
64
+ $( git rev-parse --short feature-branch^) second commit
65
+ found 1 common ancestor:
66
+ $( git rev-parse --short feature-branch~2) initial commit
67
+ [detached HEAD $( git rev-parse --short rebased-feature-branch~1) ] second commit
68
+ Author: A U Thor <[email protected] >
69
+ Date: Thu Apr 7 15:14:13 2005 -0700
70
+ 2 files changed, 2 insertions(+)
71
+ create mode 100644 file1
72
+ create mode 100644 file2
73
+ Committed: 0001 second commit
74
+ Merging unrelated-onto-branch with HEAD~0
75
+ Merging:
76
+ $( git rev-parse --short rebased-feature-branch~1) second commit
77
+ $( git rev-parse --short feature-branch) third commit
78
+ found 1 common ancestor:
79
+ $( git rev-parse --short feature-branch~1) second commit
80
+ [detached HEAD $( git rev-parse --short rebased-feature-branch) ] third commit
81
+ Author: A U Thor <[email protected] >
82
+ Date: Thu Apr 7 15:15:13 2005 -0700
83
+ 1 file changed, 1 insertion(+)
84
+ create mode 100644 file3
85
+ Committed: 0002 third commit
86
+ All done.
87
+ Applied autostash.
88
+ EOF
89
+ }
90
+
91
+ create_expected_failure_am () {
92
+ cat > expected << -EOF
93
+ $( grep " ^Created autostash: [0-9a-f][0-9a-f]*\$ " actual)
94
+ HEAD is now at $( git rev-parse --short feature-branch) third commit
95
+ First, rewinding head to replay your work on top of it...
96
+ Applying: second commit
97
+ Applying: third commit
98
+ Applying autostash resulted in conflicts.
99
+ Your changes are safe in the stash.
100
+ You can run "git stash pop" or "git stash drop" at any time.
101
+ EOF
102
+ }
103
+
104
+ create_expected_failure_interactive () {
105
+ q_to_cr > expected << -EOF
106
+ $( grep " ^Created autostash: [0-9a-f][0-9a-f]*\$ " actual)
107
+ HEAD is now at $( git rev-parse --short feature-branch) third commit
108
+ Rebasing (1/2)QRebasing (2/2)QApplying autostash resulted in conflicts.
109
+ Your changes are safe in the stash.
110
+ You can run "git stash pop" or "git stash drop" at any time.
111
+ Successfully rebased and updated refs/heads/rebased-feature-branch.
112
+ EOF
113
+ }
114
+
115
+ create_expected_failure_merge () {
116
+ cat > expected << -EOF
117
+ $( grep " ^Created autostash: [0-9a-f][0-9a-f]*\$ " actual)
118
+ HEAD is now at $( git rev-parse --short feature-branch) third commit
119
+ First, rewinding head to replay your work on top of it...
120
+ Merging unrelated-onto-branch with HEAD~1
121
+ Merging:
122
+ $( git rev-parse --short unrelated-onto-branch) unrelated commit
123
+ $( git rev-parse --short feature-branch^) second commit
124
+ found 1 common ancestor:
125
+ $( git rev-parse --short feature-branch~2) initial commit
126
+ [detached HEAD $( git rev-parse --short rebased-feature-branch~1) ] second commit
127
+ Author: A U Thor <[email protected] >
128
+ Date: Thu Apr 7 15:14:13 2005 -0700
129
+ 2 files changed, 2 insertions(+)
130
+ create mode 100644 file1
131
+ create mode 100644 file2
132
+ Committed: 0001 second commit
133
+ Merging unrelated-onto-branch with HEAD~0
134
+ Merging:
135
+ $( git rev-parse --short rebased-feature-branch~1) second commit
136
+ $( git rev-parse --short feature-branch) third commit
137
+ found 1 common ancestor:
138
+ $( git rev-parse --short feature-branch~1) second commit
139
+ [detached HEAD $( git rev-parse --short rebased-feature-branch) ] third commit
140
+ Author: A U Thor <[email protected] >
141
+ Date: Thu Apr 7 15:15:13 2005 -0700
142
+ 1 file changed, 1 insertion(+)
143
+ create mode 100644 file3
144
+ Committed: 0002 third commit
145
+ All done.
146
+ Applying autostash resulted in conflicts.
147
+ Your changes are safe in the stash.
148
+ You can run "git stash pop" or "git stash drop" at any time.
149
+ EOF
150
+ }
151
+
152
+ testrebase () {
37
153
type=$1
38
154
dotest=$2
39
155
@@ -51,14 +167,20 @@ testrebase() {
51
167
test_config rebase.autostash true &&
52
168
git reset --hard &&
53
169
git checkout -b rebased-feature-branch feature-branch &&
54
- test_when_finished git branch -D rebased-feature-branch &&
55
170
echo dirty >>file3 &&
56
- git rebase$type unrelated-onto-branch &&
171
+ git rebase$type unrelated-onto-branch >actual 2>&1 &&
57
172
grep unrelated file4 &&
58
173
grep dirty file3 &&
59
174
git checkout feature-branch
60
175
'
61
176
177
+ test_expect_success " rebase$type --autostash: check output" '
178
+ test_when_finished git branch -D rebased-feature-branch &&
179
+ suffix=${type#\ --} && suffix=${suffix:-am} &&
180
+ create_expected_success_$suffix &&
181
+ test_i18ncmp expected actual
182
+ '
183
+
62
184
test_expect_success " rebase$type : dirty index, non-conflicting rebase" '
63
185
test_config rebase.autostash true &&
64
186
git reset --hard &&
@@ -137,10 +259,9 @@ testrebase() {
137
259
test_config rebase.autostash true &&
138
260
git reset --hard &&
139
261
git checkout -b rebased-feature-branch feature-branch &&
140
- test_when_finished git branch -D rebased-feature-branch &&
141
262
echo dirty >file4 &&
142
263
git add file4 &&
143
- git rebase$type unrelated-onto-branch &&
264
+ git rebase$type unrelated-onto-branch >actual 2>&1 &&
144
265
test_path_is_missing $dotest &&
145
266
git reset --hard &&
146
267
grep unrelated file4 &&
@@ -149,6 +270,13 @@ testrebase() {
149
270
git stash pop &&
150
271
grep dirty file4
151
272
'
273
+
274
+ test_expect_success " rebase$type : check output with conflicting stash" '
275
+ test_when_finished git branch -D rebased-feature-branch &&
276
+ suffix=${type#\ --} && suffix=${suffix:-am} &&
277
+ create_expected_failure_$suffix &&
278
+ test_i18ncmp expected actual
279
+ '
152
280
}
153
281
154
282
test_expect_success " rebase: fast-forward rebase" '
0 commit comments