xref: /aoo42x/test/build.xml (revision e6e6073d)
1<?xml version="1.0"?>
2<!--***********************************************************
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements.  See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership.  The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License.  You may obtain a copy of the License at
11 *
12 *   http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied.  See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 *
21 ***********************************************************-->
22
23
24
25<project basedir="." default="test">
26    <property environment="env" />
27    <property file="build.properties" />
28    <property name="env.DISPLAY" value=":0.0"/>
29	<property name="env.INPATH" value="testspace"/>
30	<property name="env.TESTSPACE" value="${env.INPATH}" />
31	<property name="env.JUNIT_HOME" value="external/junit" />
32	<property name="junit.home" value="${env.JUNIT_HOME}" />
33	<property name="testspace" value="${env.TESTSPACE}" />
34    <property name="classes" value="${testspace}/class" />
35	<property name="dist" value="." />
36	<property name="test.classes" value="testcase/gui/bvt/*.class" />
37	<property name="test.output" value="${testspace}/output" />
38	<property name="test.result" value="${test.output}/result" />
39	<property name="test.report" value="${test.output}/report" />
40	<property name="junit.style.dir" value="reportstyle" />
41
42	<path id="junit.classpath">
43		<fileset dir="${junit.home}" erroronmissingdir="false">
44			<include name="*.jar" />
45		</fileset>
46	</path>
47
48	<target name="testcommon.init">
49		<mkdir dir="${classes}" />
50		<copy includeemptydirs="false" todir="${classes}">
51			<fileset dir="testcommon/source">
52				<exclude name="**/*.java" />
53			</fileset>
54		</copy>
55	</target>
56
57	<target name="testcommon.compile" depends="testcommon.init, prepare.junit">
58		<javac destdir="${classes}" debug="on" source="1.6" includeantruntime="false">
59			<src path="testcommon/source"/>
60			<classpath>
61				<path refid="junit.classpath"/>
62			</classpath>
63		</javac>
64	</target>
65
66	<target name="testgui.init">
67		<mkdir dir="${classes}" />
68		<copy includeemptydirs="false" todir="${classes}">
69			<fileset dir="testgui/source">
70				<exclude name="**/*.java" />
71			</fileset>
72		</copy>
73		<copy includeemptydirs="false" todir="${classes}">
74			<fileset dir="testgui/data">
75				<exclude name="**/*.java" />
76			</fileset>
77		</copy>
78	</target>
79
80	<target name="testgui.compile" depends="testgui.init, prepare.junit">
81		<javac destdir="${classes}" debug="on" source="1.6" includeantruntime="false">
82			<src path="testgui/source"/>
83			<src path="testgui/data"/>
84			<classpath>
85				<pathelement location="${classes}" />
86				<path refid="junit.classpath"/>
87			</classpath>
88		</javac>
89	</target>
90
91	<target name="testuno.init">
92		<mkdir dir="${classes}" />
93		<copy includeemptydirs="false" todir="${classes}">
94			<fileset dir="testuno/source">
95				<exclude name="**/*.java" />
96			</fileset>
97		</copy>
98	</target>
99
100	<target name="testuno.compile" depends="testuno.init">
101		<path id="uno.classpath">
102			<fileset dir="${openoffice.home}" erroronmissingdir="false">
103				<include name="**/juh.jar" />
104				<include name="**/unoil.jar" />
105				<include name="**/ridl.jar" />
106				<include name="**/jurt.jar" />
107			</fileset>
108		</path>
109		<javac destdir="${classes}" debug="on" source="1.6" includeantruntime="false">
110			<src path="testuno/source"/>
111			<classpath>
112				<pathelement location="${classes}" />
113				<path refid="junit.classpath"/>
114				<path refid="uno.classpath"/>
115			</classpath>
116		</javac>
117	</target>
118
119	<target name="clean" description="Clean all output">
120		<delete dir="${testspace}" />
121	</target>
122
123	<target name="check.junit">
124		<available file="junit.jar" property="junit.jar.exists">
125			<filepath refid="junit.classpath" />
126		</available>
127	</target>
128
129	<target name="prepare.junit" depends="check.junit" unless="junit.jar.exists">
130		<property name="junit.jar.repos" value="http://repo1.maven.org/maven2/junit/junit/4.10/junit-4.10.jar" />
131		<mkdir dir="${junit.home}" />
132		<get src="${junit.jar.repos}" dest="${junit.home}/junit.jar" skipexisting="true" />
133	</target>
134
135	<target name="compile" depends="testcommon.init, testcommon.compile, testgui.init, testgui.compile, testuno.init, testuno.compile" description="Compile source code">
136	</target>
137
138	<target name="dist">
139		<tstamp />
140		<property name="dist.archive" value="aoo_test_${DSTAMP}.zip" />
141        <zip destfile="${dist}/${dist.archive}" basedir="." update="true" includes="testcommon/**,testgui/**,testuno/**,build.xml,build.example.properties,external/**,reportstyle/**" excludes="**/bin/**">
142        </zip>
143	</target>
144
145	<target name="check.build" description="Check the build context">
146		<condition property="openoffice.archive.dir" value="${env.SRC_ROOT}/instsetoo_native/${env.INPATH}/OpenOffice/archive/install/en-US">
147			<isset property="env.SRC_ROOT" />
148		</condition>
149		<condition property="openoffice.build" value="localbuild">
150			<isset property="openoffice.archive.dir" />
151		</condition>
152		<condition property="find.build.skip">
153			<or>
154				<isset property="openoffice.build" />
155				<isset property="openoffice.archive.url" />
156				<isset property="openoffice.archive.dir" />
157				<isset property="openoffice.home" />
158			</or>
159		</condition>
160		<condition property="download.build.skip">
161			<or>
162				<isset property="openoffice.archive.dir" />
163				<isset property="openoffice.home" />
164			</or>
165		</condition>
166		<condition property="install.build.skip">
167			<or>
168				<isset property="openoffice.home" />
169                       	 	<not>
170					<isset property="openoffice.archive.dir" />
171				</not>
172			</or>
173		</condition>
174	</target>
175
176	<target name="find.build" unless="find.build.skip" description="Find the newest build on the remote server">
177		<loadresource property="openoffice.build">
178			<url url="${openoffice.build.url}" />
179			<filterchain>
180				<deletecharacters chars=" \t\r\n" />
181			</filterchain>
182		</loadresource>
183		<echo>Latest build: ${openoffice.build}</echo>
184	</target>
185
186	<target name="download.build" unless="download.build.skip" description="Download the specified build from the remote server">
187        <echo message="openoffice.archive.url.resolved=${openoffice.archive.url}" file="${testspace}/.temp.properties" />
188        <property file="${testspace}/.temp.properties"/>
189        <echo>Archive address: ${openoffice.archive.url.resolved}</echo>
190		<property name="openoffice.archive.dir" value="${testspace}/download/${openoffice.build}" />
191		<mkdir dir="${openoffice.archive.dir}" />
192		<get src="${openoffice.archive.url.resolved}" dest="${openoffice.archive.dir}" verbose="false" usetimestamp="true" skipexisting="true" />
193	</target>
194
195	<target name="install.build" unless="install.build.skip" description="Install the build to the local">
196		<property name="openoffice.installation.dir" value="${testspace}/install/${openoffice.build}" />
197        <property name="openoffice.installation.dest" value="${testspace}/install/dest" />
198        <delete dir="${openoffice.installation.dest}"/>
199		<mkdir dir="${openoffice.installation.dest}" />
200		<unzip dest="${openoffice.installation.dest}">
201			<fileset dir="${openoffice.archive.dir}">
202				<include name="**/Apache_OpenOffice*.zip" />
203			</fileset>
204		</unzip>
205		<pathconvert property="gz.files" pathsep=" " setonempty="false">
206			<path>
207				<fileset dir="${openoffice.archive.dir}" includes="Apache_OpenOffice*.gz" />
208			</path>
209		</pathconvert>
210		<exec dir="${openoffice.installation.dest}" executable="tar" failifexecutionfails="false">
211			<arg line="-zxf ${gz.files}" />
212		</exec>
213
214        <pathconvert property="openoffice.12.dir" pathsep=" " setonempty="false">
215			<path>
216				<dirset dir="${openoffice.installation.dest}">
217                    <include name="*"/>
218                </dirset>
219			</path>
220		</pathconvert>
221
222        <move file="${openoffice.12.dir}" tofile="${openoffice.installation.dir}"/>
223        <delete dir="${openoffice.installation.dest}"/>
224
225		<pathconvert property="openoffice.bin" pathsep=" " setonempty="false">
226			<path>
227				<fileset dir="${openoffice.installation.dir}" includes="**/*/soffice.bin" followsymlinks="false" />
228			</path>
229		</pathconvert>
230		<dirname property="openoffice.bin.parent" file="${openoffice.bin}" />
231		<property name="openoffice.home" location="${openoffice.bin.parent}/../" />
232		<fail unless="openoffice.home" />
233		<echo>Openoffice is installed to ${openoffice.home}</echo>
234	</target>
235
236	<target name="run.test" depends="compile" description="Run junit">
237		<tstamp>
238			<format property="output.stamp" pattern="yyMMdd.hhmm" />
239		</tstamp>
240
241		<move file="${test.output}" tofile="${test.output}.${output.stamp}" failonerror="false" />
242		<mkdir dir="${test.result}" />
243		<mkdir dir="${test.report}" />
244		<mkdir dir="${test.output}/temp" />
245
246		<junit fork="yes" forkmode="once" tempdir="${test.output}/temp" printsummary="yes" showoutput="false" errorProperty="test.failed" failureProperty="test.failed" dir=".">
247			<env key="DISPLAY" value="${env.DISPLAY}"/>
248            <sysproperty key="openoffice.home" value="${openoffice.home}" />
249			<sysproperty key="testspace" value="${testspace}" />
250			<syspropertyset>
251				<propertyref builtin="commandline" />
252			</syspropertyset>
253			<batchtest todir="${test.result}">
254				<fileset dir="${classes}" includes="${test.classes}" />
255			</batchtest>
256
257			<formatter type="xml" />
258			<classpath>
259				<pathelement location="${classes}" />
260				<path refid="junit.classpath"/>
261				<path refid="uno.classpath"/>
262			</classpath>
263		</junit>
264        <property file="${openoffice.home}/program/versionrc" prefix="openoffice"/>
265        <property file="${openoffice.home}/program/version.ini" prefix="openoffice"/>
266		<junitreport todir="${test.report}">
267			<fileset dir="${test.result}">
268				<include name="TEST-*.xml" />
269			</fileset>
270			<report format="frames" styledir="${junit.style.dir}" todir="${test.report}">
271				<param name="TITLE" expression="Test Build: AOO${openoffice.buildid}.r${openoffice.Revision}, OS: ${os.name}-${os.version}-${os.arch}"/>
272			</report>
273		</junitreport>
274		<property name="test.report.index" location="${test.report}/index.html" />
275		<echo>Open ${test.report.index} in browser to view the test report.</echo>
276	</target>
277
278	<target name="test" depends="check.build,find.build,download.build,install.build,run.test" description="Run testing on the specified build. The build is automatically downloaded and installed according to the context.">
279		<fail message="Test Failed" if="test.failed" />
280	</target>
281
282	<target name="report.test" unless="report.test.skip" description="Upload the testing result to report repository.">
283		<property name="report.to" value="r${openoffice.Revision}/${os.name}-${os.version}-${os.arch}" />
284		<echo>Uploading report to ${report.repos}/${report.to}</echo>
285		<property name="report.to.temp" location="${testspace}/.temp.ouput"/>
286        <delete dir="${report.to.temp}" deleteonexit="true"/>
287		<copy todir="${report.to.temp}/${report.to}">
288			<fileset dir="${test.output}" />
289		</copy>
290		<scp todir="${report.repos}" trust="true">
291			<fileset dir="${report.to.temp}"/>
292		</scp>
293        <delete dir="${report.to.temp}" deleteonexit="true"/>
294	</target>
295
296	<target name="detect.build" depends="find.build" description="Check if new build is available. If no new build is available, the target will be failed.">
297		<loadfile property="local.build" srcFile="${testspace}/build.txt" quiet="true" failonerror="false" />
298		<fail message="The build has been tested! We don't want to test it twice.">
299			<condition>
300				<equals arg1="${openoffice.build}" arg2="${local.build}" trim="true" />
301			</condition>
302		</fail>
303		<mkdir dir="${testspace}" />
304		<echo file="${testspace}/build.txt">${openoffice.build}</echo>
305	</target>
306
307	<target name="routine.test" depends="detect.build,download.build,install.build,run.test,report.test" description="Periodically run testing.">
308		<fail message="Test Failed" if="test.failed" />
309	</target>
310</project>
311