WIP: grep --substitute <substitution> <pattern>
[git/dscho.git] / t / t3413-rebase-cmds.sh
blob7dccd0c405dec7dae82bd3082e2974c871b238c6
1 #!/bin/sh
3 test_description='git rebase -i with non-standard commands
5 Tests that rebase -i understands "merge", "goto" and friends correctly
7 . ./test-lib.sh
9 . ../lib-rebase.sh
10 set_fake_editor
12 subject () {
13 git show -s --pretty=format:%s "$1"
16 test_expect_success 'prepare repository' '
18 test_commit ROOT &&
19 test_commit A &&
20 test_commit B &&
21 test_commit C
25 test_expect_success 'create merge' '
27 FAKE_LINES="2 merge A 3" git rebase -i -p ROOT &&
28 test C = $(subject HEAD) &&
29 test "Merge A" = "$(subject HEAD^)" &&
30 test A = $(subject HEAD^^2) &&
31 test B = $(subject HEAD~2) &&
32 test ROOT = $(subject HEAD~3)
36 test_expect_success 'goto' '
38 FAKE_LINES="goto A" git rebase -i -p ROOT &&
39 test A = $(subject HEAD) &&
40 test ROOT = $(subject HEAD^)
44 cat > rebase-script << \EOF
45 pick C
46 pick B
47 bookmark X
48 goto HEAD^
49 pick A
50 merge X
51 EOF
53 test_expect_success 'bookmark' '
55 REBASE_SCRIPT=rebase-script git rebase -i -p ROOT &&
56 test ROOT = $(subject HEAD^2~2) &&
57 test ROOT = $(subject HEAD~3) &&
58 test $(git rev-parse C) != $(git rev-parse HEAD~2) &&
59 test A = $(subject HEAD^)
63 cat > rebase-script << \EOF
64 pick E
65 topic begin feature-branch
66 pick D
67 topic end feature-branch
68 EOF
70 test_expect_success 'topic' '
72 HEAD=$(git rev-parse HEAD) &&
73 test_commit D &&
74 test_commit E &&
75 REBASE_SCRIPT=rebase-script git rebase -i -p HEAD~2 &&
76 test E = $(subject HEAD^) &&
77 test D = $(subject HEAD^2) &&
78 test $HEAD = $(git rev-parse HEAD^2^) &&
79 (subject HEAD | grep feature-branch)
83 test_done