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.
64 lines
1.6 KiB
64 lines
1.6 KiB
#!/bin/sh |
|
|
|
test_description='update-index refresh tests related to racy timestamps' |
|
|
|
TEST_PASSES_SANITIZE_LEAK=true |
|
. ./test-lib.sh |
|
|
|
reset_files () { |
|
echo content >file && |
|
echo content >other && |
|
test_set_magic_mtime file && |
|
test_set_magic_mtime other |
|
} |
|
|
|
update_assert_changed () { |
|
test_set_magic_mtime .git/index && |
|
test_might_fail git update-index "$1" && |
|
! test_is_magic_mtime .git/index |
|
} |
|
|
|
test_expect_success 'setup' ' |
|
reset_files && |
|
# we are calling reset_files() a couple of times during tests; |
|
# test-tool chmtime does not change the ctime; to not weaken |
|
# or even break our tests, disable ctime-checks entirely |
|
git config core.trustctime false && |
|
git add file other && |
|
git commit -m "initial import" |
|
' |
|
|
|
test_expect_success '--refresh has no racy timestamps to fix' ' |
|
reset_files && |
|
# set the index time far enough to the future; |
|
# it must be at least 3 seconds for VFAT |
|
test_set_magic_mtime .git/index +60 && |
|
git update-index --refresh && |
|
test_is_magic_mtime .git/index +60 |
|
' |
|
|
|
test_expect_success '--refresh should fix racy timestamp' ' |
|
reset_files && |
|
update_assert_changed --refresh |
|
' |
|
|
|
test_expect_success '--really-refresh should fix racy timestamp' ' |
|
reset_files && |
|
update_assert_changed --really-refresh |
|
' |
|
|
|
test_expect_success '--refresh should fix racy timestamp if other file needs update' ' |
|
reset_files && |
|
echo content2 >other && |
|
test_set_magic_mtime other && |
|
update_assert_changed --refresh |
|
' |
|
|
|
test_expect_success '--refresh should fix racy timestamp if racy file needs update' ' |
|
reset_files && |
|
echo content2 >file && |
|
test_set_magic_mtime file && |
|
update_assert_changed --refresh |
|
' |
|
|
|
test_done
|
|
|