tests/testlib/wait-on-file
author Matt Harbison <matt_harbison@yahoo.com>
Mon, 19 Apr 2021 20:38:52 -0400
changeset 46992 5fa019ceb499
parent 44818 9d7d53771e5f
child 49198 a68b37524d50
permissions -rwxr-xr-x
mail: force SMTPException to bytes before wrapping in error.Abort Pytype wasn't complaining about this for some reason, but PyCharm was and we already handle another instance of this exception the same way in this function. Differential Revision: https://phab.mercurial-scm.org/D10473

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

# Scale the timeout to match the sleep steps below, i.e. 1/0.02.
timer=$(( 50 * $timer ))
# If the test timeout have been extended, also scale the timer relative
# to the normal timing.
if [ "$HGTEST_TIMEOUT_DEFAULT" -lt "$HGTEST_TIMEOUT" ]; then
    timer=$(( ( $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.02
done
if [ "$timer" -le 0 ]; then
    echo "file not created after $1 seconds: $wait_on" >&2
    exit 1
fi