#!/bin/sh

#
# Harness script for Mosh tests, server side.  Runs test script and
# then captures screen with `tmux capture-pane`.  Captures exitstatus
# of both and returns appropriate errors.
#
export MOSH_SERVER_PID=$PPID

if [ $# -lt 2 ]; then
    printf "not enough args\n" >&2
    exit 99
fi
testname=$1
shift
rm -f $testname.capture $testname.exitstatus
trap ":" TERM HUP QUIT # If the session closes on us, let the test we're running drive.
trap 'rv=$?; echo $rv > $testname.exitstatus; exit $rv' EXIT
# check for tmux
if [ -z "$TMUX_PANE" ]; then
    printf "not running under tmux\n" >&2
    exit 99
fi
# run harnessed command
eval "$@"
testret=$?
# Wait a bit for tmux screen to become up to date.
sleep 1
# capture screen
if ! tmux capture-pane -et $TMUX_PANE; then
    printf "tmux capture-pane failed, erroring test\n" >&2
    exit 99
fi
if ! tmux save-buffer $testname.capture; then
    printf "tmux save-buffer failed, erroring test\n" >&2
    exit 99
fi
# return useful exitstatus from harnessed command
if [ $testret -ne 0 ]; then
    exit 1
fi
exit 0
