-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild_macros.xml
215 lines (202 loc) · 7.87 KB
/
build_macros.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<?xml version="1.0" encoding="UTF-8"?>
<project name="adam_macros">
<dirname property="macros.basedir" file="${ant.file.adam_macros}"/>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%% TESTS %%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<path id="testng.classpath">
<resourcelist id="tests.libs">
<file name="${macros.basedir}/testing/testlibs.res"/>
</resourcelist>
</path>
<!-- todo: make it only fail when any task concerning the tests is used, this typedef is
executed directly no matter whether anybody wanted to test s.th.. The fail
is just to have a better error message -->
<available file="${libfolder}/testing/" type="dir" property="noTestLibs" />
<fail unless="noTestLibs" message="The libraries for testing in '${libfolder}/testing/' are missing. Please execute make pull_dependencies first." />
<typedef name="testng" classname="org.testng.TestNGAntTask" classpathref="testng.classpath" />
<macrodef name="invoke-testng">
<attribute name="outputdir"/>
<attribute name="testclassesclasspath"/>
<attribute name="testclassesfolder"/>
<attribute name="examplesfolder"/>
<attribute name="testoutputfolder"/>
<attribute name="libfolder"/>
<sequential>
<testng outputdir="@{outputdir}" verbose="2" haltonfailure="true">
<!-- enable assertions -->
<jvmarg value="-ea" />
<jvmarg value="-Dexamplesfolder=@{examplesfolder}" />
<jvmarg value="-Dtestoutputfolder=@{testoutputfolder}" />
<jvmarg value="-Dlibfolder=@{libfolder}" />
<jvmarg value="-DPROPERTY_FILE=${adampropertiesfile}" />
<classpath refid="@{testclassesclasspath}" />
<xmlfileset file="testng.xml"/>
<!-- only for all classes this would be enough -->
<!-- <classfileset dir="@{testclassesfolder}">
<include name="**/*Test*.class"/>
</classfileset>-->
</testng>
</sequential>
</macrodef>
<macrodef name="invoke-test-class">
<attribute name="reportsfolder"/>
<attribute name="testclassesclasspath"/>
<attribute name="testclassesfolder"/>
<attribute name="examplesfolder"/>
<attribute name="testoutputfolder"/>
<attribute name="libfolder"/>
<sequential>
<condition property="propsSpecified">
<and>
<isset property="class.name"/>
</and>
</condition>
<tstamp/>
<fail unless="propsSpecified" message="class.name property not specified; try calling ant with -Dclass.name=uniolunisaar.adam...."/>
<copy file="${macros.basedir}/testing/testng.single-class.xml" tofile="testng.xml" overwrite="true">
<filterset>
<filter token="CLASS" value="${class.name}"/>
</filterset>
</copy>
<invoke-testng outputdir="@{reportsfolder}/testng-single-class-${class.name}"
testclassesclasspath="@{testclassesclasspath}"
testclassesfolder="@{testclassesfolder}"
examplesfolder="@{examplesfolder}"
testoutputfolder="@{testoutputfolder}"
libfolder="@{libfolder}"/>
</sequential>
</macrodef>
<macrodef name="invoke-test-method">
<attribute name="reportsfolder"/>
<attribute name="testclassesclasspath"/>
<attribute name="testclassesfolder"/>
<attribute name="examplesfolder"/>
<attribute name="testoutputfolder"/>
<attribute name="libfolder"/>
<sequential>
<condition property="propsSpecified">
<and>
<isset property="class.name"/>
<isset property="method.name"/>
</and>
</condition>
<tstamp/>
<fail unless="propsSpecified" message="class.name and/or test.name property not specified; try calling ant with -Dclass.name=uniolunisaar.adam... -Dmethod.name=myTestMethod"/>
<copy file="${macros.basedir}/testing/testng.single-method.xml" tofile="testng.xml" overwrite="true">
<filterset>
<filter token="CLASS" value="${class.name}"/>
<filter token="TEST" value="${method.name}"/>
</filterset>
</copy>
<invoke-testng outputdir="@{reportsfolder}/testng-single-method-${class.name}-${method.name}"
testclassesclasspath="@{testclassesclasspath}"
testclassesfolder="@{testclassesfolder}"
examplesfolder="@{examplesfolder}"
testoutputfolder="@{testoutputfolder}"
libfolder="@{libfolder}"/>
</sequential>
</macrodef>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%% CHECK-DEPENDENCIES %%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<macrodef name="invoke-check-dependencies">
<attribute name="resourcen"/>
<sequential>
<restrict id="missing.libs.@{resourcen}">
<resourcelist refid="@{resourcen}"/>
<not>
<exists/>
</not>
</restrict>
<property name="missing.libs.@{resourcen}" refid="missing.libs.@{resourcen}" />
<fail message="Some dependencies are missing: ${missing.libs.@{resourcen}}">
<condition>
<length string="${missing.libs.@{resourcen}}" when="greater" length="0" />
</condition>
</fail>
</sequential>
</macrodef>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%% JAVAC %%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<macrodef name="invoke-javac">
<attribute name="dependencies"/>
<attribute name="classpath"/>
<attribute name="src"/>
<attribute name="output"/>
<sequential>
<invoke-check-dependencies resourcen="@{dependencies}"/>
<mkdir dir="@{output}"/>
<javac includes="**" encoding="utf-8" destdir="@{output}" source="1.10" target="1.10" debug="true" debuglevel="lines,vars,source" includeantruntime="false">
<src path="@{src}"/>
<classpath refid="@{classpath}"/>
<compilerarg value="-Xlint:all"/>
</javac>
</sequential>
</macrodef>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%% JAVADOC %%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<macrodef name="invoke-javadoc">
<attribute name="sourcefolder"/>
<attribute name="testfolder"/>
<attribute name="classpath"/>
<attribute name="output"/>
<sequential>
<mkdir dir="@{output}"/>
<javadoc encoding="utf-8" destdir="@{output}" author="true" version="true" use="true" charset="UTF-8" docencoding="UTF-8" access="private">
<fileset dir="@{sourcefolder}" includes="**/*.java"/>
<fileset dir="@{testfolder}" includes="**/*.java"/>
<classpath refid="@{classpath}" />
</javadoc>
</sequential>
</macrodef>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%% JAR %%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<macrodef name="invoke-jar-standalone">
<attribute name="filesuffix"/>
<attribute name="resources"/>
<attribute name="jarresources"/>
<attribute name="outputfolder"/>
<sequential>
<jar destfile="@{outputfolder}/adam_@{filesuffix}-standalone.jar">
<resources refid="@{resources}" />
<zipgroupfileset dir="${libfolder}/" includes="@{jarresources}"/>
</jar>
</sequential>
</macrodef>
<macrodef name="invoke-jar">
<attribute name="filesuffix"/>
<attribute name="classesfolder"/>
<attribute name="outputfolder"/>
<sequential>
<jar destfile="@{outputfolder}/adam_@{filesuffix}.jar">
<fileset dir="@{classesfolder}"/>
</jar>
</sequential>
</macrodef>
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLEANING %%%%%%%%%%%%%%%%%%%%%%%%%%% -->
<macrodef name="invoke-clean">
<attribute name="classesfolder"/>
<attribute name="testclassesfolder"/>
<attribute name="javadocfolder"/>
<attribute name="subproject"/>
<sequential>
<delete dir="@{classesfolder}" failonerror="false"/>
<delete dir="@{testclassesfolder}" failonerror="false"/>
<delete dir="@{javadocfolder}" failonerror="false"/>
<delete file="adam_@{subproject}.jar" failonerror="false"/>
<delete file="testng.xml" failonerror="false"/>
</sequential>
</macrodef>
<macrodef name="invoke-clean-all">
<attribute name="classesfolder"/>
<attribute name="testclassesfolder"/>
<attribute name="testoutputfolder"/>
<attribute name="javadocfolder"/>
<attribute name="subproject"/>
<attribute name="reportsfolder"/>
<sequential>
<invoke-clean
classesfolder="@{classesfolder}"
testclassesfolder="@{testclassesfolder}"
javadocfolder="@{javadocfolder}"
subproject="@{subproject}"/>
<delete dir="@{reportsfolder}" failonerror="false"/>
<delete dir="@{testoutputfolder}" failonerror="false"/>
<delete file="adam_@{subproject}-standalone.jar" failonerror="false"/>
</sequential>
</macrodef>
</project>