]>
Commit | Line | Data |
---|---|---|
793ac7e3 DL |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2019 Denton Liu | |
4 | # | |
5 | ||
6 | test_description='ensure rebase fast-forwards commits when possible' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
10 | test_expect_success setup ' | |
11 | test_commit A && | |
12 | test_commit B && | |
13 | test_commit C && | |
14 | test_commit D && | |
15 | git checkout -t -b side | |
16 | ' | |
17 | ||
18 | test_rebase_same_head () { | |
c9efc216 ÆAB |
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 && | |
10cdb9f3 EN |
31 | test_rebase_same_head_ $status_n $what_n $cmp_n " --apply" "$*" && |
32 | test_rebase_same_head_ $status_f $what_f $cmp_f " --apply --no-ff" "$*" | |
befb89ce EN |
33 | test_rebase_same_head_ $status_n $what_n $cmp_n " --merge" "$*" && |
34 | test_rebase_same_head_ $status_f $what_f $cmp_f " --merge --no-ff" "$*" | |
c9efc216 ÆAB |
35 | } |
36 | ||
37 | test_rebase_same_head_ () { | |
793ac7e3 DL |
38 | status="$1" && |
39 | shift && | |
4336d365 ÆAB |
40 | what="$1" && |
41 | shift && | |
42 | cmp="$1" && | |
43 | shift && | |
c9efc216 ÆAB |
44 | flag="$1" |
45 | shift && | |
46 | test_expect_$status "git rebase$flag $* with $changes is $what with $cmp HEAD" " | |
793ac7e3 DL |
47 | oldhead=\$(git rev-parse HEAD) && |
48 | test_when_finished 'git reset --hard \$oldhead' && | |
9a70f3d4 | 49 | cp .git/logs/HEAD expect && |
c9efc216 | 50 | git rebase$flag $* >stdout && |
4336d365 ÆAB |
51 | if test $what = work |
52 | then | |
9a70f3d4 EN |
53 | old=\$(wc -l <expect) && |
54 | test_line_count '-gt' \$old .git/logs/HEAD | |
4336d365 ÆAB |
55 | elif test $what = noop |
56 | then | |
9a70f3d4 | 57 | test_cmp expect .git/logs/HEAD |
4336d365 | 58 | fi && |
793ac7e3 | 59 | newhead=\$(git rev-parse HEAD) && |
4336d365 ÆAB |
60 | if test $cmp = same |
61 | then | |
62 | test_cmp_rev \$oldhead \$newhead | |
63 | elif test $cmp = diff | |
64 | then | |
2c9e125b | 65 | test_cmp_rev ! \$oldhead \$newhead |
4336d365 | 66 | fi |
793ac7e3 DL |
67 | " |
68 | } | |
69 | ||
70 | changes='no changes' | |
4effc5bc | 71 | test_rebase_same_head success noop same success work same |
9a70f3d4 EN |
72 | test_rebase_same_head success noop same success work same master |
73 | test_rebase_same_head success noop same success work diff --onto B B | |
74 | test_rebase_same_head success noop same success work diff --onto B... B | |
75 | test_rebase_same_head success noop same success work same --onto master... master | |
76 | test_rebase_same_head success noop same success work same --keep-base master | |
77 | test_rebase_same_head success noop same success work same --keep-base | |
78 | test_rebase_same_head success noop same success work same --no-fork-point | |
79 | test_rebase_same_head success noop same success work same --keep-base --no-fork-point | |
4effc5bc DL |
80 | test_rebase_same_head success noop same success work same --fork-point master |
81 | test_rebase_same_head success noop same success work diff --fork-point --onto B B | |
82 | test_rebase_same_head success noop same success work diff --fork-point --onto B... B | |
83 | test_rebase_same_head success noop same success work same --fork-point --onto master... master | |
414d924b | 84 | test_rebase_same_head success noop same success work same --keep-base --keep-base master |
793ac7e3 | 85 | |
4336d365 | 86 | test_expect_success 'add work same to side' ' |
793ac7e3 DL |
87 | test_commit E |
88 | ' | |
89 | ||
90 | changes='our changes' | |
4effc5bc | 91 | test_rebase_same_head success noop same success work same |
9a70f3d4 EN |
92 | test_rebase_same_head success noop same success work same master |
93 | test_rebase_same_head success noop same success work diff --onto B B | |
94 | test_rebase_same_head success noop same success work diff --onto B... B | |
95 | test_rebase_same_head success noop same success work same --onto master... master | |
96 | test_rebase_same_head success noop same success work same --keep-base master | |
97 | test_rebase_same_head success noop same success work same --keep-base | |
98 | test_rebase_same_head success noop same success work same --no-fork-point | |
99 | test_rebase_same_head success noop same success work same --keep-base --no-fork-point | |
4effc5bc DL |
100 | test_rebase_same_head success noop same success work same --fork-point master |
101 | test_rebase_same_head success noop same success work diff --fork-point --onto B B | |
102 | test_rebase_same_head success noop same success work diff --fork-point --onto B... B | |
103 | test_rebase_same_head success noop same success work same --fork-point --onto master... master | |
414d924b | 104 | test_rebase_same_head success noop same success work same --fork-point --keep-base master |
793ac7e3 | 105 | |
4336d365 | 106 | test_expect_success 'add work same to upstream' ' |
793ac7e3 DL |
107 | git checkout master && |
108 | test_commit F && | |
109 | git checkout side | |
110 | ' | |
111 | ||
112 | changes='our and their changes' | |
9a70f3d4 EN |
113 | test_rebase_same_head success noop same success work diff --onto B B |
114 | test_rebase_same_head success noop same success work diff --onto B... B | |
c0efb4c1 | 115 | test_rebase_same_head success noop same success work diff --onto master... master |
414d924b DL |
116 | test_rebase_same_head success noop same success work diff --keep-base master |
117 | test_rebase_same_head success noop same success work diff --keep-base | |
c9efc216 ÆAB |
118 | test_rebase_same_head failure work same success work diff --fork-point --onto B B |
119 | test_rebase_same_head failure work same success work diff --fork-point --onto B... B | |
c0efb4c1 | 120 | test_rebase_same_head success noop same success work diff --fork-point --onto master... master |
414d924b | 121 | test_rebase_same_head success noop same success work diff --fork-point --keep-base master |
793ac7e3 DL |
122 | |
123 | test_done |