]>
Commit | Line | Data |
---|---|---|
0d66e959 CJ |
1 | #!/bin/sh |
2 | ||
3 | test_description='test cherry-picking an empty commit' | |
4 | ||
cbc75a12 | 5 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
334afbc7 JS |
6 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
7 | ||
0d66e959 CJ |
8 | . ./test-lib.sh |
9 | ||
10 | test_expect_success setup ' | |
11 | ||
12 | echo first > file1 && | |
13 | git add file1 && | |
14 | test_tick && | |
15 | git commit -m "first" && | |
16 | ||
a3ec9eaf | 17 | git checkout -b empty-message-branch && |
2c048a30 CC |
18 | echo third >> file1 && |
19 | git add file1 && | |
20 | test_tick && | |
bedfe86c NH |
21 | git commit --allow-empty-message -m "" && |
22 | ||
cbc75a12 | 23 | git checkout main && |
a3ec9eaf | 24 | git checkout -b empty-change-branch && |
bedfe86c NH |
25 | test_tick && |
26 | git commit --allow-empty -m "empty" | |
0d66e959 CJ |
27 | |
28 | ' | |
29 | ||
c6720cfa | 30 | test_expect_success 'cherry-pick an empty commit' ' |
cbc75a12 | 31 | git checkout main && |
a3ec9eaf | 32 | test_expect_code 1 git cherry-pick empty-change-branch |
2c048a30 CC |
33 | ' |
34 | ||
35 | test_expect_success 'index lockfile was removed' ' | |
2c048a30 | 36 | test ! -f .git/index.lock |
2c048a30 CC |
37 | ' |
38 | ||
39 | test_expect_success 'cherry-pick a commit with an empty message' ' | |
a3ec9eaf | 40 | test_when_finished "git reset --hard empty-message-branch~1" && |
cbc75a12 | 41 | git checkout main && |
a3ec9eaf | 42 | git cherry-pick empty-message-branch |
0d66e959 CJ |
43 | ' |
44 | ||
45 | test_expect_success 'index lockfile was removed' ' | |
0d66e959 | 46 | test ! -f .git/index.lock |
0d66e959 CJ |
47 | ' |
48 | ||
4bee9584 | 49 | test_expect_success 'cherry-pick a commit with an empty message with --allow-empty-message' ' |
cbc75a12 | 50 | git checkout -f main && |
a3ec9eaf | 51 | git cherry-pick --allow-empty-message empty-message-branch |
4bee9584 CW |
52 | ' |
53 | ||
bedfe86c | 54 | test_expect_success 'cherry pick an empty non-ff commit without --allow-empty' ' |
cbc75a12 | 55 | git checkout main && |
bedfe86c NH |
56 | echo fourth >>file2 && |
57 | git add file2 && | |
58 | git commit -m "fourth" && | |
a3ec9eaf | 59 | test_must_fail git cherry-pick empty-change-branch |
bedfe86c NH |
60 | ' |
61 | ||
62 | test_expect_success 'cherry pick an empty non-ff commit with --allow-empty' ' | |
cbc75a12 | 63 | git checkout main && |
a3ec9eaf | 64 | git cherry-pick --allow-empty empty-change-branch |
bedfe86c NH |
65 | ' |
66 | ||
67 | test_expect_success 'cherry pick with --keep-redundant-commits' ' | |
cbc75a12 | 68 | git checkout main && |
bedfe86c NH |
69 | git cherry-pick --keep-redundant-commits HEAD^ |
70 | ' | |
71 | ||
ac2b0e8f | 72 | test_expect_success 'cherry-pick a commit that becomes no-op (prep)' ' |
cbc75a12 | 73 | git checkout main && |
ac2b0e8f JH |
74 | git branch fork && |
75 | echo foo >file2 && | |
76 | git add file2 && | |
77 | test_tick && | |
cbc75a12 | 78 | git commit -m "add file2 on main" && |
ac2b0e8f JH |
79 | |
80 | git checkout fork && | |
81 | echo foo >file2 && | |
82 | git add file2 && | |
83 | test_tick && | |
84 | git commit -m "add file2 on the side" | |
85 | ' | |
86 | ||
87 | test_expect_success 'cherry-pick a no-op without --keep-redundant' ' | |
88 | git reset --hard && | |
89 | git checkout fork^0 && | |
cbc75a12 | 90 | test_must_fail git cherry-pick main |
ac2b0e8f JH |
91 | ' |
92 | ||
93 | test_expect_success 'cherry-pick a no-op with --keep-redundant' ' | |
94 | git reset --hard && | |
95 | git checkout fork^0 && | |
cbc75a12 | 96 | git cherry-pick --keep-redundant-commits main && |
15c7348e | 97 | git show -s --format=%s >actual && |
cbc75a12 | 98 | echo "add file2 on main" >expect && |
ac2b0e8f JH |
99 | test_cmp expect actual |
100 | ' | |
101 | ||
0d66e959 | 102 | test_done |