You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
3.0 KiB
138 lines
3.0 KiB
#!/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
|
|
|