summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-08-08 21:48:42 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-08-08 21:48:42 (GMT)
commit17501ba1cd56d4774e59c797bc048ee813dee235 (patch)
treea6f437b4c80ed369230a831244d1caa9f908f4cf /t
parent3a3338d373d10fc2699b4ad26a84992d284f3266 (diff)
parent6b7728db811142a8dba5d330da70d7c4b43d9acd (diff)
downloadgit-17501ba1cd56d4774e59c797bc048ee813dee235.zip
git-17501ba1cd56d4774e59c797bc048ee813dee235.tar.gz
git-17501ba1cd56d4774e59c797bc048ee813dee235.tar.bz2
Merge branch 'nd/fbsd-lazy-mtime'
FreeBSD can lie when asked mtime of a directory, which made the untracked cache code to fall back to a slow-path, which in turn caused tests in t7063 to fail because it wanted to verify the behaviour of the fast-path. * nd/fbsd-lazy-mtime: t7063: work around FreeBSD's lazy mtime update feature
Diffstat (limited to 't')
-rwxr-xr-xt/t7063-status-untracked-cache.sh17
1 files changed, 16 insertions, 1 deletions
diff --git a/t/t7063-status-untracked-cache.sh b/t/t7063-status-untracked-cache.sh
index c23a21c..0667bd9 100755
--- a/t/t7063-status-untracked-cache.sh
+++ b/t/t7063-status-untracked-cache.sh
@@ -4,6 +4,20 @@ test_description='test untracked cache'
. ./test-lib.sh
+# On some filesystems (e.g. FreeBSD's ext2 and ufs) directory mtime
+# is updated lazily after contents in the directory changes, which
+# forces the untracked cache code to take the slow path. A test
+# that wants to make sure that the fast path works correctly should
+# call this helper to make mtime of the containing directory in sync
+# with the reality before checking the fast path behaviour.
+#
+# See <20160803174522.5571-1-pclouds@gmail.com> if you want to know
+# more.
+
+sync_mtime () {
+ find . -type d -ls >/dev/null
+}
+
avoid_racy() {
sleep 1
}
@@ -416,7 +430,8 @@ test_expect_success 'create/modify files, some of which are gitignored' '
echo four >done/four && # four is gitignored at a higher level
echo five >done/five && # five is not gitignored
echo test >base && #we need to ensure that the root dir is touched
- rm base
+ rm base &&
+ sync_mtime
'
test_expect_success 'test sparse status with untracked cache' '