]>
Commit | Line | Data |
---|---|---|
2ede073f MS |
1 | #!/bin/sh |
2 | ||
3 | test_description='update-index refresh tests related to racy timestamps' | |
4 | ||
5 | TEST_PASSES_SANITIZE_LEAK=true | |
6 | . ./test-lib.sh | |
7 | ||
8 | reset_files () { | |
9 | echo content >file && | |
10 | echo content >other && | |
11 | test_set_magic_mtime file && | |
12 | test_set_magic_mtime other | |
13 | } | |
14 | ||
15 | update_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 | ||
21 | test_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 | ||
31 | test_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 | ||
40 | test_expect_success '--refresh should fix racy timestamp' ' | |
41 | reset_files && | |
42 | update_assert_changed --refresh | |
43 | ' | |
44 | ||
45 | test_expect_success '--really-refresh should fix racy timestamp' ' | |
46 | reset_files && | |
47 | update_assert_changed --really-refresh | |
48 | ' | |
49 | ||
50 | test_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 | ||
57 | test_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 | ||
64 | test_done |