#!/bin/bash

TEST_FILE=${1##*/}
TEST_NAME=${TEST_FILE%.*}

if [ -z "$TEST_NAME" ]; then
	echo "usage: $(basename $0) <test name>"
	exit 1;
fi

WESTON=$abs_builddir/weston
LOGDIR=$abs_builddir/logs

mkdir -p "$LOGDIR" || exit

SERVERLOG="$LOGDIR/${TEST_NAME}-serverlog.txt"
OUTLOG="$LOGDIR/${TEST_NAME}-log.txt"

rm -f "$SERVERLOG" || exit

BACKEND=${BACKEND:-headless-backend.so}

MODDIR=$abs_builddir/.libs

SHELL_PLUGIN=$MODDIR/desktop-shell.so
TEST_PLUGIN=$MODDIR/weston-test.so

WESTON_MODULE_MAP=
for mod in cms-colord cms-static desktop-shell drm-backend fbdev-backend \
	   fullscreen-shell gl-renderer headless-backend hmi-controller \
	   ivi-shell rdp-compositor screen-share wayland-backend \
	   weston-test-desktop-shell x11-backend xwayland; do
	WESTON_MODULE_MAP="${WESTON_MODULE_MAP}${mod}.so=${abs_builddir}/.libs/${mod}.so;"
done

for exe in weston-desktop-shell weston-keyboard weston-screenshooter \
	   weston-simple-im ivi-layout-test-client.ivi; do \
	WESTON_MODULE_MAP="${WESTON_MODULE_MAP}${exe}=${abs_builddir}/${exe};"
done

CONFIG_FILE="${TEST_NAME}.ini"

if [ -e "${abs_builddir}/${CONFIG_FILE}" ]; then
       CONFIG="--config=${abs_builddir}/${CONFIG_FILE}"
elif [ -e "${abs_top_srcdir}/tests/${CONFIG_FILE}" ]; then
       CONFIG="--config=${abs_top_srcdir}/tests/${CONFIG_FILE}"
else
       CONFIG="--no-config"
fi

case $TEST_FILE in
	ivi-*.la|ivi-*.so)
		SHELL_PLUGIN=$MODDIR/ivi-shell.so

		set -x
		WESTON_MODULE_MAP="${WESTON_MODULE_MAP}" \
		WESTON_DATA_DIR=$abs_top_srcdir/data \
		WESTON_TEST_REFERENCE_PATH=$abs_top_srcdir/tests/reference \
		$WESTON --backend=$MODDIR/$BACKEND \
			--no-config \
			--shell=$SHELL_PLUGIN \
			--socket=test-${TEST_NAME} \
			--modules=$TEST_PLUGIN,$MODDIR/${TEST_FILE/.la/.so}\
			--log="$SERVERLOG" \
			&> "$OUTLOG"
		;;
	*.la|*.so)
		set -x
		WESTON_MODULE_MAP="${WESTON_MODULE_MAP}" \
		WESTON_DATA_DIR=$abs_top_srcdir/data \
		WESTON_TEST_REFERENCE_PATH=$abs_top_srcdir/tests/reference \
		$WESTON --backend=$MODDIR/$BACKEND \
			${CONFIG} \
			--shell=$SHELL_PLUGIN \
			--socket=test-${TEST_NAME} \
			--xwayland \
			--modules=$MODDIR/${TEST_FILE/.la/.so} \
			--log="$SERVERLOG" \
			&> "$OUTLOG"
		;;
	ivi-*.weston)
		SHELL_PLUGIN=$MODDIR/ivi-shell.so

		set -x
		WESTON_MODULE_MAP="${WESTON_MODULE_MAP}" \
		WESTON_DATA_DIR=$abs_top_srcdir/data \
		WESTON_TEST_REFERENCE_PATH=$abs_top_srcdir/tests/reference \
		WESTON_TEST_CLIENT_PATH=$abs_builddir/$TEST_FILE \
		$WESTON --backend=$MODDIR/$BACKEND \
			--no-config \
			--shell=$SHELL_PLUGIN \
			--socket=test-${TEST_NAME} \
			--modules=$TEST_PLUGIN \
			--log="$SERVERLOG" \
			$($abs_builddir/$TESTNAME --params) \
			&> "$OUTLOG"
		;;
	*)
		set -x
		WESTON_MODULE_MAP="${WESTON_MODULE_MAP}" \
		WESTON_DATA_DIR=$abs_top_srcdir/data \
		WESTON_TEST_REFERENCE_PATH=$abs_top_srcdir/tests/reference \
		WESTON_TEST_CLIENT_PATH=$abs_builddir/$TEST_FILE \
		$WESTON --backend=$MODDIR/$BACKEND \
			${CONFIG} \
			--shell=$SHELL_PLUGIN \
			--socket=test-${TEST_NAME} \
			--xwayland \
			--modules=$TEST_PLUGIN \
			--log="$SERVERLOG" \
			$($abs_builddir/$TEST_FILE --params) \
			&> "$OUTLOG"
esac
