3 test_description
='basic rebase topology tests'
5 .
"$TEST_DIRECTORY"/lib-rebase.sh
10 test_expect_success
'setup' '
22 test_expect_
$result "simple rebase $*" "
25 test_cmp_rev c HEAD~2 &&
26 test_linear_range 'd e' c..
29 test_run_rebase success
''
30 test_run_rebase success
-m
31 test_run_rebase success
-i
32 test_run_rebase success
-p
37 test_expect_
$result "rebase $* is no-op if upstream is an ancestor" "
43 test_run_rebase success
''
44 test_run_rebase success
-m
45 test_run_rebase success
-i
46 test_run_rebase success
-p
51 test_expect_
$result "rebase $* -f rewrites even if upstream is an ancestor" "
53 git rebase $* -f b e &&
54 ! test_cmp_rev e HEAD &&
55 test_cmp_rev b HEAD~2 &&
56 test_linear_range 'd e' b..
59 test_run_rebase success
''
60 test_run_rebase success
-m
61 test_run_rebase success
-i
62 test_run_rebase failure
-p
67 test_expect_
$result "rebase $* fast-forwards from ancestor of upstream" "
73 test_run_rebase success
''
74 test_run_rebase success
-m
75 test_run_rebase success
-i
76 test_run_rebase success
-p
84 # uppercase = cherry-picked
87 # Reverted patches are there for tests to be able to check if a commit
88 # that introduced the same change as another commit is
89 # dropped. Without reverted commits, we could get false positives
90 # because applying the patch succeeds, but simply results in no
92 test_expect_success
'setup of linear history for range selection tests' '
106 test_expect_
$result "rebase $* drops patches in upstream" "
109 test_cmp_rev h HEAD~2 &&
110 test_linear_range 'd i' h..
113 test_run_rebase success
''
114 test_run_rebase failure
-m
115 test_run_rebase success
-i
116 test_run_rebase success
-p
121 test_expect_
$result "rebase $* can drop last patch if in upstream" "
124 test_cmp_rev h HEAD^ &&
125 test_linear_range 'd' h..
128 test_run_rebase success
''
129 test_run_rebase failure
-m
130 test_run_rebase success
-i
131 test_run_rebase success
-p
136 test_expect_
$result "rebase $* --onto drops patches in upstream" "
138 git rebase $* --onto f h i &&
139 test_cmp_rev f HEAD~2 &&
140 test_linear_range 'd i' f..
143 test_run_rebase success
''
144 test_run_rebase failure
-m
145 test_run_rebase success
-i
146 test_run_rebase success
-p
151 test_expect_
$result "rebase $* --onto does not drop patches in onto" "
153 git rebase $* --onto h f i &&
154 test_cmp_rev h HEAD~3 &&
155 test_linear_range 'd G i' h..
158 test_run_rebase success
''
159 test_run_rebase success
-m
160 test_run_rebase success
-i
161 test_run_rebase success
-p