summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/thrift/lib/json/test/build.xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/jaegertracing/thrift/lib/json/test/build.xml')
-rw-r--r--src/jaegertracing/thrift/lib/json/test/build.xml144
1 files changed, 144 insertions, 0 deletions
diff --git a/src/jaegertracing/thrift/lib/json/test/build.xml b/src/jaegertracing/thrift/lib/json/test/build.xml
new file mode 100644
index 000000000..956a2382b
--- /dev/null
+++ b/src/jaegertracing/thrift/lib/json/test/build.xml
@@ -0,0 +1,144 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project name="JSON Schema Test" default="test" basedir="."
+ xmlns:artifact="antlib:org.apache.maven.artifact.ant">
+
+ <description>JSON Schema Validation Test</description>
+
+ <property name="build.dir" location="${basedir}/build" />
+ <property name="json.dir" location="${basedir}/.." />
+ <property name="gen.json.dir" location="${build.dir}/gen-json" />
+ <property name="json.schema" location="${json.dir}/schema.json" />
+ <property name="build.tools.dir" location="${build.dir}/tools"/>
+ <property name="build.lib.dir" location="${build.dir}/lib"/>
+
+ <!-- the root directory, where you unpack thrift distibution (e.g. thrift-0.x.x.tar.gz) -->
+ <property name="thrift.dir" location="../../../" />
+ <property name="thrift.test.dir" location="${thrift.dir}/test" />
+ <property name="thrift.compiler" location="${thrift.dir}/compiler/cpp/thrift" />
+
+ <!-- Get maven dependency versions from here -->
+ <property file="${basedir}/build.properties" />
+
+ <path id="test.classpath">
+ <fileset dir="${build.lib.dir}">
+ <include name="*.jar" />
+ </fileset>
+ </path>
+
+ <target name="compiler.check">
+ <fail>
+ <condition>
+ <not>
+ <resourcecount count="1">
+ <fileset id="fs" file="${thrift.compiler}"/>
+ </resourcecount>
+ </not>
+ </condition>
+ Thrift compiler is missing !
+ </fail>
+ </target>
+
+ <target name="init" depends="compiler.check, mkdirs, mvn.init">
+ <tstamp />
+ </target>
+
+ <target name="mkdirs">
+ <mkdir dir="${build.dir}"/>
+ <mkdir dir="${build.lib.dir}"/>
+ <mkdir dir="${build.tools.dir}"/>
+ <mkdir dir="${gen.json.dir}"/>
+ </target>
+
+ <target name="generate" depends="init">
+ <exec executable="${thrift.compiler}" failonerror="true">
+ <arg line="--gen json"/>
+ <arg line="-out ${gen.json.dir}"/>
+ <arg line="${thrift.test.dir}/ThriftTest.thrift"/>
+ </exec>
+ <exec executable="${thrift.compiler}" failonerror="true">
+ <arg line="--gen json:merge"/>
+ <arg line="-out ${gen.json.dir}"/>
+ <arg line="${thrift.test.dir}/Include.thrift"/>
+ </exec>
+ </target>
+
+ <target name="test" description="run schema validation"
+ depends="validate-schema, validate-generated-json"/>
+
+ <target name="validate-schema" depends="init">
+ <java classname="com.github.fge.jsonschema.main.cli.Main"
+ classpathref="test.classpath" failonerror="true">
+ <arg value="--syntax"/>
+ <arg value="${json.schema}"/>
+ </java>
+ </target>
+
+ <target name="validate-generated-json" depends="init, generate">
+ <validate-json file="${gen.json.dir}/ThriftTest.json"/>
+ <validate-json file="${gen.json.dir}/Include.json"/>
+ </target>
+
+ <target name="clean">
+ <delete dir="${build.dir}" />
+ <delete dir="${gen.json.dir}" />
+ </target>
+
+ <target name="mvn.ant.tasks.download" depends="mkdirs,mvn.ant.tasks.check" unless="mvn.ant.tasks.found">
+ <get src="${mvn.ant.task.url}/${mvn.ant.task.jar}" dest="${build.tools.dir}/${mvn.ant.task.jar}" usetimestamp="true"/>
+ </target>
+
+ <target name="mvn.ant.tasks.check">
+ <condition property="mvn.ant.tasks.found">
+ <typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/>
+ </condition>
+ </target>
+
+ <target name="mvn.init" depends="mvn.ant.tasks.download" unless="mvn.finished">
+ <typedef uri="antlib:org.apache.maven.artifact.ant" classpath="${build.tools.dir}/${mvn.ant.task.jar}"/>
+
+ <artifact:dependencies filesetId="test.dependency.jars">
+ <dependency groupId="com.github.fge" artifactId="json-schema-validator" version="${json-schema-validator.version}"/>
+ </artifact:dependencies>
+
+ <!-- Copy the dependencies to the build/lib dir -->
+ <copy todir="${build.lib.dir}">
+ <fileset refid="test.dependency.jars"/>
+ <mapper type="flatten"/>
+ </copy>
+
+ <property name="mvn.finished" value="true"/>
+ </target>
+
+ <macrodef name="validate-json">
+ <attribute name="file" default=""/>
+ <sequential>
+ <java failonerror="true"
+ fork="true"
+ dir="${json.dir}"
+ classname="com.github.fge.jsonschema.main.cli.Main"
+ classpathref="test.classpath">
+ <arg line="--fakeroot http://thrift.apache.org/"/>
+ <arg value="${json.schema}"/>
+ <arg value="@{file}"/>
+ </java>
+ </sequential>
+ </macrodef>
+
+</project>