blob: 2d883506ec94dbb9fc3716f3ef46f71f8b06cf07 [file] [log] [blame]
<?xml version="1.0"?>
<!--
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
https://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 default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
<import file="../antunit-base.xml" />
<target name="setUp">
<mkdir dir="${output}"/>
<property name="legacy.dir"
location="../../../etc/testcases/taskdefs/style/"/>
</target>
<target name="testParameterPropagation" depends="setUp">
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml"
style="${legacy.dir}/printParams.xsl">
<param name="set" expression="myvalue"/>
</xslt>
<au:assertResourceContains
resource="${output}/out.xml"
value="set='myvalue'"/>
</target>
<target name="testParameterTypes" depends="setUp" description="parameters of various data types and XPath expressions">
<property name="antProperty1" value="ANT_PROPERTY_1"/>
<property name="antProperty2" value="ANT_PROPERTY_2"/>
<property name="antProperty3" value="3"/>
<property name="antProperty4" value="substring-before"/>
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml">
<param name="p1" expression="123" type="INT"/>
<param name="p2" expression="64 * 64 div 128 + 10" type="XPATH_NUMBER"/>
<param name="p3" expression="${antProperty4}($antProperty2, '_')" type="XPATH_STRING"/>
<style>
<string><![CDATA[<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<!-- get the xsl-parameter -->
<xsl:param name="p1"/>
<xsl:param name="p2"/>
<xsl:param name="p3"/>
<!-- use the xsl-parameter -->
<xsl:template match="/">
p1_result='<xsl:value-of select="$p1 + 321"/>'
p2_result='<xsl:value-of select="$p2"/>'
p3_result='<xsl:value-of select="$p3"/>'
</xsl:template>
</xsl:stylesheet>
]]></string>
</style>
</xslt>
<au:assertResourceContains resource="${output}/out.xml" value="p1_result='444'"/>
<au:assertResourceContains resource="${output}/out.xml" value="p2_result='42'"/>
<au:assertResourceContains resource="${output}/out.xml" value="p3_result='ANT'"/>
</target>
<target name="testInlineStyleSheet" depends="setUp">
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml">
<param name="set" expression="somevalue"/>
<style>
<string><![CDATA[<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<!-- get the xsl-parameter -->
<xsl:param name="set">set default value</xsl:param>
<xsl:param name="empty">empty default value</xsl:param>
<xsl:param name="undefined">undefined default value</xsl:param>
<!-- use the xsl-parameter -->
<xsl:template match="/">
set='<xsl:value-of select="$set"/>'
empty='<xsl:value-of select="$empty"/>'
undefined='<xsl:value-of select="$undefined"/>'
</xsl:template>
</xsl:stylesheet>
]]></string>
</style>
</xslt>
<au:assertResourceContains
resource="${output}/out.xml"
value="set='somevalue'"/>
</target>
<target name="testStyleDoesntExist" depends="setUp">
<au:expectfailure expectedmessage="i-m-not-there.xslt doesn't exist.">
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml"
style="i-m-not-there.xslt"/>
</au:expectfailure>
</target>
<target name="testStyleDoesntExistNoError" depends="setUp">
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml"
style="i-m-not-there.xslt"
failOnError="false"/>
<au:assertFileDoesntExist file="${output}/out.xml"/>
</target>
<target name="testStyleDoesntExistNoTransformationError" depends="setUp">
<au:expectfailure expectedmessage="i-m-not-there.xslt doesn't exist.">
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml"
style="i-m-not-there.xslt"
failOnTransformationError="false"/>
</au:expectfailure>
</target>
<target name="testTransformationError" depends="setUp">
<au:expectfailure expectedmessage="Fatal error during transformation">
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml"
style="xslt/printParams-invalid.xsl"
/>
</au:expectfailure>
</target>
<target name="testTransformationErrorNoFail" depends="setUp">
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml"
style="xslt/printParams-invalid.xsl"
failOnError="false"/>
<au:assertFileDoesntExist file="${output}/out.xml"/>
</target>
<target name="testTransformationErrorNoFailOnTransformation" depends="setUp">
<xslt in="${legacy.dir}/../input.stdin"
out="${output}/out.xml"
style="${legacy.dir}/printParams.xsl"
failOnTransformationError="false"/>
<au:assertFileDoesntExist file="${output}/out.xml"/>
</target>
<target name="testNoResources" depends="setUp">
<au:expectfailure expectedmessage="no resources specified">
<xslt destdir="${output}" style="${legacy.dir}/printParams.xsl"
useImplicitFileset="false">
<fileset dir=".">
<include name="I don't exist"/>
</fileset>
</xslt>
</au:expectfailure>
</target>
<target name="testNoResourcesNoFail" depends="setUp">
<xslt destdir="${output}" style="${legacy.dir}/printParams.xsl"
useImplicitFileset="false"
failOnNoResources="false">
<fileset dir=".">
<include name="I don't exist"/>
</fileset>
</xslt>
</target>
<target name="testNoResourcesNoError" depends="setUp">
<xslt destdir="${output}" style="${legacy.dir}/printParams.xsl"
useImplicitFileset="false"
failOnError="false">
<fileset dir=".">
<include name="I don't exist"/>
</fileset>
</xslt>
</target>
<target name="testTrace" depends="setUp">
<xslt in="${legacy.dir}/data.xml"
out="${output}/out.xml"
style="${legacy.dir}/printParams.xsl">
<param name="set" expression="myvalue"/>
<trace templates="true" elements="true" generation="true"
selection="true" extension="true"/>
</xslt>
<au:assertLogDoesntContain text="Failed to enable tracing"/>
</target>
<target name="setUpIfUnlessTests" depends="setUp">
<macrodef name="xs">
<sequential>
<xslt in="${legacy.dir}/data.xml" out="${output}/out.xml"
style="${legacy.dir}/printParams.xsl">
<param name="set" expression="if-value" if="${if}"/>
<param name="set" expression="unless-value" unless="${if}"/>
<param name="empty" expression="if-value" if="if"/>
<param name="empty" expression="unless-value" unless="if"/>
</xslt>
</sequential>
</macrodef>
</target>
<target name="testPropertiesNotSet" depends="setUpIfUnlessTests">
<xs/>
<au:assertResourceContains resource="${output}/out.xml"
value="set='unless-value'"/>
<au:assertResourceContains resource="${output}/out.xml"
value="empty='unless-value'"/>
</target>
<target name="testPropertiesSet" depends="setUpIfUnlessTests">
<property name="if" value="whatever"/>
<xs/>
<au:assertResourceContains resource="${output}/out.xml"
value="set='unless-value'"/>
<au:assertResourceContains resource="${output}/out.xml"
value="empty='if-value'"/>
</target>
<target name="testIfTrue" depends="setUpIfUnlessTests">
<property name="if" value="true"/>
<xs/>
<au:assertResourceContains resource="${output}/out.xml"
value="set='if-value'"/>
<au:assertResourceContains resource="${output}/out.xml"
value="empty='if-value'"/>
</target>
<target name="testIfFalse" depends="setUpIfUnlessTests">
<property name="if" value="false"/>
<xs/>
<au:assertResourceContains resource="${output}/out.xml"
value="set='unless-value'"/>
<au:assertResourceContains resource="${output}/out.xml"
value="empty='if-value'"/>
</target>
</project>