#!/bin/bash set -u LIBAVCODEC_MAJOR=$(pkg-config --modversion libavcodec 2>/dev/null | cut -d. -f1) export LIBAVCODEC_MAJOR="${LIBAVCODEC_MAJOR:-0}" OUTFILE=$(mktemp /tmp/test_output_XXXXXX.txt) START_TIME=$SECONDS TEST_FILTER="${1:-}" shift $(( $# > 0 ? 1 : 0 )) SWIFT_TEST_ARGS=() if [ -n "$TEST_FILTER" ]; then SWIFT_TEST_ARGS+=(--filter "$TEST_FILTER") fi if [ $# -gt 0 ]; then SWIFT_TEST_ARGS+=("$@") fi swift test "${SWIFT_TEST_ARGS[@]}" >"$OUTFILE" 2>&1 STATUS=$? ELAPSED=$((SECONDS - START_TIME)) if [ -n "$TEST_FILTER" ]; then echo "Filter: $TEST_FILTER" else echo "Filter: all tests" fi SUMMARY_LINE=$( grep -E "Executed [0-9]+ test(s)?, with [0-9]+ failures" "$OUTFILE" | tail -1 ) SUITE_RESULT_LINE=$( grep -E "Test Suite '([^']+|Selected tests|All tests)' (passed|failed)" "$OUTFILE" | tail -1 ) if [ -n "$SUMMARY_LINE" ]; then TOTAL_TESTS=$(printf '%s\n' "$SUMMARY_LINE" | awk '{print $2}') TOTAL_FAILURES=$(printf '%s\n' "$SUMMARY_LINE" | awk '{print $5}') echo "Total: $TOTAL_TESTS Failures: $TOTAL_FAILURES" else echo "Total: unknown Failures: unknown" fi if [ -n "$SUITE_RESULT_LINE" ]; then echo "Result: $SUITE_RESULT_LINE" fi echo "Elapsed: ${ELAPSED}s" echo "Build / compile errors:" grep -E "^/home/$(whoami)/Projects/CodeMapper/(Sources|Tests)/.*error:" "$OUTFILE" | sed "s|/home/$(whoami)/Projects/CodeMapper/||" | head -10 || echo " none" echo "Failed / crashed:" grep "FAILED\|Fatal error\|Exited with unexpected\| failed (" "$OUTFILE" || echo " none" echo "Full output: $OUTFILE" exit $STATUS