summaryrefslogtreecommitdiffstats
path: root/src/harmattaninstalls/tests/install_tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/harmattaninstalls/tests/install_tests')
-rwxr-xr-xsrc/harmattaninstalls/tests/install_tests201
1 files changed, 201 insertions, 0 deletions
diff --git a/src/harmattaninstalls/tests/install_tests b/src/harmattaninstalls/tests/install_tests
new file mode 100755
index 000000000..05fbc232b
--- /dev/null
+++ b/src/harmattaninstalls/tests/install_tests
@@ -0,0 +1,201 @@
+#!/bin/sh
+
+#############################################################################
+##
+## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is the build configuration utility of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## GNU Lesser General Public License Usage
+## This file may be used under the terms of the GNU Lesser General Public
+## License version 2.1 as published by the Free Software Foundation and
+## appearing in the file LICENSE.LGPL included in the packaging of this
+## file. Please review the following information to ensure the GNU Lesser
+## General Public License version 2.1 requirements will be met:
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights. These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU General
+## Public License version 3.0 as published by the Free Software Foundation
+## and appearing in the file LICENSE.GPL included in the packaging of this
+## file. Please review the following information to ensure the GNU General
+## Public License version 3.0 requirements will be met:
+## http://www.gnu.org/copyleft/gpl.html.
+##
+## Other Usage
+## Alternatively, this file may be used in accordance with the terms and
+## conditions contained in a signed written agreement between you and Nokia.
+##
+##
+##
+##
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+
+set -e
+
+#-------------------------------------------------------------------------------
+#Design assumptions:
+## The name of the test application binary is tst_<subdir_where_test_is_located>
+## The name of the project file passed to the scrpt is <package name>.<ext>
+## The extension string is not relevant. Typical values: .pri, .pro, .conf
+#-------------------------------------------------------------------------------
+
+
+xmlInstallDir="usr/share"
+
+testSuiteHeader="testsuite_header.txt"
+testSuiteFooter="testsuite_footer.txt"
+testSetTemplate="testset.txt"
+
+#-------------------------------------------------------------------------------
+#Parameters: $1 the project file where the tests are defined
+#-------------------------------------------------------------------------------
+install_tests()
+{
+ #derive the package name from the file name
+ extension=".$(echo $1 | awk -F"." '{print $NF}')"
+ packageName=$(basename "$1" "$extension")
+ installFile="$packageDir/${packageName}.install"
+
+ mkdir -p $installDir/$xmlInstallDir/$packageName
+ xmlFile="$installDir/$xmlInstallDir/$packageName/tests.xml"
+
+ begin_test_suite $xmlFile
+
+ # only run applications, not test data or plugins (which will have a '.' in the name)
+ grep -v -F . "$installFile" | while read testApp; do
+ add_test_set "$testApp" "$xmlFile"
+ done
+
+ end_test_suite $xmlFile
+}
+
+#-------------------------------------------------------------------------------
+#Parameters: $1 the xml output file'
+#-------------------------------------------------------------------------------
+begin_test_suite()
+{
+ optstr="/<suite/s;name=\"[^\"]*\";name=\"$packageName\";g"
+ template="$templateDir/$testSuiteHeader"
+ runsed $optstr $template > "$1"
+}
+
+#Parameters: $1 the xml output file
+end_test_suite()
+{
+ cat "$templateDir/$testSuiteFooter" >> "$1"
+}
+
+#-------------------------------------------------------------------------------
+#Parameters: $1 the name of the test application
+#Parameters: $2 the xml output file
+#-------------------------------------------------------------------------------
+add_test_set()
+{
+ templateSetFile="$templateDir/$testSetTemplate"
+ testSuiteName=$(basename $1)
+ insignificantTest="false"
+ # *.insignificant_test files indicate that the test should be marked as insignificant - run but not counted
+ if [ -e "$installDir/$1.insignificant_test" ]; then
+ insignificantTest="true"
+ rm "$installDir/$1.insignificant_test"
+ fi
+ # *.manual_test files indicate that the test is not to be run in CITA
+ if [ ! -e "$installDir/$1.manual_test" ]; then
+ add_set_name "$testSuiteName" "$templateSetFile" |add_description "$testSuiteName" |add_case_name "$testSuiteName" |add_insignificant_test "$insignificantTest" | add_step "$1" >> "$2"
+ else
+ rm "$installDir/$1.manual_test"
+ fi
+}
+
+add_set_name()
+{
+ optstr="/<set/s;name=\"[^\"]*\";name=\"${packageName}_$1\";g"
+ runsed "$optstr" "$2"
+}
+
+add_case_name()
+{
+ optstr="/<case/s;name=\"[^\"]*\";name=\"$1\";g"
+ runsed "$optstr" "$2"
+}
+
+add_description()
+{
+ optstr="s;<description>.*</description>;<description>${packageName}:$1</description>;g"
+ runsed "$optstr" "$2"
+}
+
+add_step()
+{
+ if [ -n "$testCliOptions" ]; then
+ optstr="s;<step>.*</step>;<step>/$1 $testCliOptions</step>;g"
+ else
+ optstr="s;<step>.*</step>;<step>/$1</step>;g"
+ fi
+ runsed "$optstr" "$2"
+}
+
+add_insignificant_test()
+{
+ optstr="s;insignificant=\"[^\"]*\";insignificant=\"$1\";g"
+ runsed "$optstr" "$2"
+}
+
+runsed()
+{
+ sedopt=$(echo $1)
+ cmd='sed -e "$sedopt" $2'
+ eval $cmd
+}
+
+
+#======= main =========
+
+programName="$0"
+usage="Usage: `basename $programName` -t <template_dir> -d <debian_dir> \
+-i <dir_where_tests_will_be_installed> <project_files>"
+
+if [ $# -le 0 ]; then
+ echo "$usage" 1>&2
+ exit 1
+fi
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -t) templateDir=$(cd "$2"; pwd)
+ shift
+ ;;
+ -d) packageDir=$(cd "$2"; pwd)
+ shift
+ ;;
+ -i) installDir=$(cd "$2"; pwd)
+ shift
+ ;;
+ -c) testCliOptions="$2"
+ shift
+ ;;
+ *) projFileList="$projFileList $1";;
+ esac
+ shift
+done
+
+if [ -z "$templateDir" ]|| [ -z "$packageDir" ] || [ -z "$installDir" ]; then
+ echo "$usage" 1>&2
+ exit 1
+fi
+
+for projFile in $projFileList; do
+ install_tests $projFile
+done