From 7de1b3f28edc5e83a82f06da33f9f971767ca93f Mon Sep 17 00:00:00 2001
From: Vincent Petry <pvince81@owncloud.com>
Date: Fri, 25 Oct 2013 11:31:10 +0200
Subject: [PATCH] Added syntax help for autotest.sh

autotest.sh now checks for the validity of the db config name argument.
If the db config name is not known, it show syntax info.

This should save some time to people to understand how to use this
script. Before this fix, an invalid argument would return a big HTML
page in the output.
---
 autotest.sh | 34 ++++++++++++++++++++++++++++++----
 1 file changed, 30 insertions(+), 4 deletions(-)

diff --git a/autotest.sh b/autotest.sh
index 3831e181245..a411780d49c 100755
--- a/autotest.sh
+++ b/autotest.sh
@@ -12,11 +12,37 @@ DATABASEUSER=oc_autotest$EXECUTOR_NUMBER
 ADMINLOGIN=admin$EXECUTOR_NUMBER
 BASEDIR=$PWD
 
+DBCONFIGS="sqlite mysql pgsql oci"
+
+function print_syntax {
+	echo -e "Syntax: ./autotest.sh [dbconfigname] [testfile]\n" >&2
+	echo -e "\t\"dbconfigname\" can be one of: $DBCONFIGS" >&2
+	echo -e "\t\"testfile\" is the name of a test file, for example lib/template.php" >&2
+	echo -e "\nExample: ./autotest.sh sqlite lib/template.php" >&2
+	echo "will run the test suite from \"tests/lib/template.php\"" >&2
+	echo -e "\nIf no arguments are specified, all tests will be run with all database configs" >&2
+}
+
 if ! [ -w config -a -w config/config.php ]; then
 	echo "Please enable write permissions on config and config/config.php" >&2
 	exit 1
 fi
 
+if [ $1 ]; then
+	FOUND=0
+	for DBCONFIG in $DBCONFIGS; do
+		if [ $1 = $DBCONFIG ]; then
+			FOUND=1
+			break
+		fi
+	done
+	if [ $FOUND = 0 ]; then
+		echo -e "Unknown database config name \"$1\"\n" >&2
+		print_syntax
+		exit 2
+	fi
+fi
+
 # Back up existing (dev) config if one exists
 if [ -f config/config.php ]; then
 	mv config/config.php config/config-autotest-backup.php
@@ -160,10 +186,10 @@ EOF
 #
 if [ -z "$1" ]
   then
-	execute_tests 'sqlite'
-	execute_tests 'mysql'
-	execute_tests 'pgsql'
-	execute_tests 'oci'
+	# run all known database configs
+	for DBCONFIG in $DBCONFIGS; do
+		execute_tests $DBCONFIG
+	done
 else
 	execute_tests $1 $2 $3
 fi
-- 
GitLab