Update copyright headers
[qt:qt.git] / config.profiles / harmattan / tests / create_tests_xml
1 #!/bin/sh
2
3 #############################################################################
4 ##
5 ## Copyright (C) 2015 The Qt Company Ltd.
6 ## Contact: http://www.qt.io/licensing/
7 ##
8 ## This file is the build configuration utility of the Qt Toolkit.
9 ##
10 ## $QT_BEGIN_LICENSE:LGPL$
11 ## Commercial License Usage
12 ## Licensees holding valid commercial Qt licenses may use this file in
13 ## accordance with the commercial license agreement provided with the
14 ## Software or, alternatively, in accordance with the terms contained in
15 ## a written agreement between you and The Qt Company. For licensing terms
16 ## and conditions see http://www.qt.io/terms-conditions. For further
17 ## information use the contact form at http://www.qt.io/contact-us.
18 ##
19 ## GNU Lesser General Public License Usage
20 ## Alternatively, this file may be used under the terms of the GNU Lesser
21 ## General Public License version 2.1 as published by the Free Software
22 ## Foundation and appearing in the file LICENSE.LGPL included in the
23 ## packaging of this file.  Please review the following information to
24 ## ensure the GNU Lesser General Public License version 2.1 requirements
25 ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
26 ##
27 ## As a special exception, The Qt Company gives you certain additional
28 ## rights. These rights are described in The Qt Company LGPL Exception
29 ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
30 ##
31 ## GNU General Public License Usage
32 ## Alternatively, this file may be used under the terms of the GNU
33 ## General Public License version 3.0 as published by the Free Software
34 ## Foundation and appearing in the file LICENSE.GPL included in the
35 ## packaging of this file.  Please review the following information to
36 ## ensure the GNU General Public License version 3.0 requirements will be
37 ## met: http://www.gnu.org/copyleft/gpl.html.
38 ##
39 ##
40 ## $QT_END_LICENSE$
41 ##
42 #############################################################################
43
44
45 set -e
46 #set -u
47
48 xmlInstallDir="usr/share"
49
50 testSuiteHeader="testsuite_header.txt"
51 testSuiteFooter="testsuite_footer.txt"
52 testSetTemplate="testset.txt"
53
54
55 #-------------------------------------------------------------------------------
56 #Parameters: $1 the project file where the tests are defined
57 #-------------------------------------------------------------------------------
58 create_test_xml()
59 {
60
61     mkdir -p "$installDir/$xmlInstallDir/$packageName"
62     xmlFile="$installDir/$xmlInstallDir/$packageName/tests.xml"
63
64
65     begin_test_suite $xmlFile
66
67     for testApp in $(< "$installFile"); do
68         if file -i "$installDir/$testApp"|grep -e "application/x-executable" ; then
69             add_test_set "$testApp" "$xmlFile"
70         fi
71     done
72
73     end_test_suite $xmlFile
74
75     echo "$xmlInstallDir/$packageName/tests.xml" >> "$installFile"
76
77 }
78
79 #-------------------------------------------------------------------------------
80 #Parameters: $1 the xml output file'
81 #-------------------------------------------------------------------------------
82 begin_test_suite()
83 {
84     optstr="/<suite/s;name=\"[^\"]*\";name=\"$packageName\";g"
85     template="$templateDir/$testSuiteHeader"
86     runsed $optstr $template > "$1"
87 }
88
89 #Parameters: $1 the xml output file
90 end_test_suite()
91 {
92     cat "$templateDir/$testSuiteFooter" >> "$1"
93 }
94
95 #-------------------------------------------------------------------------------
96 #Parameters: $1 the name of the test application
97 #Parameters: $2 the xml output file
98 #-------------------------------------------------------------------------------
99 add_test_set()
100 {
101     templateSetFile="$templateDir/$testSetTemplate"
102     testSuiteName=$(basename $1)
103     add_set_name "$testSuiteName" "$templateSetFile" |add_description "$testSuiteName" |add_case_name "$testSuiteName" |add_step "$1"  >> "$2"
104 }
105
106 add_set_name()
107 {
108     optstr="/<set/s;name=\"[^\"]*\";name=\"${packageName}_$1\";g"
109     runsed "$optstr" "$2"
110 }
111
112 add_case_name()
113 {
114     optstr="/<case/s;name=\"[^\"]*\";name=\"$1\";g"
115     runsed "$optstr" "$2"
116 }
117
118 add_description()
119 {
120     optstr="s;<description>.*</description>;<description>${packageName}:$1</description>;g"
121     runsed "$optstr" "$2"
122 }
123
124 add_step()
125 {
126     if [ -n "$testCliOptions" ]; then
127         optstr="s;<step>.*</step>;<step>$1 $testCliOptions</step>;g"
128     else
129         optstr="s;<step>.*</step>;<step>$1</step>;g"
130     fi
131     runsed "$optstr" "$2"
132 }
133
134 runsed()
135 {
136     sedopt=$(echo $1)
137     cmd='sed -e "$sedopt" $2'
138     eval $cmd
139 }
140
141
142 #======= main =========
143
144 programName="$0"
145 usage="Usage: `basename $programName` -t <template_dir> -d <debian_dir> \
146 -i <dir_where_tests_will_be_installed> <project_files>"
147
148 if [ $# -le 0 ]; then
149     echo "$usage" 1>&2
150     exit 1
151 fi
152
153 while [ $# -gt 0 ]; do
154     case "$1" in
155         -t) templateDir=$(cd "$2"; pwd)
156             shift
157             ;;
158         -i) installDir=$(cd "$2"; pwd)
159             shift
160             ;;
161         -p) installFile="$2"
162             packageName=$(basename "$installFile" ".install")
163             shift
164             ;;
165         -c) testCliOptions="$2"
166             shift
167             ;;
168         *) projFileList="$projFileList $1";;
169     esac
170     shift
171 done
172
173
174 create_test_xml