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