#!/bin/sh

if [ -n "$1" ]; then
	if [ "$1" != "-m" ]; then
		echo "arg '$1' is unknown, exiting"
		exit 1
	elif [ -z "$2" ] || [ "`echo "$2" | tr '[:lower:]' '[:upper:]'`" != "QT4" ]; then
		echo "-m requires a valid module name (current supported module is just qt4)";
		exit 1
	fi
	qt4_enabled="adsf"
else
	unset qt4_enabled
fi

if [ ! -x /opt/lsb-tet3-lite/bin/tcc ]
then
	printf "tcc not found, aborting\n"
	exit 1
fi

TET_ROOT=`pwd`
TET_PATH=/opt/lsb-tet3-lite
MANPATH=$MANPATH:$TET_PATH/man
PATH=$TET_PATH/bin:$PATH
PYTHONPATH=$TET_PATH/lib/python
export PATH MANPATH TET_ROOT PYTHONPATH

function config_param()
{

DEFAULT=`grep "^$1=" gtkvts/tetexec.cfg | cut -d= -f2`
printf "$2 ("

if [ -n "$DEFAULT" ]; 
then
  printf "$DEFAULT"
fi

printf ")? "
read cmd

if [ -z "$cmd" ]; then
  cmd=$DEFAULT
fi

# Write to temporary file
echo "$1=$cmd" >> /tmp/newparam.$$

}

function configure()
{
    config_param VSX_OPER "Name of person running tests"
    config_param VSX_ORG  "Organisation"
    config_param VSX_SYS "Test System"
    config_param XT_DISPLAYHOST "Hostname of client for X tests"
    config_param XT_DISPLAY "DISPLAY of the Xvfb (ie., :1)"
    config_param XT_FONTPATH "X11 font path"

    mv $TET_ROOT/gtkvts/tetexec.cfg $TET_ROOT/gtkvts/tetexec.cfg.old
    mv $TET_ROOT/fontconfig/tetexec.cfg $TET_ROOT/fontconfig/tetexec.cfg.old
    cat $TET_ROOT/gtkvts/tetexec.cfg.old | $TET_ROOT/bin/editcfg.sh /tmp/newparam.$$ > $TET_ROOT/gtkvts/tetexec.cfg
    cat $TET_ROOT/fontconfig/tetexec.cfg.old | $TET_ROOT/bin/editcfg.sh /tmp/newparam.$$ > $TET_ROOT/fontconfig/tetexec.cfg
    rm -f /tmp/newparam.$$
}

# We need to run the tests using the X Virtual Frame Buffer xvfb(1),
# because using graphics cards gives varying results.
#

# Check whether Xvfb can be found in current PATH settings
which Xvfb > /dev/null 2>&1
if [ $? -ne 0 ]; then
        echo "Cannot find Xvfb executable binary in your current PATH setting:"
        echo "$PATH"
        echo "Please make sure you have installed the necessary Xvfb package"
        echo "(virtual frame buffer X server, whose name is something like"
        echo "xvfb, XFree86-Xvfb or xorg-x11-Xvfb) and add the path which"
        echo "includes the Xvfb executable binary to your PATH setting"
        exit 1
fi

# Configure the test suites
if [ ! -f .configured ]; then
    configure
    touch .configured
fi

XT_DISPLAY=`grep '^XT_DISPLAY=' gtkvts/tetexec.cfg | cut -f 2 -d=`
TEST_DISPLAY=`echo $XT_DISPLAY | grep -Eo ':([[:digit:]]+\.?)+'`
XT_FONTPATH=`grep '^XT_FONTPATH=' gtkvts/tetexec.cfg | cut -f 2 -d=`

if [ -z "$TEST_DISPLAY" ]; then
	echo "TEST_DISPLAY is unset, XT_DISPLAY is $XT_DISPLAY"
	echo "won't be able to spawn Xvfb properly, exiting"
	exit 1
fi

Xvfb -render -screen 0 1024x768x16 $TEST_DISPLAY -ac +bs -kb -fp $XT_FONTPATH &
echo "Starting X Virtual Frame Buffer"; sleep 20
export DISPLAY=$TEST_DISPLAY
export G_SLICE=always-malloc

# the gtkvts part
tcc -p -e -v DISPLAY=$TEST_DISPLAY gtkvts

# qt3 part
tcc -p -e qt3

# qt4 part
if [ -n "$qt4_enabled" ]; then
	cd Qt
	./lsb-rt-qt
	cd ../
fi

# kill xvfb
kill %1

# run fontconfig
tcc -p -e fontconfig

# the xml part
( cd xml ; ./lsb-rt-libxml2; )

# png
( cd libpng; ./lsb-rt-libpng; )


echo
echo "LSB desktop test is done now. The test journals can be found at"
echo "    /opt/lsb/test/desktop/gtkvts/results/{max-num}e/journal"
echo "    /opt/lsb/test/desktop/qt3/results/{max-num}e/journal"
echo "    /opt/lsb/test/desktop/fontconfig/results/{max-num}e/journal"
echo "    /opt/lsb/test/desktop/xml/journal.libxml2"
echo "    /opt/lsb/test/desktop/libpng/journal.pngtest"
[ -n "$qt4_enabled" ] && echo "    /opt/lsb/test/desktop/Qt/journal.qt"
echo

	
