#! /bin/sh
-if [ $# -eq 1 ]
+
+if [ $# -ge 1 ]
then
testsuite=$1
+ shift
else
echo "You must give the testsuite to run :"
- echo " - DEBDebian60Tests.php"
- echo " - RPMCentos52Tests.php"
- echo " - TarCentos52Tests.php"
+ echo " - DEBDebian70Tests.php"
+ echo " - RPMCentosTests.php"
+ echo " - TarCentosTests.php"
fi
-if [ "x$testsuite" == "x" ]
+if [ "x$testsuite" = "x" ]
then
echo "Forge test suite not found"
exit 1
fi
+scriptdir=$(dirname $0)
+FORGE_HOME=$(cd $scriptdir/../..; pwd)
+cd $FORGE_HOME
+[ ! -f tests/config/default ] || . tests/config/default
+[ ! -f tests/config/phpunit ] || . tests/config/phpunit
SELENIUM_RC_DIR=/var/log
-WORKSPACE=/root
-[ -d $WORKSPACE/reports ] || mkdir $WORKSPACE/reports
SELENIUM_RC_URL=${HUDSON_URL}job/${JOB_NAME}/ws/reports
SELENIUM_RC_HOST=`hostname -f`
HOST=`hostname -f`
CONFIG_PHP=func/config.php
-export SELENIUM_RC_DIR WORKSPACE SELENIUM_RC_URL SELENIUM_RC_HOST HOST DB_NAME CONFIG_PHP
+export SELENIUM_RC_DIR SELENIUM_RC_URL SELENIUM_RC_HOST HOST DB_NAME DB_USER CONFIG_PHP
cat <<-EOF >tests/func/config.php
<?php
// Database connection parameters.
define('DB_NAME', getenv('DB_NAME'));
-define('DB_USER', 'gforge');
+define('DB_USER', getenv('DB_USER'));
define('DB_PASSWORD', '@@FFDB_PASS@@');
-define('DB_INIT_CMD', "/root/tests/func/db_reload.sh >/var/log/db_reload.log 2>/var/log/db_reload.errlog");
+define('DB_INIT_CMD', "$FORGE_HOME/tests/func/db_reload.sh >>/var/log/db_reload_selenium.log 2>&1");
+
+// Cronjob wrapper script location
+print "Looking for forge_run_job script...\n";
+if (is_executable ("$FORGE_HOME/bin/forge_run_job")) {
+ print "Found in $FORGE_HOME/bin/\n";
+ define('RUN_JOB_PATH', "$FORGE_HOME/bin/");
+} elseif (is_executable ("$FORGE_HOME/src/utils/forge_run_job")) {
+ print "Found in $FORGE_HOME/src/utils/\n";
+ define('RUN_JOB_PATH', "$FORGE_HOME/src/utils/");
+} else {
+ print "Neither $FORGE_HOME/bin/forge_run_job nor $FORGE_HOME/src/utils/forge_run_job seem to be executable, strange.\n";
+ system ("find $FORGE_HOME");
+ exit(1);
+}
// this should be an existing user of the forge together with its password
// (the password should be different from 'myadmin')
-define ('EXISTING_USER', 'admin');
-define ('PASSWD_OF_EXISTING_USER', 'myadmin');
+define ('FORGE_ADMIN_USERNAME', '$FORGE_ADMIN_USERNAME');
+define ('FORGE_ADMIN_PASSWORD', '$FORGE_ADMIN_PASSWORD');
+define ('FORGE_OTHER_PASSWORD', '$FORGE_OTHER_PASSWORD');
// Where CLI is installed
-define ('CLI_CMD', '/opt/gforge/acde/tools/gforge-cli/gforge.php');
+define ('CLI_CMD', '$FORGE_HOME/acde/tools/gforge-cli/gforge.php');
// Where Java CLI is installed
-define ('JAGOSI_CMD', '/opt/gforge/acde/tools/gforge-java-cli/');
+define ('JAGOSI_CMD', '$FORGE_HOME/acde/tools/gforge-java-cli/');
// Enter true when file is configured.
define('CONFIGURED', getenv('CONFIGURED'));
?>
EOF
-echo "This will run phpunit tests"
+echo "Starting Selenium"
killall -9 java
-LANG=C java -jar selenium-server.jar -browserSessionReuse -singleWindow >/dev/null &
+PATH=/usr/lib/iceweasel:$PATH LANG=C java -jar $FORGE_HOME/tests/selenium-server.jar -singleWindow >/dev/null &
+i=0
+timeout=200
+while [ $i -lt $timeout ] && ! netstat -tnl 2>/dev/null | grep -q :4444 ; do
+ sleep 1
+ i=$(($i+1))
+done
+if [ $i = $timeout ] ; then
+ echo "Selenium failed to start within $timeout seconds"
+ exit 1
+fi
+
+echo "Running PHPunit tests"
+retcode=0
cd tests
-phpunit --log-junit $WORKSPACE/reports/phpunit-selenium.xml $testsuite
+phpunit --verbose --log-junit $SELENIUM_RC_DIR/phpunit-selenium.xml $@ $testsuite || retcode=$?
cd ..
-killall -9 java
+# on debian
+killall -9 firefox-bin
+# on centos
+killall -9 firefox
+# kill java stuffs
+killall -QUIT java
+exit $retcode