Merge branch 'cc/test-helper-bloom-usage-fix'
[git] / t / t6439-merge-co-error-msgs.sh
1 #!/bin/sh
2
3 test_description='unpack-trees error messages'
4
5 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
6 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
7
8 . ./test-lib.sh
9
10
11 test_expect_success 'setup' '
12         echo one >one &&
13         git add one &&
14         git commit -a -m First &&
15
16         git checkout -b branch &&
17         echo two >two &&
18         echo three >three &&
19         echo four >four &&
20         echo five >five &&
21         git add two three four five &&
22         git commit -m Second &&
23
24         git checkout main &&
25         echo other >two &&
26         echo other >three &&
27         echo other >four &&
28         echo other >five
29 '
30
31 cat >expect <<\EOF
32 error: The following untracked working tree files would be overwritten by merge:
33         five
34         four
35         three
36         two
37 Please move or remove them before you merge.
38 Aborting
39 EOF
40
41 test_expect_success 'untracked files overwritten by merge (fast and non-fast forward)' '
42         test_must_fail git merge branch 2>out &&
43         test_cmp out expect &&
44         git commit --allow-empty -m empty &&
45         (
46                 GIT_MERGE_VERBOSITY=0 &&
47                 export GIT_MERGE_VERBOSITY &&
48                 test_must_fail git merge branch 2>out2
49         ) &&
50         test_cmp out2 expect &&
51         git reset --hard HEAD^
52 '
53
54 cat >expect <<\EOF
55 error: Your local changes to the following files would be overwritten by merge:
56         four
57         three
58         two
59 Please commit your changes or stash them before you merge.
60 error: The following untracked working tree files would be overwritten by merge:
61         five
62 Please move or remove them before you merge.
63 Aborting
64 EOF
65
66 test_expect_success 'untracked files or local changes ovewritten by merge' '
67         git add two &&
68         git add three &&
69         git add four &&
70         test_must_fail git merge branch 2>out &&
71         test_cmp out expect
72 '
73
74 cat >expect <<\EOF
75 error: Your local changes to the following files would be overwritten by checkout:
76         rep/one
77         rep/two
78 Please commit your changes or stash them before you switch branches.
79 Aborting
80 EOF
81
82 test_expect_success 'cannot switch branches because of local changes' '
83         git add five &&
84         mkdir rep &&
85         echo one >rep/one &&
86         echo two >rep/two &&
87         git add rep/one rep/two &&
88         git commit -m Fourth &&
89         git checkout main &&
90         echo uno >rep/one &&
91         echo dos >rep/two &&
92         test_must_fail git checkout branch 2>out &&
93         test_cmp out expect
94 '
95
96 cat >expect <<\EOF
97 error: Your local changes to the following files would be overwritten by checkout:
98         rep/one
99         rep/two
100 Please commit your changes or stash them before you switch branches.
101 Aborting
102 EOF
103
104 test_expect_success 'not uptodate file porcelain checkout error' '
105         git add rep/one rep/two &&
106         test_must_fail git checkout branch 2>out &&
107         test_cmp out expect
108 '
109
110 cat >expect <<\EOF
111 error: Updating the following directories would lose untracked files in them:
112         rep
113         rep2
114
115 Aborting
116 EOF
117
118 test_expect_success 'not_uptodate_dir porcelain checkout error' '
119         git init uptodate &&
120         cd uptodate &&
121         mkdir rep &&
122         mkdir rep2 &&
123         touch rep/foo &&
124         touch rep2/foo &&
125         git add rep/foo rep2/foo &&
126         git commit -m init &&
127         git checkout -b branch &&
128         git rm rep -r &&
129         git rm rep2 -r &&
130         >rep &&
131         >rep2 &&
132         git add rep rep2 &&
133         git commit -m "added test as a file" &&
134         git checkout main &&
135         >rep/untracked-file &&
136         >rep2/untracked-file &&
137         test_must_fail git checkout branch 2>out &&
138         test_cmp out ../expect
139 '
140
141 test_done