Skip to content

Commit e3c37dd

Browse files
committed
Readd an Ant example that uses Ivy and a scriptselector as replacement for the removed custom selector
1 parent d38a99e commit e3c37dd

File tree

3 files changed

+250
-0
lines changed

3 files changed

+250
-0
lines changed

build.xml

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
<project name="SpockExample"
2+
default="test"
3+
xmlns:groovy="antlib:org.codehaus.groovy.ant"
4+
xmlns:ivy="antlib:org.apache.ivy.ant">
5+
<!-- Various Paths -->
6+
<property name="test.src.dir"
7+
location="src/test/groovy"/>
8+
<property name="test.resource.dir"
9+
location="src/test/resources"/>
10+
<property name="build.dir"
11+
location="ant/build"/>
12+
<property name="lib.dir"
13+
location="ant/lib"/>
14+
<property name="classes.dir"
15+
location="${build.dir}/classes"/>
16+
17+
<!-- Ivy Properties -->
18+
<property name="config.ivy.version"
19+
value="2.5.3"/>
20+
<property name="ivy.jar.dir"
21+
location="${lib.dir}/ivy"/>
22+
<property name="ivy.jar.filename"
23+
value="ivy-${config.ivy.version}.jar"/>
24+
<property name="ivy.jar.file"
25+
location="${ivy.jar.dir}/${ivy.jar.filename}"/>
26+
27+
<target name="init">
28+
<echo message="Buildfile for ${ant.project.name} (${ant.file})"
29+
level="info"/>
30+
<fail message="Ant 1.10.6 or newer is needed for ${ant.project.name} to build, please install it and rerun (found Ant version: '${ant.version}')">
31+
<condition>
32+
<not>
33+
<antversion atleast="1.10.6"/>
34+
</not>
35+
</condition>
36+
</fail>
37+
<fail message="Java 8 or newer is needed for ${ant.project.name} to build, please install it and rerun (found Java version: '${ant.java.version}')">
38+
<condition>
39+
<not>
40+
<javaversion atleast="8"/>
41+
</not>
42+
</condition>
43+
</fail>
44+
<fail message="The ant-optional package is needed for ${ant.project.name} to build, please install it and rerun">
45+
<condition>
46+
<not>
47+
<and>
48+
<available classname="org.apache.tools.ant.taskdefs.optional.depend.Depend"/>
49+
<available classname="org.apache.tools.ant.taskdefs.optional.TraXLiaison"/>
50+
</and>
51+
</not>
52+
</condition>
53+
</fail>
54+
</target>
55+
56+
<target name="check-ivy"
57+
depends="init">
58+
<available property="ivy.jar.present"
59+
file="${ivy.jar.file}"
60+
type="file"/>
61+
</target>
62+
63+
<target name="download-ivy"
64+
depends="init,check-ivy"
65+
unless="ivy.jar.present">
66+
<mkdir dir="${ivy.jar.dir}"/>
67+
<get src="https://repo.maven.apache.org/maven2/org/apache/ivy/ivy/${config.ivy.version}/ivy-${config.ivy.version}.jar"
68+
dest="${ivy.jar.file}"
69+
usetimestamp="true"/>
70+
</target>
71+
72+
<target name="init-ivy"
73+
depends="init,download-ivy">
74+
<property name="ivy.retrieve.pattern"
75+
value="${lib.dir}/[conf]/[artifact](-[classifier]).[ext]"/>
76+
<taskdef resource="org/apache/ivy/ant/antlib.xml"
77+
classpath="${ivy.jar.file}"
78+
loaderref="ivy.loader"
79+
uri="antlib:org.apache.ivy.ant"/>
80+
</target>
81+
82+
<target name="retrieve"
83+
description="retrieve the dependencies"
84+
depends="init,init-ivy">
85+
<ivy:retrieve sync="true"/>
86+
<ivy:retrieve pattern="${lib.dir}/ivy/[artifact]-[revision].[ext]"
87+
organisation="org.apache.ivy"
88+
module="ivy"
89+
revision="${config.ivy.version}"
90+
conf="default"
91+
inline="true"/>
92+
</target>
93+
94+
<target name="clean"
95+
depends="init"
96+
description="clean up intermediate files">
97+
<delete includeemptydirs="true"
98+
failonerror="false">
99+
<fileset dir="${classes.dir}"
100+
defaultexcludes="false"/>
101+
</delete>
102+
</target>
103+
104+
<target name="clean-all"
105+
depends="init"
106+
description="clean up lib.dir, classes.dir, and build.dir completely">
107+
<delete includeemptydirs="true"
108+
failonerror="false">
109+
<fileset dir="${lib.dir}"
110+
defaultexcludes="false"/>
111+
<fileset dir="${classes.dir}"
112+
defaultexcludes="false"/>
113+
<fileset dir="${build.dir}"
114+
defaultexcludes="false"/>
115+
</delete>
116+
</target>
117+
118+
<target name="compile-test"
119+
depends="init,retrieve">
120+
<mkdir dir="${classes.dir}/test"/>
121+
<depend srcDir="${test.src.dir}"
122+
destDir="${classes.dir}/test"
123+
cache="${classes.dir}"/>
124+
<dependset>
125+
<srcfilelist files="build.xml"/>
126+
<srcfilelist files="ivy.xml"/>
127+
<srcfilelist files="ivysettings.xml"/>
128+
<targetfileset dir="${classes.dir}/test"/>
129+
</dependset>
130+
<taskdef resource="org/codehaus/groovy/antlib.xml"
131+
uri="antlib:org.codehaus.groovy.ant">
132+
<classpath>
133+
<fileset dir="${lib.dir}/groovy-ant"
134+
includes="*.jar"/>
135+
</classpath>
136+
</taskdef>
137+
<groovy:groovyc srcdir="${test.src.dir}"
138+
destdir="${classes.dir}/test"
139+
encoding="UTF-8"
140+
includeAntRuntime="false"
141+
fork="true">
142+
<groovy:classpath id="classpath.test">
143+
<fileset dir="${lib.dir}/test"
144+
includes="*.jar"/>
145+
</groovy:classpath>
146+
</groovy:groovyc>
147+
</target>
148+
149+
<target name="test"
150+
depends="init,retrieve,compile-test"
151+
description="run unit tests">
152+
<delete dir="${build.dir}/test/raw-reports"/>
153+
<mkdir dir="${build.dir}/test/raw-reports"/>
154+
<junitlauncher printsummary="true"
155+
failureproperty="tests.failed">
156+
<classpath refid="classpath.test"/>
157+
<classpath location="§{test.resource.dir}"/>
158+
<classpath location="${classes.dir}/test"/>
159+
<classpath location="${ant.library.dir}/ant.jar"/>
160+
<classpath location="${ant.library.dir}/ant-junitlauncher.jar"/>
161+
<listener type="legacy-xml"
162+
outputDir="${build.dir}/test/raw-reports"/>
163+
<testclasses>
164+
<fork includeJUnitPlatformLibraries="false"
165+
includeAntRuntimeLibraries="false"/>
166+
<fileset dir="${classes.dir}/test">
167+
<scriptselector language="groovy">
168+
<classpath>
169+
<fileset dir="${lib.dir}/groovy-script"
170+
includes="*.jar"/>
171+
</classpath>
172+
<![CDATA[
173+
import org.spockframework.buildsupport.SpecClassFileFinder
174+
self.selected = new SpecClassFileFinder().isRunnableSpec(file)
175+
]]>
176+
</scriptselector>
177+
</fileset>
178+
</testclasses>
179+
</junitlauncher>
180+
<mkdir dir="${build.dir}/test/merged-reports"/>
181+
<junitreport todir="${build.dir}/test/merged-reports">
182+
<fileset dir="${build.dir}/test/raw-reports"/>
183+
<report todir="${build.dir}/test/reports"/>
184+
</junitreport>
185+
<fail message="Unit test(s) failed! See reports at ${build.dir}/test/reports/index.html"
186+
if="tests.failed"/>
187+
</target>
188+
</project>

ivy.xml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ivy-module version="2.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:noNamespaceSchemaLocation="https://ant.apache.org/ivy/schemas/ivy.xsd">
5+
<info organisation="org.spockframework" module="spock-example">
6+
<license name="ASLv2" url="https://www.apache.org/licenses/LICENSE-2.0"/>
7+
<ivyauthor name="Björn Kautler"/>
8+
<description homepage="https://spockframework.org/">
9+
Spock Framework - Example Project
10+
</description>
11+
</info>
12+
13+
<configurations confmappingoverride="true" defaultconfmapping="sources,javadoc->@;compile->master;%->default">
14+
<conf name="default" description="Runtime dependencies and master artifacts" extends="master, runtime"/>
15+
<conf name="master" description="Artifacts of this module without dependencies"/>
16+
<conf name="compile" description="Compile dependencies" visibility="private" transitive="false"/>
17+
<conf name="runtime" description="Runtime dependencies" extends="compile"/>
18+
<conf name="test" description="Testing dependencies" visibility="private" extends="runtime"/>
19+
<conf name="provided" description="Provided dependencies" visibility="private"/>
20+
<conf name="sources" description="Source artifacts" visibility="private"/>
21+
<conf name="javadoc" description="JavaDoc artifacts" visibility="private"/>
22+
<conf name="groovy-ant" description="Dependencies for Groovy Ant tasks" visibility="private" extends="test"/>
23+
<conf name="groovy-script" description="Dependencies for Groovy script selector" visibility="private" extends="test"/>
24+
</configurations>
25+
26+
<publications defaultconf="master"/>
27+
28+
<dependencies defaultconf="compile;sources;javadoc">
29+
<dependency org="org.apache.groovy" name="groovy-ant" rev="4.0.26" conf="groovy-ant;sources;javadoc"/>
30+
<dependency org="org.apache.groovy" name="groovy-groovydoc" rev="4.0.26" conf="groovy-ant;sources;javadoc"/>
31+
<dependency org="org.apache.groovy" name="groovy" rev="4.0.26" conf="test;sources;javadoc"/>
32+
<!-- Mandatory dependencies for using Spock -->
33+
<dependency org="org.spockframework" name="spock-core" rev="2.3-groovy-4.0" conf="test;sources;javadoc"/>
34+
<dependency org="org.junit.platform" name="junit-platform-launcher" rev="1.12.1" conf="test;sources;javadoc"/>
35+
<!-- Optional dependencies for using Spock -->
36+
<!-- enables mocking of classes (in addition to interfaces) -->
37+
<dependency org="org.objenesis" name="objenesis" rev="3.4" conf="test;sources;javadoc"/>
38+
<dependency org="net.bytebuddy" name="byte-buddy" rev="1.17.5" conf="test;sources;javadoc"/>
39+
<!-- Dependencies used by examples in this project (not required for using Spock) -->
40+
<dependency org="org.apache.groovy" name="groovy-sql" rev="4.0.26" conf="test;sources;javadoc"/>
41+
<dependency org="org.spockframework" name="spock-junit4" rev="2.3-groovy-4.0" conf="test;sources;javadoc"/>
42+
<dependency org="com.h2database" name="h2" rev="2.2.224" conf="test;sources;javadoc"/>
43+
<!-- For using the scriptselector with Groovy -->
44+
<dependency org="org.apache.groovy" name="groovy-jsr223" rev="4.0.26" conf="groovy-script;sources;javadoc"/>
45+
<dependency org="org.ow2.asm" name="asm" rev="9.8" conf="groovy-script;sources;javadoc"/>
46+
</dependencies>
47+
</ivy-module>

ivysettings.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ivysettings>
3+
<settings defaultResolver="default"/>
4+
5+
<resolvers>
6+
<ibiblio name="public" root="https://repo.maven.apache.org/maven2/" m2compatible="true"/>
7+
<!-- The whole file is only required if a snapshot version of Spock is used -->
8+
<ibiblio name="snapshots" root="https://oss.sonatype.org/content/repositories/snapshots/" m2compatible="true"/>
9+
</resolvers>
10+
11+
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
12+
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
13+
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
14+
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
15+
</ivysettings>

0 commit comments

Comments
 (0)