tests/testlib/wait-on-file
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 16 Apr 2020 22:56:03 +0200
branchstable
changeset 44744 23dd43d94f50
parent 44727 694d40416d62
child 44780 f727939f3513
permissions -rwxr-xr-x
wait-on-file: adjust the timer counter The wait performed in increment of 0.01 second, but the timer was expressed in second. So we did not wait 20s, we waited 0.2 second. Internally we adjust the counter to be expressed in centisecond. This prevent some flackyness in the test. Differential Revision: https://phab.mercurial-scm.org/D8453

#!/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"

# if the test timeout have been extended, explicitly extend the provided timer
if [ "$HGTEST_TIMEOUT_DEFAULT" -lt "$HGTEST_TIMEOUT" ]; then
    timer=$(( ( 100 * $timer * $HGTEST_TIMEOUT) / $HGTEST_TIMEOUT_DEFAULT ))
fi

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