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.
93 lines
2.2 KiB
93 lines
2.2 KiB
#!/bin/sh |
|
|
|
test_description="Test whether cache-tree is properly updated |
|
|
|
Tests whether various commands properly update and/or rewrite the |
|
cache-tree extension. |
|
" |
|
. ./test-lib.sh |
|
|
|
cmp_cache_tree () { |
|
test-dump-cache-tree >actual && |
|
sed "s/$_x40/SHA/" <actual >filtered && |
|
test_cmp "$1" filtered |
|
} |
|
|
|
# We don't bother with actually checking the SHA1: |
|
# test-dump-cache-tree already verifies that all existing data is |
|
# correct. |
|
test_shallow_cache_tree () { |
|
printf "SHA (%d entries, 0 subtrees)\n" $(git ls-files|wc -l) >expect && |
|
cmp_cache_tree expect |
|
} |
|
|
|
test_invalid_cache_tree () { |
|
echo "invalid (0 subtrees)" >expect && |
|
printf "SHA #(ref) (%d entries, 0 subtrees)\n" $(git ls-files|wc -l) >>expect && |
|
cmp_cache_tree expect |
|
} |
|
|
|
test_no_cache_tree () { |
|
: >expect && |
|
cmp_cache_tree expect |
|
} |
|
|
|
test_expect_failure 'initial commit has cache-tree' ' |
|
test_commit foo && |
|
test_shallow_cache_tree |
|
' |
|
|
|
test_expect_success 'read-tree HEAD establishes cache-tree' ' |
|
git read-tree HEAD && |
|
test_shallow_cache_tree |
|
' |
|
|
|
test_expect_success 'git-add invalidates cache-tree' ' |
|
test_when_finished "git reset --hard; git read-tree HEAD" && |
|
echo "I changed this file" > foo && |
|
git add foo && |
|
test_invalid_cache_tree |
|
' |
|
|
|
test_expect_success 'update-index invalidates cache-tree' ' |
|
test_when_finished "git reset --hard; git read-tree HEAD" && |
|
echo "I changed this file" > foo && |
|
git update-index --add foo && |
|
test_invalid_cache_tree |
|
' |
|
|
|
test_expect_success 'write-tree establishes cache-tree' ' |
|
test-scrap-cache-tree && |
|
git write-tree && |
|
test_shallow_cache_tree |
|
' |
|
|
|
test_expect_success 'test-scrap-cache-tree works' ' |
|
git read-tree HEAD && |
|
test-scrap-cache-tree && |
|
test_no_cache_tree |
|
' |
|
|
|
test_expect_success 'second commit has cache-tree' ' |
|
test_commit bar && |
|
test_shallow_cache_tree |
|
' |
|
|
|
test_expect_success 'reset --hard gives cache-tree' ' |
|
test-scrap-cache-tree && |
|
git reset --hard && |
|
test_shallow_cache_tree |
|
' |
|
|
|
test_expect_success 'reset --hard without index gives cache-tree' ' |
|
rm -f .git/index && |
|
git reset --hard && |
|
test_shallow_cache_tree |
|
' |
|
|
|
test_expect_failure 'checkout gives cache-tree' ' |
|
git checkout HEAD^ && |
|
test_shallow_cache_tree |
|
' |
|
|
|
test_done
|
|
|