string-list.[ch]: add a string_list_init_{nodup,dup}()
[git.git] / t / lib-parallel-checkout.sh
blob83b279a846c699b80aa93ae1bccceb66275f4baf
1 # Helpers for tests invoking parallel-checkout
3 # Parallel checkout tests need full control of the number of workers
4 unset GIT_TEST_CHECKOUT_WORKERS
6 set_checkout_config () {
7 if test $# -ne 2
8 then
9 BUG "usage: set_checkout_config <workers> <threshold>"
10 fi &&
12 test_config_global checkout.workers $1 &&
13 test_config_global checkout.thresholdForParallelism $2
16 # Run "${@:2}" and check that $1 checkout workers were used
17 test_checkout_workers () {
18 if test $# -lt 2
19 then
20 BUG "too few arguments to test_checkout_workers"
21 fi &&
23 local expected_workers=$1 &&
24 shift &&
26 local trace_file=trace-test-checkout-workers &&
27 rm -f "$trace_file" &&
28 GIT_TRACE2="$(pwd)/$trace_file" "$@" 2>&8 &&
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
35 # Verify that both the working tree and the index were created correctly
36 verify_checkout () {
37 if test $# -ne 1
38 then
39 BUG "usage: verify_checkout <repository path>"
40 fi &&
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