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