1# Helpers for tests invoking parallel-checkout
2
3# Parallel checkout tests need full control of the number of workers
4unset GIT_TEST_CHECKOUT_WORKERS
5
6set_checkout_config () {
7	if test $# -ne 2
8	then
9		BUG "usage: set_checkout_config <workers> <threshold>"
10	fi &&
11
12	test_config_global checkout.workers $1 &&
13	test_config_global checkout.thresholdForParallelism $2
14}
15
16# Run "${@:2}" and check that $1 checkout workers were used
17test_checkout_workers () {
18	if test $# -lt 2
19	then
20		BUG "too few arguments to test_checkout_workers"
21	fi &&
22
23	local expected_workers=$1 &&
24	shift &&
25
26	local trace_file=trace-test-checkout-workers &&
27	rm -f "$trace_file" &&
28	GIT_TRACE2="$(pwd)/$trace_file" "$@" 2>&8 &&
29
30	local workers="$(grep "child_start\[..*\] git checkout--worker" "$trace_file" | wc -l)" &&
31	test $workers -eq $expected_workers &&
32	rm "$trace_file"
33} 8>&2 2>&4
34
35# Verify that both the working tree and the index were created correctly
36verify_checkout () {
37	if test $# -ne 1
38	then
39		BUG "usage: verify_checkout <repository path>"
40	fi &&
41
42	git -C "$1" diff-index --ignore-submodules=none --exit-code HEAD -- &&
43	git -C "$1" status --porcelain >"$1".status &&
44	test_must_be_empty "$1".status
45}
46