|  | #!/bin/sh | 
|  |  | 
|  | test_description='unpack-trees error messages' | 
|  |  | 
|  | . ./test-lib.sh | 
|  |  | 
|  |  | 
|  | test_expect_success 'setup' ' | 
|  | echo one >one && | 
|  | git add one && | 
|  | git commit -a -m First && | 
|  |  | 
|  | git checkout -b branch && | 
|  | echo two >two && | 
|  | echo three >three && | 
|  | echo four >four && | 
|  | echo five >five && | 
|  | git add two three four five && | 
|  | git commit -m Second && | 
|  |  | 
|  | git checkout master && | 
|  | echo other >two && | 
|  | echo other >three && | 
|  | echo other >four && | 
|  | echo other >five | 
|  | ' | 
|  |  | 
|  | cat >expect <<\EOF | 
|  | error: The following untracked working tree files would be overwritten by merge: | 
|  | five | 
|  | four | 
|  | three | 
|  | two | 
|  | Please move or remove them before you merge. | 
|  | Aborting | 
|  | EOF | 
|  |  | 
|  | test_expect_success 'untracked files overwritten by merge (fast and non-fast forward)' ' | 
|  | test_must_fail git merge branch 2>out && | 
|  | test_i18ncmp out expect && | 
|  | git commit --allow-empty -m empty && | 
|  | ( | 
|  | GIT_MERGE_VERBOSITY=0 && | 
|  | export GIT_MERGE_VERBOSITY && | 
|  | test_must_fail git merge branch 2>out2 | 
|  | ) && | 
|  | test_i18ncmp out2 expect && | 
|  | git reset --hard HEAD^ | 
|  | ' | 
|  |  | 
|  | cat >expect <<\EOF | 
|  | error: Your local changes to the following files would be overwritten by merge: | 
|  | four | 
|  | three | 
|  | two | 
|  | Please commit your changes or stash them before you merge. | 
|  | error: The following untracked working tree files would be overwritten by merge: | 
|  | five | 
|  | Please move or remove them before you merge. | 
|  | Aborting | 
|  | EOF | 
|  |  | 
|  | test_expect_success 'untracked files or local changes ovewritten by merge' ' | 
|  | git add two && | 
|  | git add three && | 
|  | git add four && | 
|  | test_must_fail git merge branch 2>out && | 
|  | test_i18ncmp out expect | 
|  | ' | 
|  |  | 
|  | cat >expect <<\EOF | 
|  | error: Your local changes to the following files would be overwritten by checkout: | 
|  | rep/one | 
|  | rep/two | 
|  | Please commit your changes or stash them before you switch branches. | 
|  | Aborting | 
|  | EOF | 
|  |  | 
|  | test_expect_success 'cannot switch branches because of local changes' ' | 
|  | git add five && | 
|  | mkdir rep && | 
|  | echo one >rep/one && | 
|  | echo two >rep/two && | 
|  | git add rep/one rep/two && | 
|  | git commit -m Fourth && | 
|  | git checkout master && | 
|  | echo uno >rep/one && | 
|  | echo dos >rep/two && | 
|  | test_must_fail git checkout branch 2>out && | 
|  | test_i18ncmp out expect | 
|  | ' | 
|  |  | 
|  | cat >expect <<\EOF | 
|  | error: Your local changes to the following files would be overwritten by checkout: | 
|  | rep/one | 
|  | rep/two | 
|  | Please commit your changes or stash them before you switch branches. | 
|  | Aborting | 
|  | EOF | 
|  |  | 
|  | test_expect_success 'not uptodate file porcelain checkout error' ' | 
|  | git add rep/one rep/two && | 
|  | test_must_fail git checkout branch 2>out && | 
|  | test_i18ncmp out expect | 
|  | ' | 
|  |  | 
|  | cat >expect <<\EOF | 
|  | error: Updating the following directories would lose untracked files in them: | 
|  | rep | 
|  | rep2 | 
|  |  | 
|  | Aborting | 
|  | EOF | 
|  |  | 
|  | test_expect_success 'not_uptodate_dir porcelain checkout error' ' | 
|  | git init uptodate && | 
|  | cd uptodate && | 
|  | mkdir rep && | 
|  | mkdir rep2 && | 
|  | touch rep/foo && | 
|  | touch rep2/foo && | 
|  | git add rep/foo rep2/foo && | 
|  | git commit -m init && | 
|  | git checkout -b branch && | 
|  | git rm rep -r && | 
|  | git rm rep2 -r && | 
|  | >rep && | 
|  | >rep2 && | 
|  | git add rep rep2&& | 
|  | git commit -m "added test as a file" && | 
|  | git checkout master && | 
|  | >rep/untracked-file && | 
|  | >rep2/untracked-file && | 
|  | test_must_fail git checkout branch 2>out && | 
|  | test_i18ncmp out ../expect | 
|  | ' | 
|  |  | 
|  | test_done |