Merge branch 'ab/make-sparse-for-real'
[git/debian.git] / t / t3422-rebase-incompatible-options.sh
blobeb0a3d9d48738375bfe74c199aa5e8116d30dd3d
1 #!/bin/sh
3 test_description='test if rebase detects and aborts on incompatible options'
4 . ./test-lib.sh
6 test_expect_success 'setup' '
7 test_seq 2 9 >foo &&
8 git add foo &&
9 git commit -m orig &&
11 git branch A &&
12 git branch B &&
14 git checkout A &&
15 test_seq 1 9 >foo &&
16 git add foo &&
17 git commit -m A &&
19 git checkout B &&
20 echo "q qfoo();" | q_to_tab >>foo &&
21 git add foo &&
22 git commit -m B
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.
33 test_rebase_am_only () {
34 opt=$1
35 shift
36 test_expect_success "$opt incompatible with --merge" "
37 git checkout B^0 &&
38 test_must_fail git rebase $opt --merge A
41 test_expect_success "$opt incompatible with --strategy=ours" "
42 git checkout B^0 &&
43 test_must_fail git rebase $opt --strategy=ours A
46 test_expect_success "$opt incompatible with --strategy-option=ours" "
47 git checkout B^0 &&
48 test_must_fail git rebase $opt --strategy-option=ours A
51 test_expect_success "$opt incompatible with --interactive" "
52 git checkout B^0 &&
53 test_must_fail git rebase $opt --interactive A
56 test_expect_success "$opt incompatible with --exec" "
57 git checkout B^0 &&
58 test_must_fail git rebase $opt --exec 'true' A
63 test_rebase_am_only --whitespace=fix
64 test_rebase_am_only -C4
66 test_done