t8*: adjust the references to the default branch name "main"
[git] / t / t3505-cherry-pick-empty.sh
1 #!/bin/sh
2
3 test_description='test cherry-picking an empty commit'
4
5 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
6 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
7
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
17         git checkout -b empty-message-branch &&
18         echo third >> file1 &&
19         git add file1 &&
20         test_tick &&
21         git commit --allow-empty-message -m "" &&
22
23         git checkout main &&
24         git checkout -b empty-change-branch &&
25         test_tick &&
26         git commit --allow-empty -m "empty"
27
28 '
29
30 test_expect_success 'cherry-pick an empty commit' '
31         git checkout main &&
32         test_expect_code 1 git cherry-pick empty-change-branch
33 '
34
35 test_expect_success 'index lockfile was removed' '
36         test ! -f .git/index.lock
37 '
38
39 test_expect_success 'cherry-pick a commit with an empty message' '
40         test_when_finished "git reset --hard empty-message-branch~1" &&
41         git checkout main &&
42         git cherry-pick empty-message-branch
43 '
44
45 test_expect_success 'index lockfile was removed' '
46         test ! -f .git/index.lock
47 '
48
49 test_expect_success 'cherry-pick a commit with an empty message with --allow-empty-message' '
50         git checkout -f main &&
51         git cherry-pick --allow-empty-message empty-message-branch
52 '
53
54 test_expect_success 'cherry pick an empty non-ff commit without --allow-empty' '
55         git checkout main &&
56         echo fourth >>file2 &&
57         git add file2 &&
58         git commit -m "fourth" &&
59         test_must_fail git cherry-pick empty-change-branch
60 '
61
62 test_expect_success 'cherry pick an empty non-ff commit with --allow-empty' '
63         git checkout main &&
64         git cherry-pick --allow-empty empty-change-branch
65 '
66
67 test_expect_success 'cherry pick with --keep-redundant-commits' '
68         git checkout main &&
69         git cherry-pick --keep-redundant-commits HEAD^
70 '
71
72 test_expect_success 'cherry-pick a commit that becomes no-op (prep)' '
73         git checkout main &&
74         git branch fork &&
75         echo foo >file2 &&
76         git add file2 &&
77         test_tick &&
78         git commit -m "add file2 on main" &&
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 &&
90         test_must_fail git cherry-pick main
91 '
92
93 test_expect_success 'cherry-pick a no-op with --keep-redundant' '
94         git reset --hard &&
95         git checkout fork^0 &&
96         git cherry-pick --keep-redundant-commits main &&
97         git show -s --format=%s >actual &&
98         echo "add file2 on main" >expect &&
99         test_cmp expect actual
100 '
101
102 test_done