]> git.ipfire.org Git - thirdparty/git.git/blame - t/t3422-rebase-incompatible-options.sh
sha1-file: split OBJECT_INFO_FOR_PREFETCH
[thirdparty/git.git] / t / t3422-rebase-incompatible-options.sh
CommitLineData
9929430c
EN
1#!/bin/sh
2
3test_description='test if rebase detects and aborts on incompatible options'
4. ./test-lib.sh
5
6test_expect_success 'setup' '
7 test_seq 2 9 >foo &&
8 git add foo &&
9 git commit -m orig &&
10
11 git branch A &&
12 git branch B &&
13
14 git checkout A &&
15 test_seq 1 9 >foo &&
16 git add foo &&
17 git commit -m A &&
18
19 git checkout B &&
20 echo "q qfoo();" | q_to_tab >>foo &&
21 git add foo &&
22 git commit -m B
23'
24
25#
26# Rebase has lots of useful options like --whitepsace=fix, which are
27# actually all built in terms of flags to git-am. Since neither
28# --merge nor --interactive (nor any options that imply those two) use
29# git-am, using them together will result in flags like --whitespace=fix
30# being ignored. Make sure rebase warns the user and aborts instead.
31#
32
33test_rebase_am_only () {
34 opt=$1
35 shift
c840e1af 36 test_expect_success "$opt incompatible with --merge" "
9929430c
EN
37 git checkout B^0 &&
38 test_must_fail git rebase $opt --merge A
39 "
40
c840e1af 41 test_expect_success "$opt incompatible with --strategy=ours" "
9929430c
EN
42 git checkout B^0 &&
43 test_must_fail git rebase $opt --strategy=ours A
44 "
45
c840e1af 46 test_expect_success "$opt incompatible with --strategy-option=ours" "
9929430c
EN
47 git checkout B^0 &&
48 test_must_fail git rebase $opt --strategy-option=ours A
49 "
50
c840e1af 51 test_expect_success "$opt incompatible with --interactive" "
9929430c
EN
52 git checkout B^0 &&
53 test_must_fail git rebase $opt --interactive A
54 "
55
c840e1af 56 test_expect_success "$opt incompatible with --exec" "
9929430c
EN
57 git checkout B^0 &&
58 test_must_fail git rebase $opt --exec 'true' A
59 "
60
61}
62
63test_rebase_am_only --whitespace=fix
64test_rebase_am_only --ignore-whitespace
65test_rebase_am_only --committer-date-is-author-date
66test_rebase_am_only -C4
67
68test_expect_success '--preserve-merges incompatible with --signoff' '
69 git checkout B^0 &&
70 test_must_fail git rebase --preserve-merges --signoff A
71'
72
c840e1af 73test_expect_success '--preserve-merges incompatible with --rebase-merges' '
9929430c
EN
74 git checkout B^0 &&
75 test_must_fail git rebase --preserve-merges --rebase-merges A
76'
77
c840e1af 78test_expect_success '--rebase-merges incompatible with --strategy' '
9929430c
EN
79 git checkout B^0 &&
80 test_must_fail git rebase --rebase-merges -s resolve A
81'
82
c840e1af 83test_expect_success '--rebase-merges incompatible with --strategy-option' '
9929430c
EN
84 git checkout B^0 &&
85 test_must_fail git rebase --rebase-merges -Xignore-space-change A
86'
87
88test_done