# These functions are expected to contain code that is identical for all
# tests. All of them must exist.
#
# Any variables defined here will be available to the test functions.

# Additional setup tasks to be performed before running the actual
# tests.
global_presetup_per_test()
{
    docroot=$(mktemp -d)

    servername=localhost
    serverport=70
    remote_host=
    remote_addr=
}

# Cleanup tasks after one test has been run.
global_reset_per_test()
{
    rm -Rf -- "$docroot"
}

# Invoke your program here. You must create the following files (even if
# they are empty):
#
#   $work/stdout.actual
#   $work/stderr.actual
#   $work/exitcode.actual
#
# You can use variables defined in test_setup() or
# test_set_assumptions() (for example, test_setup() can define command
# line arguments in a Bash array, which you can then use here).
global_run_program()
{
    [[ -n "$remote_host" ]] && export REMOTE_HOST="$remote_host"
    [[ -n "$remote_addr" ]] && export REMOTE_ADDR="$remote_addr"

    printf '%s' "$request" | ../sgopherd \
        -l \
        -n "$servername" \
        -p "$serverport" \
        -r "$docroot" \
        >"$work"/stdout.actual 2>"$work"/stderr.actual
    echo "$?" >"$work"/exitcode.actual
}

# Additional code you want to run if a test fails.
global_run_on_fail()
{
    echo 'docroot:'
    ls -Ral "$docroot"
}
