# HG changeset patch # User Pierre-Yves David # Date 2020-02-28 01:23:28 # Node ID 1ed6293fc31bd70b0a40399bf2e10bd3b94d7462 # Parent 4c6189d45d672cc427c63ed907319ab29831883b testlib: add a small scrip to help process to synchronise using file Creating and waiting for files is a robust way to synchronise two processes running concurrently. We already use this approach in various tests. I am adding a official script to do so before adding more usage of this. Differential Revision: https://phab.mercurial-scm.org/D8189 diff --git a/tests/testlib/wait-on-file b/tests/testlib/wait-on-file new file mode 100755 --- /dev/null +++ b/tests/testlib/wait-on-file @@ -0,0 +1,32 @@ +#!/bin/bash +# +# wait up to TIMEOUT seconds until a WAIT_ON_FILE is created. +# +# In addition, this script can create CREATE_FILE once it is ready to wait. + +if [ $# -lt 2 ] || [ $# -gt 3 ]; then + echo $# + echo "USAGE: $0 TIMEOUT WAIT_ON_FILE [CREATE_FILE]" +fi + +timer="$1" +wait_on="$2" +create="" +if [ $# -eq 3 ]; then + create="$3" +fi + +if [ -n "$create" ]; +then + touch "$create" + create="" +fi +while [ "$timer" -gt 0 ] && [ ! -f "$wait_on" ]; +do + timer=$(( timer - 1)) + sleep 0.01 +done +if [ "$timer" -le 0 ]; then + echo "file not created after $1 seconds: $wait_on" >&2 + exit 1 +fi