Merge branch 'ab/ci-updates'
[git/debian.git] / t / t6439-merge-co-error-msgs.sh
blob5bfb027099a6d22849739075de82f3c0af7ca513
1 #!/bin/sh
3 test_description='unpack-trees error messages'
5 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
6 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
8 . ./test-lib.sh
11 test_expect_success 'setup' '
12 echo one >one &&
13 git add one &&
14 git commit -a -m First &&
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 &&
24 git checkout main &&
25 echo other >two &&
26 echo other >three &&
27 echo other >four &&
28 echo other >five
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
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 &&
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^
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
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
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
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
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
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
110 cat >expect <<\EOF
111 error: Updating the following directories would lose untracked files in them:
113 rep2
115 Aborting
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
141 test_done