]>
Commit | Line | Data |
---|---|---|
54fd3243 SH |
1 | #!/bin/sh |
2 | ||
3 | test_description='rebase should reread the todo file if an exec modifies it' | |
4 | ||
5 | . ./test-lib.sh | |
a47ba3c7 PW |
6 | . "$TEST_DIRECTORY"/lib-rebase.sh |
7 | ||
8 | test_expect_success 'setup' ' | |
9 | test_commit first file && | |
10 | test_commit second file && | |
11 | test_commit third file | |
12 | ' | |
54fd3243 SH |
13 | |
14 | test_expect_success 'rebase exec modifies rebase-todo' ' | |
54fd3243 SH |
15 | todo=.git/rebase-merge/git-rebase-todo && |
16 | git rebase HEAD -x "echo exec touch F >>$todo" && | |
17 | test -e F | |
18 | ' | |
19 | ||
6d67a993 | 20 | test_expect_success SHA1 'loose object cache vs re-reading todo list' ' |
26527ed8 JS |
21 | GIT_REBASE_TODO=.git/rebase-merge/git-rebase-todo && |
22 | export GIT_REBASE_TODO && | |
23 | write_script append-todo.sh <<-\EOS && | |
24 | # For values 5 and 6, this yields SHA-1s with the same first two digits | |
25 | echo "pick $(git rev-parse --short \ | |
26 | $(printf "%s\\n" \ | |
27 | "tree $EMPTY_TREE" \ | |
28 | "author A U Thor <author@example.org> $1 +0000" \ | |
29 | "committer A U Thor <author@example.org> $1 +0000" \ | |
30 | "" \ | |
31 | "$1" | | |
32 | git hash-object -t commit -w --stdin))" >>$GIT_REBASE_TODO | |
33 | ||
34 | shift | |
35 | test -z "$*" || | |
36 | echo "exec $0 $*" >>$GIT_REBASE_TODO | |
37 | EOS | |
38 | ||
39 | git rebase HEAD -x "./append-todo.sh 5 6" | |
40 | ' | |
41 | ||
a47ba3c7 PW |
42 | test_expect_success 'todo is re-read after reword and squash' ' |
43 | write_script reword-editor.sh <<-\EOS && | |
44 | GIT_SEQUENCE_EDITOR="echo \"exec echo $(cat file) >>actual\" >>" \ | |
45 | git rebase --edit-todo | |
46 | EOS | |
47 | ||
48 | test_write_lines first third >expected && | |
49 | set_fake_editor && | |
50 | GIT_SEQUENCE_EDITOR="$EDITOR" FAKE_LINES="reword 1 squash 2 fixup 3" \ | |
51 | GIT_EDITOR=./reword-editor.sh git rebase -i --root third && | |
52 | test_cmp expected actual | |
53 | ' | |
54 | ||
54fd3243 | 55 | test_done |