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.
106 lines
2.4 KiB
106 lines
2.4 KiB
#!/bin/sh |
|
|
|
test_description='read-tree -u --reset' |
|
|
|
. ./test-lib.sh |
|
. "$TEST_DIRECTORY"/lib-read-tree.sh |
|
|
|
# two-tree test |
|
|
|
test_expect_success 'setup' ' |
|
git init && |
|
mkdir df && |
|
echo content >df/file && |
|
git add df/file && |
|
git commit -m one && |
|
git ls-files >expect && |
|
rm -rf df && |
|
echo content >df && |
|
git add df && |
|
echo content >new && |
|
git add new && |
|
git commit -m two |
|
' |
|
|
|
test_expect_success 'reset should work' ' |
|
read_tree_u_must_succeed -u --reset HEAD^ && |
|
git ls-files >actual && |
|
test_cmp expect actual |
|
' |
|
|
|
test_expect_success 'reset should remove remnants from a failed merge' ' |
|
read_tree_u_must_succeed --reset -u HEAD && |
|
git ls-files -s >expect && |
|
sha1=$(git rev-parse :new) && |
|
( |
|
echo "100644 $sha1 1 old" && |
|
echo "100644 $sha1 3 old" |
|
) | git update-index --index-info && |
|
>old && |
|
git ls-files -s && |
|
read_tree_u_must_succeed --reset -u HEAD && |
|
git ls-files -s >actual && |
|
! test -f old |
|
' |
|
|
|
test_expect_success 'two-way reset should remove remnants too' ' |
|
read_tree_u_must_succeed --reset -u HEAD && |
|
git ls-files -s >expect && |
|
sha1=$(git rev-parse :new) && |
|
( |
|
echo "100644 $sha1 1 old" && |
|
echo "100644 $sha1 3 old" |
|
) | git update-index --index-info && |
|
>old && |
|
git ls-files -s && |
|
read_tree_u_must_succeed --reset -u HEAD HEAD && |
|
git ls-files -s >actual && |
|
! test -f old |
|
' |
|
|
|
test_expect_success 'Porcelain reset should remove remnants too' ' |
|
read_tree_u_must_succeed --reset -u HEAD && |
|
git ls-files -s >expect && |
|
sha1=$(git rev-parse :new) && |
|
( |
|
echo "100644 $sha1 1 old" && |
|
echo "100644 $sha1 3 old" |
|
) | git update-index --index-info && |
|
>old && |
|
git ls-files -s && |
|
git reset --hard && |
|
git ls-files -s >actual && |
|
! test -f old |
|
' |
|
|
|
test_expect_success 'Porcelain checkout -f should remove remnants too' ' |
|
read_tree_u_must_succeed --reset -u HEAD && |
|
git ls-files -s >expect && |
|
sha1=$(git rev-parse :new) && |
|
( |
|
echo "100644 $sha1 1 old" && |
|
echo "100644 $sha1 3 old" |
|
) | git update-index --index-info && |
|
>old && |
|
git ls-files -s && |
|
git checkout -f && |
|
git ls-files -s >actual && |
|
! test -f old |
|
' |
|
|
|
test_expect_success 'Porcelain checkout -f HEAD should remove remnants too' ' |
|
read_tree_u_must_succeed --reset -u HEAD && |
|
git ls-files -s >expect && |
|
sha1=$(git rev-parse :new) && |
|
( |
|
echo "100644 $sha1 1 old" && |
|
echo "100644 $sha1 3 old" |
|
) | git update-index --index-info && |
|
>old && |
|
git ls-files -s && |
|
git checkout -f HEAD && |
|
git ls-files -s >actual && |
|
! test -f old |
|
' |
|
|
|
test_done
|
|
|