Files
tomato/tools/test-wrapper.sh
Green Sky 565efa4f39 Squashed 'external/toxcore/c-toxcore/' changes from 1828c5356..c9cdae001
c9cdae001 fix(toxav): remove extra copy of video frame on encode
4f6d4546b test: Improve the fake network library.
a2581e700 refactor(toxcore): generate `Friend_Request` and `Dht_Nodes_Response`
2aaa11770 refactor(toxcore): use Tox_Memory in generated events
5c367452b test(toxcore): fix incorrect mutex in tox_scenario_get_time
8f92e710f perf: Add a timed limit of number of cookie requests.
695b6417a test: Add some more simulated network support.
815ae9ce9 test(toxcore): fix thread-safety in scenario framework
6d85c754e test(toxcore): add unit tests for net_crypto
9c22e79cc test(support): add SimulatedEnvironment for deterministic testing
f34fcb195 chore: Update windows Dockerfile to debian stable (trixie).
ece0e8980 fix(group_moderation): allow validating unsorted sanction list signatures
a4fa754d7 refactor: rename struct Packet to struct Net_Packet
d6f330f85 cleanup: Fix some warnings from coverity.
e206bffa2 fix(group_chats): fix sync packets reverting topics
0e4715598 test: Add new scenario testing framework.
668291f44 refactor(toxcore): decouple Network_Funcs from sockaddr via IP_Port
fc4396cef fix: potential division by zero in toxav and unsafe hex parsing
8e8b352ab refactor: Add nullable annotations to struct members.
7740bb421 refactor: decouple net_crypto from DHT
1936d4296 test: add benchmark for toxav audio and video
46bfdc2df fix: correct printf format specifiers for unsigned integers
REVERT: 1828c5356 fix(toxav): remove extra copy of video frame on encode

git-subtree-dir: external/toxcore/c-toxcore
git-subtree-split: c9cdae001341e701fca980c9bb9febfeb95d2902
2026-01-11 14:42:31 +01:00

77 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
# Default values
TIMEOUT=300
RETRIES=3
# Automake calls LOG_COMPILER with any flags from AM_LOG_FLAGS and LOG_FLAGS,
# then the test program and its arguments.
# We want to be able to override these via environment variables too.
if [ -n "$TEST_TIMEOUT" ]; then
TIMEOUT="$TEST_TIMEOUT"
fi
if [ -n "$TEST_RETRIES" ]; then
RETRIES="$TEST_RETRIES"
fi
# In case we want to pass them as flags in AM_LOG_FLAGS
while true; do
case "$1" in
--timeout)
TIMEOUT="$2"
shift 2
;;
--retries)
RETRIES="$2"
shift 2
;;
*)
break
;;
esac
done
if [ $# -eq 0 ]; then
echo "Usage: $0 [--timeout seconds] [--retries count] test-program [args...]"
exit 1
fi
attempt=0
while [ "$attempt" -le "$RETRIES" ]; do
if [ "$attempt" -gt 0 ]; then
echo "Retry #$attempt for: $*"
fi
# Use timeout command if available
if command -v timeout >/dev/null 2>&1; then
# Use --foreground to avoid issues with signals in some environments
# Use -s KILL to ensure it dies if it hangs
timeout --foreground -s KILL "${TIMEOUT}s" "$@"
status=$?
else
# Fallback if timeout is not available
"$@"
status=$?
fi
# status 0: success
# status 77: skipped
# status 99: hard error
if [ "$status" -eq 0 ] || [ "$status" -eq 77 ] || [ "$status" -eq 99 ]; then
exit "$status"
fi
# If it was timed out by GNU timeout, exit code is 124 (or 137 with -s KILL)
if [ "$status" -eq 124 ] || [ "$status" -eq 137 ]; then
echo "Test timed out after ${TIMEOUT}s: $*"
else
echo "Test failed with status $status: $*"
fi
attempt=$((attempt + 1))
done
exit "$status"