1#!/bin/sh 2 3test_description='unpack-trees error messages' 4 5. ./test-lib.sh 6 7 8test_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 28cat>expect <<\EOF 29error: The following untracked working tree files would be overwritten by merge: 30 five 31 four 32 three 33 two 34Please move or remove them before you merge. 35Aborting 36EOF 37 38test_expect_success 'untracked files overwritten by merge (fast and non-fast forward)'' 39 test_must_fail git merge branch 2>out && 40 test_i18ncmp 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_i18ncmp out2 expect && 48 git reset --hard HEAD^ 49' 50 51cat>expect <<\EOF 52error: Your local changes to the following files would be overwritten by merge: 53 four 54 three 55 two 56Please commit your changes or stash them before you merge. 57error: The following untracked working tree files would be overwritten by merge: 58 five 59Please move or remove them before you merge. 60Aborting 61EOF 62 63test_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_i18ncmp out expect 69' 70 71cat>expect <<\EOF 72error: Your local changes to the following files would be overwritten by checkout: 73 rep/one 74 rep/two 75Please commit your changes or stash them before you switch branches. 76Aborting 77EOF 78 79test_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_i18ncmp out expect 91' 92 93cat>expect <<\EOF 94error: Your local changes to the following files would be overwritten by checkout: 95 rep/one 96 rep/two 97Please commit your changes or stash them before you switch branches. 98Aborting 99EOF 100 101test_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_i18ncmp out expect 105' 106 107cat>expect <<\EOF 108error: Updating the following directories would lose untracked files in it: 109 rep 110 rep2 111 112Aborting 113EOF 114 115test_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_i18ncmp out ../expect 136' 137 138test_done