зеркало из https://github.com/microsoft/git.git
t7527: test status with untracked-cache and fsmonitor--daemon
Create 2x2 test matrix with the untracked-cache and fsmonitor--daemon features and a series of edits and verify that status output is identical. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
26b9f34ab3
Коммит
a3dfe97f41
|
@ -205,6 +205,8 @@ test_expect_success 'setup' '
|
||||||
.gitignore
|
.gitignore
|
||||||
expect*
|
expect*
|
||||||
actual*
|
actual*
|
||||||
|
flush*
|
||||||
|
trace*
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
git -c core.fsmonitor=false add . &&
|
git -c core.fsmonitor=false add . &&
|
||||||
|
@ -491,4 +493,117 @@ test_expect_success 'cleanup worktrees' '
|
||||||
stop_daemon_delete_repo wt-base
|
stop_daemon_delete_repo wt-base
|
||||||
'
|
'
|
||||||
|
|
||||||
|
# The next few tests perform arbitrary/contrived file operations and
|
||||||
|
# confirm that status is correct. That is, that the data (or lack of
|
||||||
|
# data) from fsmonitor doesn't cause incorrect results. And doesn't
|
||||||
|
# cause incorrect results when the untracked-cache is enabled.
|
||||||
|
|
||||||
|
test_lazy_prereq UNTRACKED_CACHE '
|
||||||
|
git update-index --test-untracked-cache
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Matrix: setup for untracked-cache,fsmonitor matrix' '
|
||||||
|
test_unconfig core.fsmonitor &&
|
||||||
|
git update-index --no-fsmonitor &&
|
||||||
|
test_might_fail git fsmonitor--daemon stop
|
||||||
|
'
|
||||||
|
|
||||||
|
matrix_clean_up_repo () {
|
||||||
|
git reset --hard HEAD &&
|
||||||
|
git clean -fd
|
||||||
|
}
|
||||||
|
|
||||||
|
matrix_try () {
|
||||||
|
uc=$1 &&
|
||||||
|
fsm=$2 &&
|
||||||
|
fn=$3 &&
|
||||||
|
|
||||||
|
if test $uc = true && test $fsm = false
|
||||||
|
then
|
||||||
|
# The untracked-cache is buggy when FSMonitor is
|
||||||
|
# DISABLED, so skip the tests for this matrix
|
||||||
|
# combination.
|
||||||
|
#
|
||||||
|
# We've observed random, occasional test failures on
|
||||||
|
# Windows and MacOS when the UC is turned on and FSM
|
||||||
|
# is turned off. These are rare, but they do happen
|
||||||
|
# indicating that it is probably a race condition within
|
||||||
|
# the untracked cache itself.
|
||||||
|
#
|
||||||
|
# It usually happens when a test does F/D trickery and
|
||||||
|
# then the NEXT test fails because of extra status
|
||||||
|
# output from stale UC data from the previous test.
|
||||||
|
#
|
||||||
|
# Since FSMonitor is not involved in the error, skip
|
||||||
|
# the tests for this matrix combination.
|
||||||
|
#
|
||||||
|
return 0
|
||||||
|
fi &&
|
||||||
|
|
||||||
|
test_expect_success "Matrix[uc:$uc][fsm:$fsm] $fn" '
|
||||||
|
matrix_clean_up_repo &&
|
||||||
|
$fn &&
|
||||||
|
if test $uc = false && test $fsm = false
|
||||||
|
then
|
||||||
|
git status --porcelain=v1 >.git/expect.$fn
|
||||||
|
else
|
||||||
|
git status --porcelain=v1 >.git/actual.$fn &&
|
||||||
|
test_cmp .git/expect.$fn .git/actual.$fn
|
||||||
|
fi
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
|
uc_values="false"
|
||||||
|
test_have_prereq UNTRACKED_CACHE && uc_values="false true"
|
||||||
|
for uc_val in $uc_values
|
||||||
|
do
|
||||||
|
if test $uc_val = false
|
||||||
|
then
|
||||||
|
test_expect_success "Matrix[uc:$uc_val] disable untracked cache" '
|
||||||
|
git config core.untrackedcache false &&
|
||||||
|
git update-index --no-untracked-cache
|
||||||
|
'
|
||||||
|
else
|
||||||
|
test_expect_success "Matrix[uc:$uc_val] enable untracked cache" '
|
||||||
|
git config core.untrackedcache true &&
|
||||||
|
git update-index --untracked-cache
|
||||||
|
'
|
||||||
|
fi
|
||||||
|
|
||||||
|
fsm_values="false true"
|
||||||
|
for fsm_val in $fsm_values
|
||||||
|
do
|
||||||
|
if test $fsm_val = false
|
||||||
|
then
|
||||||
|
test_expect_success "Matrix[uc:$uc_val][fsm:$fsm_val] disable fsmonitor" '
|
||||||
|
test_unconfig core.fsmonitor &&
|
||||||
|
git update-index --no-fsmonitor &&
|
||||||
|
test_might_fail git fsmonitor--daemon stop
|
||||||
|
'
|
||||||
|
else
|
||||||
|
test_expect_success "Matrix[uc:$uc_val][fsm:$fsm_val] enable fsmonitor" '
|
||||||
|
git config core.fsmonitor true &&
|
||||||
|
git fsmonitor--daemon start &&
|
||||||
|
git update-index --fsmonitor
|
||||||
|
'
|
||||||
|
fi
|
||||||
|
|
||||||
|
matrix_try $uc_val $fsm_val edit_files
|
||||||
|
matrix_try $uc_val $fsm_val delete_files
|
||||||
|
matrix_try $uc_val $fsm_val create_files
|
||||||
|
matrix_try $uc_val $fsm_val rename_files
|
||||||
|
matrix_try $uc_val $fsm_val file_to_directory
|
||||||
|
matrix_try $uc_val $fsm_val directory_to_file
|
||||||
|
|
||||||
|
if test $fsm_val = true
|
||||||
|
then
|
||||||
|
test_expect_success "Matrix[uc:$uc_val][fsm:$fsm_val] disable fsmonitor at end" '
|
||||||
|
test_unconfig core.fsmonitor &&
|
||||||
|
git update-index --no-fsmonitor &&
|
||||||
|
test_might_fail git fsmonitor--daemon stop
|
||||||
|
'
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Загрузка…
Ссылка в новой задаче