]>
Commit | Line | Data |
---|---|---|
9929430c EN |
1 | #!/bin/sh |
2 | ||
3 | test_description='test if rebase detects and aborts on incompatible options' | |
9081a421 ÆAB |
4 | |
5 | TEST_PASSES_SANITIZE_LEAK=true | |
9929430c EN |
6 | . ./test-lib.sh |
7 | ||
8 | test_expect_success 'setup' ' | |
9 | test_seq 2 9 >foo && | |
10 | git add foo && | |
11 | git commit -m orig && | |
12 | ||
13 | git branch A && | |
14 | git branch B && | |
15 | ||
16 | git checkout A && | |
17 | test_seq 1 9 >foo && | |
18 | git add foo && | |
19 | git commit -m A && | |
20 | ||
21 | git checkout B && | |
22 | echo "q qfoo();" | q_to_tab >>foo && | |
23 | git add foo && | |
24 | git commit -m B | |
25 | ' | |
26 | ||
27 | # | |
1207599e EN |
28 | # Rebase has a couple options which are specific to the apply backend, |
29 | # and several options which are specific to the merge backend. Flags | |
30 | # from the different sets cannot work together, and we do not want to | |
31 | # just ignore one of the sets of flags. Make sure rebase warns the | |
32 | # user and aborts instead. | |
9929430c EN |
33 | # |
34 | ||
35 | test_rebase_am_only () { | |
36 | opt=$1 | |
37 | shift | |
c840e1af | 38 | test_expect_success "$opt incompatible with --merge" " |
9929430c EN |
39 | git checkout B^0 && |
40 | test_must_fail git rebase $opt --merge A | |
41 | " | |
42 | ||
c840e1af | 43 | test_expect_success "$opt incompatible with --strategy=ours" " |
9929430c EN |
44 | git checkout B^0 && |
45 | test_must_fail git rebase $opt --strategy=ours A | |
46 | " | |
47 | ||
c840e1af | 48 | test_expect_success "$opt incompatible with --strategy-option=ours" " |
9929430c EN |
49 | git checkout B^0 && |
50 | test_must_fail git rebase $opt --strategy-option=ours A | |
51 | " | |
52 | ||
796abac7 EN |
53 | test_expect_success "$opt incompatible with --autosquash" " |
54 | git checkout B^0 && | |
55 | test_must_fail git rebase $opt --autosquash A | |
56 | " | |
57 | ||
c840e1af | 58 | test_expect_success "$opt incompatible with --interactive" " |
9929430c EN |
59 | git checkout B^0 && |
60 | test_must_fail git rebase $opt --interactive A | |
61 | " | |
62 | ||
c840e1af | 63 | test_expect_success "$opt incompatible with --exec" " |
9929430c EN |
64 | git checkout B^0 && |
65 | test_must_fail git rebase $opt --exec 'true' A | |
66 | " | |
67 | ||
796abac7 EN |
68 | test_expect_success "$opt incompatible with --keep-empty" " |
69 | git checkout B^0 && | |
70 | test_must_fail git rebase $opt --keep-empty A | |
71 | " | |
72 | ||
73 | test_expect_success "$opt incompatible with --empty=..." " | |
74 | git checkout B^0 && | |
75 | test_must_fail git rebase $opt --empty=ask A | |
76 | " | |
77 | ||
ffeaca17 EN |
78 | test_expect_success "$opt incompatible with --no-reapply-cherry-picks" " |
79 | git checkout B^0 && | |
80 | test_must_fail git rebase $opt --no-reapply-cherry-picks A | |
81 | " | |
82 | ||
83 | test_expect_success "$opt incompatible with --reapply-cherry-picks" " | |
84 | git checkout B^0 && | |
85 | test_must_fail git rebase $opt --reapply-cherry-picks A | |
86 | " | |
87 | ||
6605fb70 AH |
88 | test_expect_success "$opt incompatible with --rebase-merges" " |
89 | git checkout B^0 && | |
90 | test_must_fail git rebase $opt --rebase-merges A | |
91 | " | |
92 | ||
1207599e EN |
93 | test_expect_success "$opt incompatible with --update-refs" " |
94 | git checkout B^0 && | |
95 | test_must_fail git rebase $opt --update-refs A | |
96 | " | |
97 | ||
b8ad3656 EN |
98 | test_expect_success "$opt incompatible with --root without --onto" " |
99 | git checkout B^0 && | |
100 | test_must_fail git rebase $opt --root A | |
101 | " | |
eddfcd8e | 102 | |
6605fb70 AH |
103 | test_expect_success "$opt incompatible with rebase.rebaseMerges" " |
104 | git checkout B^0 && | |
105 | test_must_fail git -c rebase.rebaseMerges=true rebase $opt A 2>err && | |
106 | grep -e --no-rebase-merges err | |
107 | " | |
108 | ||
eddfcd8e EN |
109 | test_expect_success "$opt incompatible with rebase.updateRefs" " |
110 | git checkout B^0 && | |
111 | test_must_fail git -c rebase.updateRefs=true rebase $opt A 2>err && | |
112 | grep -e --no-update-refs err | |
113 | " | |
114 | ||
6605fb70 AH |
115 | test_expect_success "$opt okay with overridden rebase.rebaseMerges" " |
116 | test_when_finished \"git reset --hard B^0\" && | |
117 | git checkout B^0 && | |
118 | git -c rebase.rebaseMerges=true rebase --no-rebase-merges $opt A | |
119 | " | |
120 | ||
eddfcd8e EN |
121 | test_expect_success "$opt okay with overridden rebase.updateRefs" " |
122 | test_when_finished \"git reset --hard B^0\" && | |
123 | git checkout B^0 && | |
124 | git -c rebase.updateRefs=true rebase --no-update-refs $opt A | |
125 | " | |
9929430c EN |
126 | } |
127 | ||
7d718c55 | 128 | # Check options which imply --apply |
9929430c | 129 | test_rebase_am_only --whitespace=fix |
9929430c | 130 | test_rebase_am_only -C4 |
7d718c55 EN |
131 | # Also check an explicit --apply |
132 | test_rebase_am_only --apply | |
9929430c | 133 | |
9929430c | 134 | test_done |