<?xml version="1.0"?>
<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed 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.
-->
<j:jelly xmlns:j="jelly:core" xmlns:test="jelly:junit" xmlns:ant="jelly:ant">

  <ant:fileScanner var="scanner">
    <ant:fileset dir="src/test" includes="**/suite.jelly"/>
  </ant:fileScanner>

    <j:if test="${empty outputfile}">
            <j:set var="outputfile" value="target/jellyunit.xml"/>
  </j:if>
  
  <ant:echo>Running all JellyUnit tests and generating file ${outputfile}</ant:echo>
      
    <j:file name="${outputfile}">
        <tests>
          <j:forEach var="file" items="${scanner.iterator()}">
    
              <j:set var="uri" value="${file.toURL().toString()}"/>
              
              <suite uri="${uri}">
                  <j:include uri="${uri}"/>
                    <test:run/>      
                </suite>    
                        
          </j:forEach>
        </tests>
    </j:file>        
</j:jelly>