Skip to content

Commit c9efc21

Browse files
avargitster
authored andcommitted
t3432: test for --no-ff's interaction with fast-forward
Add more stress tests for the can_fast_forward() case in rebase.c. These tests are getting rather verbose, but now we can see under --ff and --no-ff whether we skip work, or whether we're forced to run the rebase. These tests aren't supposed to endorse the status quo, just test for what we're currently doing. Signed-off-by: Ævar Arnfjörð Bjarmason <[email protected]> Signed-off-by: Denton Liu <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 4336d36 commit c9efc21

File tree

1 file changed

+54
-29
lines changed

1 file changed

+54
-29
lines changed

t/t3432-rebase-fast-forward.sh

Lines changed: 54 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,47 @@ test_expect_success setup '
1616
'
1717

1818
test_rebase_same_head () {
19+
status_n="$1" &&
20+
shift &&
21+
what_n="$1" &&
22+
shift &&
23+
cmp_n="$1" &&
24+
shift &&
25+
status_f="$1" &&
26+
shift &&
27+
what_f="$1" &&
28+
shift &&
29+
cmp_f="$1" &&
30+
shift &&
31+
test_rebase_same_head_ $status_n $what_n $cmp_n "" "$*" &&
32+
test_rebase_same_head_ $status_f $what_f $cmp_f " --no-ff" "$*"
33+
}
34+
35+
test_rebase_same_head_ () {
1936
status="$1" &&
2037
shift &&
2138
what="$1" &&
2239
shift &&
2340
cmp="$1" &&
2441
shift &&
25-
test_expect_$status "git rebase $* with $changes is $what" "
42+
flag="$1"
43+
shift &&
44+
test_expect_$status "git rebase$flag $* with $changes is $what with $cmp HEAD" "
2645
oldhead=\$(git rev-parse HEAD) &&
2746
test_when_finished 'git reset --hard \$oldhead' &&
28-
git rebase $* >stdout &&
47+
git rebase$flag $* >stdout &&
2948
if test $what = work
3049
then
50+
# Must check this case first, for 'is up to
51+
# date, rebase forced[...]rewinding head' cases
3152
test_i18ngrep 'rewinding head' stdout
3253
elif test $what = noop
3354
then
34-
test_i18ngrep 'is up to date' stdout
55+
test_i18ngrep 'is up to date' stdout &&
56+
test_i18ngrep ! 'rebase forced' stdout
57+
elif test $what = noop-force
58+
then
59+
test_i18ngrep 'is up to date, rebase forced' stdout
3560
fi &&
3661
newhead=\$(git rev-parse HEAD) &&
3762
if test $cmp = same
@@ -45,32 +70,32 @@ test_rebase_same_head () {
4570
}
4671

4772
changes='no changes'
48-
test_rebase_same_head success work same
49-
test_rebase_same_head success noop same master
50-
test_rebase_same_head success noop same --onto B B
51-
test_rebase_same_head success noop same --onto B... B
52-
test_rebase_same_head success noop same --onto master... master
53-
test_rebase_same_head success noop same --no-fork-point
54-
test_rebase_same_head success work same --fork-point master
55-
test_rebase_same_head failure noop same --fork-point --onto B B
56-
test_rebase_same_head failure work same --fork-point --onto B... B
57-
test_rebase_same_head success work same --fork-point --onto master... master
73+
test_rebase_same_head success work same success work same
74+
test_rebase_same_head success noop same success noop-force same master
75+
test_rebase_same_head success noop same success noop-force diff --onto B B
76+
test_rebase_same_head success noop same success noop-force diff --onto B... B
77+
test_rebase_same_head success noop same success noop-force same --onto master... master
78+
test_rebase_same_head success noop same success noop-force same --no-fork-point
79+
test_rebase_same_head success work same success work same --fork-point master
80+
test_rebase_same_head failure noop same success work diff --fork-point --onto B B
81+
test_rebase_same_head failure work same success work diff --fork-point --onto B... B
82+
test_rebase_same_head success work same success work same --fork-point --onto master... master
5883

5984
test_expect_success 'add work same to side' '
6085
test_commit E
6186
'
6287

6388
changes='our changes'
64-
test_rebase_same_head success work same
65-
test_rebase_same_head success noop same master
66-
test_rebase_same_head success noop same --onto B B
67-
test_rebase_same_head success noop same --onto B... B
68-
test_rebase_same_head success noop same --onto master... master
69-
test_rebase_same_head success noop same --no-fork-point
70-
test_rebase_same_head success work same --fork-point master
71-
test_rebase_same_head failure work same --fork-point --onto B B
72-
test_rebase_same_head failure work same --fork-point --onto B... B
73-
test_rebase_same_head success work same --fork-point --onto master... master
89+
test_rebase_same_head success work same success work same
90+
test_rebase_same_head success noop same success noop-force same master
91+
test_rebase_same_head success noop same success noop-force diff --onto B B
92+
test_rebase_same_head success noop same success noop-force diff --onto B... B
93+
test_rebase_same_head success noop same success noop-force same --onto master... master
94+
test_rebase_same_head success noop same success noop-force same --no-fork-point
95+
test_rebase_same_head success work same success work same --fork-point master
96+
test_rebase_same_head failure work same success work diff --fork-point --onto B B
97+
test_rebase_same_head failure work same success work diff --fork-point --onto B... B
98+
test_rebase_same_head success work same success work same --fork-point --onto master... master
7499

75100
test_expect_success 'add work same to upstream' '
76101
git checkout master &&
@@ -79,11 +104,11 @@ test_expect_success 'add work same to upstream' '
79104
'
80105

81106
changes='our and their changes'
82-
test_rebase_same_head success noop same --onto B B
83-
test_rebase_same_head success noop same --onto B... B
84-
test_rebase_same_head failure work same --onto master... master
85-
test_rebase_same_head failure work same --fork-point --onto B B
86-
test_rebase_same_head failure work same --fork-point --onto B... B
87-
test_rebase_same_head failure work same --fork-point --onto master... master
107+
test_rebase_same_head success noop same success noop-force diff --onto B B
108+
test_rebase_same_head success noop same success noop-force diff --onto B... B
109+
test_rebase_same_head failure work same success work diff --onto master... master
110+
test_rebase_same_head failure work same success work diff --fork-point --onto B B
111+
test_rebase_same_head failure work same success work diff --fork-point --onto B... B
112+
test_rebase_same_head failure work same success work diff --fork-point --onto master... master
88113

89114
test_done

0 commit comments

Comments
 (0)