]> git.ipfire.org Git - thirdparty/git.git/blame - t/t2108-update-index-refresh-racy.sh
midx: disable replace objects
[thirdparty/git.git] / t / t2108-update-index-refresh-racy.sh
CommitLineData
2ede073f
MS
1#!/bin/sh
2
3test_description='update-index refresh tests related to racy timestamps'
4
5TEST_PASSES_SANITIZE_LEAK=true
6. ./test-lib.sh
7
8reset_files () {
9 echo content >file &&
10 echo content >other &&
11 test_set_magic_mtime file &&
12 test_set_magic_mtime other
13}
14
15update_assert_changed () {
16 test_set_magic_mtime .git/index &&
17 test_might_fail git update-index "$1" &&
18 ! test_is_magic_mtime .git/index
19}
20
21test_expect_success 'setup' '
22 reset_files &&
23 # we are calling reset_files() a couple of times during tests;
24 # test-tool chmtime does not change the ctime; to not weaken
25 # or even break our tests, disable ctime-checks entirely
26 git config core.trustctime false &&
27 git add file other &&
28 git commit -m "initial import"
29'
30
31test_expect_success '--refresh has no racy timestamps to fix' '
32 reset_files &&
33 # set the index time far enough to the future;
34 # it must be at least 3 seconds for VFAT
35 test_set_magic_mtime .git/index +60 &&
36 git update-index --refresh &&
37 test_is_magic_mtime .git/index +60
38'
39
40test_expect_success '--refresh should fix racy timestamp' '
41 reset_files &&
42 update_assert_changed --refresh
43'
44
45test_expect_success '--really-refresh should fix racy timestamp' '
46 reset_files &&
47 update_assert_changed --really-refresh
48'
49
50test_expect_success '--refresh should fix racy timestamp if other file needs update' '
51 reset_files &&
52 echo content2 >other &&
53 test_set_magic_mtime other &&
54 update_assert_changed --refresh
55'
56
57test_expect_success '--refresh should fix racy timestamp if racy file needs update' '
58 reset_files &&
59 echo content2 >file &&
60 test_set_magic_mtime file &&
61 update_assert_changed --refresh
62'
63
64test_done