#!/bin/sh

set -eu

exact_test=''
is_list=0
include_ignored=0
for argument in "$@"; do
    case "$argument" in
        *::*) exact_test=$argument ;;
        --list) is_list=1 ;;
        --include-ignored) include_ignored=1 ;;
    esac
done

if [ -z "$exact_test" ]; then
    printf 'fake cargo did not receive a fully qualified test name\n' >&2
    exit 90
fi

if [ "$is_list" -eq 1 ]; then
    case "${FAKE_CARGO_MODE:?}" in
        list_failure) exit 41 ;;
        zero) printf '0 tests, 0 benchmarks\n' ;;
        duplicate)
            printf '%s: test\n' "$exact_test"
            printf '%s: test\n' "$exact_test"
            ;;
        one|ignored|test_failure) printf '%s: test\n' "$exact_test" ;;
        *) exit 91 ;;
    esac
    exit 0
fi

printf 'executed\n' >> "${FAKE_CARGO_LOG:?}"
if [ "$FAKE_CARGO_MODE" = ignored ] && [ "$include_ignored" -ne 1 ]; then
    exit 43
fi
if [ "$FAKE_CARGO_MODE" = test_failure ]; then
    exit 42
fi
