Skip to content

Instantly share code, notes, and snippets.

@lefou
Created November 15, 2014 10:05
Show Gist options
  • Save lefou/64d03979d5f5dd24da81 to your computer and use it in GitHub Desktop.
Save lefou/64d03979d5f5dd24da81 to your computer and use it in GitHub Desktop.
Lambda Test based TestNG Suite fails under Ant
<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. -->
<!-- ====================================================================== -->
<project name="example" default="package" basedir=".">
<!-- ====================================================================== -->
<!-- Import maven-build.xml into the current project -->
<!-- ====================================================================== -->
<import file="maven-build.xml"/>
<!-- ====================================================================== -->
<!-- Help target -->
<!-- ====================================================================== -->
<target name="help">
<echo message="Please run: $ant -projecthelp"/>
</target>
<target name="test" depends="compile-tests">
<mkdir dir="${maven.test.reports}"/>
<taskdef resource="testngtasks" classpathref="build.test.classpath" />
<testng outputDir="${maven.test.reports}">
<classfileset dir="${maven.build.testOutputDir}" includes="**/*.class" />
<classpath>
<path refid="build.test.classpath" />
<pathelement location="${maven.build.outputDir}" />
<pathelement location="${maven.build.testOutputDir}" />
</classpath>
</testng>
</target>
</project>
#Generated by Maven Ant Plugin - DO NOT EDIT THIS FILE!
#Sat Nov 15 10:44:20 CET 2014
maven.settings.offline=false
maven.build.finalName=example-1.0-SNAPSHOT
maven.build.resourceDir.0=src/main/resources
maven.build.testOutputDir=${maven.build.dir}/test-classes
maven.build.testResourceDir.0=src/test/resources
maven.reporting.outputDirectory=${maven.build.dir}/site
project.build.sourceEncoding=UTF-8
maven.compiler.source=1.8
maven.build.srcDir.0=src/main/java
project.build.directory=${maven.build.dir}
maven.test.reports=${maven.build.dir}/test-reports
maven.build.dir=target
project.build.outputDirectory=${maven.build.outputDir}
maven.compiler.target=1.8
maven.build.testDir.0=src/test/java
maven.settings.interactiveMode=true
maven.repo.local=${user.home}/.m2/repository
maven.build.outputDir=${maven.build.dir}/classes
<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. -->
<!-- ====================================================================== -->
<!-- ====================================================================== -->
<!-- ===================== - DO NOT EDIT THIS FILE! - ===================== -->
<!-- ====================================================================== -->
<!-- -->
<!-- Any modifications will be overwritten. -->
<!-- -->
<!-- Generated by Maven Ant Plugin on 11/15/14 10:44 AM -->
<!-- See: http://maven.apache.org/plugins/maven-ant-plugin/ -->
<!-- -->
<!-- ====================================================================== -->
<project name="example-from-maven" default="package" basedir=".">
<!-- ====================================================================== -->
<!-- Build environment properties -->
<!-- ====================================================================== -->
<property file="${user.home}/.m2/maven.properties"/>
<property file="maven-build.properties"/>
<property name="maven.build.finalName" value="example-1.0-SNAPSHOT"/>
<property name="maven.build.dir" value="target"/>
<property name="maven.build.outputDir" value="${maven.build.dir}/classes"/>
<property name="maven.build.srcDir.0" value="src/main/java"/>
<property name="maven.build.resourceDir.0" value="src/main/resources"/>
<property name="maven.build.testOutputDir" value="${maven.build.dir}/test-classes"/>
<property name="maven.build.testDir.0" value="src/test/java"/>
<property name="maven.build.testResourceDir.0" value="src/test/resources"/>
<property name="maven.test.reports" value="${maven.build.dir}/test-reports"/>
<property name="maven.reporting.outputDirectory" value="${maven.build.dir}/site"/>
<property name="maven.repo.local" value="${user.home}/.m2/repository"/>
<property name="maven.settings.offline" value="false"/>
<property name="maven.settings.interactiveMode" value="true"/>
<!-- ====================================================================== -->
<!-- Defining classpaths -->
<!-- ====================================================================== -->
<path id="build.classpath"/>
<path id="build.test.classpath">
<pathelement location="${maven.repo.local}/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar"/>
<pathelement location="${maven.repo.local}/org/testng/testng/6.8.8/testng-6.8.8.jar"/>
<pathelement location="${maven.repo.local}/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
<pathelement location="${maven.repo.local}/com/beust/jcommander/1.27/jcommander-1.27.jar"/>
</path>
<!-- ====================================================================== -->
<!-- Cleaning up target -->
<!-- ====================================================================== -->
<target name="clean" description="Clean the output directory">
<delete dir="${maven.build.dir}"/>
</target>
<!-- ====================================================================== -->
<!-- Compilation target -->
<!-- ====================================================================== -->
<target name="compile" depends="get-deps" description="Compile the code">
<mkdir dir="${maven.build.outputDir}"/>
<javac destdir="${maven.build.outputDir}"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="${maven.compiler.target}"
verbose="false"
fork="false"
source="${maven.compiler.source}">
<src>
<pathelement location="${maven.build.srcDir.0}"/>
</src>
<classpath refid="build.classpath"/>
</javac>
</target>
<!-- ====================================================================== -->
<!-- Test-compilation target -->
<!-- ====================================================================== -->
<target name="compile-tests"
depends="compile"
description="Compile the test code"
unless="maven.test.skip">
<mkdir dir="${maven.build.testOutputDir}"/>
<javac destdir="${maven.build.testOutputDir}"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="${maven.compiler.target}"
verbose="false"
fork="false"
source="${maven.compiler.source}">
<src>
<pathelement location="${maven.build.testDir.0}"/>
</src>
<classpath>
<path refid="build.test.classpath"/>
<pathelement location="${maven.build.outputDir}"/>
</classpath>
</javac>
</target>
<!-- ====================================================================== -->
<!-- Run all tests -->
<!-- ====================================================================== -->
<target name="test"
depends="compile-tests, junit-missing"
unless="junit.skipped"
description="Run the test cases">
<mkdir dir="${maven.test.reports}"/>
<junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir=".">
<sysproperty key="basedir" value="."/>
<formatter type="xml"/>
<formatter type="plain" usefile="false"/>
<classpath>
<path refid="build.test.classpath"/>
<pathelement location="${maven.build.outputDir}"/>
<pathelement location="${maven.build.testOutputDir}"/>
</classpath>
<batchtest todir="${maven.test.reports}" unless="test">
<fileset dir="${maven.build.testDir.0}">
<include name="**/Test*.java"/>
<include name="**/*Test.java"/>
<include name="**/*TestCase.java"/>
<exclude name="**/*Abstract*Test.java"/>
</fileset>
</batchtest>
<batchtest todir="${maven.test.reports}" if="test">
<fileset dir="${maven.build.testDir.0}">
<include name="**/${test}.java"/>
<exclude name="**/*Abstract*Test.java"/>
</fileset>
</batchtest>
</junit>
</target>
<target name="test-junit-present">
<available classname="junit.framework.Test" property="junit.present"/>
</target>
<target name="test-junit-status"
depends="test-junit-present">
<condition property="junit.missing">
<and>
<isfalse value="${junit.present}"/>
<isfalse value="${maven.test.skip}"/>
</and>
</condition>
<condition property="junit.skipped">
<or>
<isfalse value="${junit.present}"/>
<istrue value="${maven.test.skip}"/>
</or>
</condition>
</target>
<target name="junit-missing"
depends="test-junit-status"
if="junit.missing">
<echo>=================================== WARNING ===================================</echo>
<echo> JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.</echo>
<echo>===============================================================================</echo>
</target>
<!-- ====================================================================== -->
<!-- Javadoc target -->
<!-- ====================================================================== -->
<target name="javadoc" description="Generates the Javadoc of the application">
<javadoc sourcepath="${maven.build.srcDir.0}"
packagenames="*"
destdir="${maven.reporting.outputDirectory}/apidocs"
access="protected"
old="false"
verbose="false"
version="true"
use="true"
author="true"
splitindex="false"
nodeprecated="false"
nodeprecatedlist="false"
notree="false"
noindex="false"
nohelp="false"
nonavbar="false"
serialwarn="false"
charset="ISO-8859-1"
linksource="false"
breakiterator="false"/>
</target>
<!-- ====================================================================== -->
<!-- Package target -->
<!-- ====================================================================== -->
<target name="package" depends="compile,test" description="Package the application">
<jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar"
compress="true"
index="false"
basedir="${maven.build.outputDir}"
excludes="**/package.html"/>
</target>
<!-- ====================================================================== -->
<!-- A dummy target for the package named after the type it creates -->
<!-- ====================================================================== -->
<target name="jar" depends="package" description="Builds the jar for the application"/>
<!-- ====================================================================== -->
<!-- Download dependencies target -->
<!-- ====================================================================== -->
<target name="test-offline">
<condition property="maven.mode.offline">
<equals arg1="${maven.settings.offline}" arg2="true"/>
</condition>
</target>
<target name="get-deps"
depends="test-offline"
description="Download all dependencies"
unless="maven.mode.offline">
<mkdir dir="${maven.repo.local}"/>
<mkdir dir="${maven.repo.local}/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2"/>
<get src="http://dl.bintray.com/lefou/poor-mans-lambda-test/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar"
dest="${maven.repo.local}/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar"
usetimestamp="false"
ignoreerrors="true"/>
<get src="http://repo.maven.apache.org/maven2/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar"
dest="${maven.repo.local}/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/org/testng/testng/6.8.8"/>
<get src="http://dl.bintray.com/lefou/poor-mans-lambda-test/org/testng/testng/6.8.8/testng-6.8.8.jar"
dest="${maven.repo.local}/org/testng/testng/6.8.8/testng-6.8.8.jar"
usetimestamp="false"
ignoreerrors="true"/>
<get src="http://repo.maven.apache.org/maven2/org/testng/testng/6.8.8/testng-6.8.8.jar"
dest="${maven.repo.local}/org/testng/testng/6.8.8/testng-6.8.8.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/org/beanshell/bsh/2.0b4"/>
<get src="http://dl.bintray.com/lefou/poor-mans-lambda-test/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"
dest="${maven.repo.local}/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"
usetimestamp="false"
ignoreerrors="true"/>
<get src="http://repo.maven.apache.org/maven2/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"
dest="${maven.repo.local}/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/com/beust/jcommander/1.27"/>
<get src="http://dl.bintray.com/lefou/poor-mans-lambda-test/com/beust/jcommander/1.27/jcommander-1.27.jar"
dest="${maven.repo.local}/com/beust/jcommander/1.27/jcommander-1.27.jar"
usetimestamp="false"
ignoreerrors="true"/>
<get src="http://repo.maven.apache.org/maven2/com/beust/jcommander/1.27/jcommander-1.27.jar"
dest="${maven.repo.local}/com/beust/jcommander/1.27/jcommander-1.27.jar"
usetimestamp="false"
ignoreerrors="true"/>
</target>
</project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>bintray-lefou-poor-mans-lambda-test</id>
<name>bintray-lefou-poor-mans-lambda-test</name>
<url>http://dl.bintray.com/lefou/poor-mans-lambda-test</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>de.tobiasroeser</groupId>
<artifactId>de.tobiasroeser.lambdatest</artifactId>
<version>0.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
// copy this to: src/test/java/org/example/SimpleTest.java
package org.example;
import de.tobiasroeser.lambdatest.testng.FreeSpec;
class SimpleTest extends FreeSpec {{
test("1 + 1 = 2", () -> {
assertEquals(1 + 1, 2);
});
test("a pending test", () -> pending());
test("divide by zero", () -> {
int a = 2;
int b = 0;
intercept(ArithmeticException.class, () -> {
int c = a / b;
});
});
}}
@lefou
Copy link
Author

lefou commented Nov 15, 2014

The test suite runs successfully when started from Maven, but fails abnormally without even reporting a failure (without any exception) with Ant.

Output from Maven:

lefou@x3 /tmp/example $ mvn clean test
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building example 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ example ---
[INFO] Deleting /tmp/example/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /tmp/example/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ example ---
[INFO] Compiling 1 source file to /tmp/example/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /tmp/example/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ example ---
[INFO] Compiling 1 source file to /tmp/example/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ example ---
[INFO] Surefire report directory: /tmp/example/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.example.SimpleTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@759ebb3d
Running 3 tests in org.example.SimpleTest:
-- SUCCESS SimpleTest: 1 + 1 = 2
-- SKIPPED SimpleTest: a pending test (pending)
-- SUCCESS SimpleTest: divide by zero
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.303 sec

Results :

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.441s
[INFO] Finished at: Sat Nov 15 11:06:41 CET 2014
[INFO] Final Memory: 13M/161M
[INFO] ------------------------------------------------------------------------

Output from Ant:

lefou@x3 /tmp/example $ ant clean test
Buildfile: /tmp/example/build.xml

clean:
   [delete] Deleting directory /tmp/example/target

test-offline:

get-deps:
      [get] Getting: http://dl.bintray.com/lefou/poor-mans-lambda-test/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar
      [get] To: /home/lefou/.m2/repository/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar
      [get] Getting: http://repo.maven.apache.org/maven2/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar
      [get] To: /home/lefou/.m2/repository/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar
      [get] Error opening connection java.io.FileNotFoundException: http://repo.maven.apache.org/maven2/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar
      [get] Error opening connection java.io.FileNotFoundException: http://repo.maven.apache.org/maven2/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar
      [get] Error opening connection java.io.FileNotFoundException: http://repo.maven.apache.org/maven2/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar
      [get] Can't get http://repo.maven.apache.org/maven2/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar to /home/lefou/.m2/repository/de/tobiasroeser/de.tobiasroeser.lambdatest/0.0.2/de.tobiasroeser.lambdatest-0.0.2.jar
      [get] Getting: http://dl.bintray.com/lefou/poor-mans-lambda-test/org/testng/testng/6.8.8/testng-6.8.8.jar
      [get] To: /home/lefou/.m2/repository/org/testng/testng/6.8.8/testng-6.8.8.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/org/testng/testng/6.8.8/testng-6.8.8.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/org/testng/testng/6.8.8/testng-6.8.8.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/org/testng/testng/6.8.8/testng-6.8.8.jar
      [get] Can't get http://dl.bintray.com/lefou/poor-mans-lambda-test/org/testng/testng/6.8.8/testng-6.8.8.jar to /home/lefou/.m2/repository/org/testng/testng/6.8.8/testng-6.8.8.jar
      [get] Getting: http://repo.maven.apache.org/maven2/org/testng/testng/6.8.8/testng-6.8.8.jar
      [get] To: /home/lefou/.m2/repository/org/testng/testng/6.8.8/testng-6.8.8.jar
      [get] Getting: http://dl.bintray.com/lefou/poor-mans-lambda-test/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
      [get] To: /home/lefou/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
      [get] Can't get http://dl.bintray.com/lefou/poor-mans-lambda-test/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar to /home/lefou/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
      [get] Getting: http://repo.maven.apache.org/maven2/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
      [get] To: /home/lefou/.m2/repository/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
      [get] Getting: http://dl.bintray.com/lefou/poor-mans-lambda-test/com/beust/jcommander/1.27/jcommander-1.27.jar
      [get] To: /home/lefou/.m2/repository/com/beust/jcommander/1.27/jcommander-1.27.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/com/beust/jcommander/1.27/jcommander-1.27.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/com/beust/jcommander/1.27/jcommander-1.27.jar
      [get] Error opening connection java.io.FileNotFoundException: http://dl.bintray.com/lefou/poor-mans-lambda-test/com/beust/jcommander/1.27/jcommander-1.27.jar
      [get] Can't get http://dl.bintray.com/lefou/poor-mans-lambda-test/com/beust/jcommander/1.27/jcommander-1.27.jar to /home/lefou/.m2/repository/com/beust/jcommander/1.27/jcommander-1.27.jar
      [get] Getting: http://repo.maven.apache.org/maven2/com/beust/jcommander/1.27/jcommander-1.27.jar
      [get] To: /home/lefou/.m2/repository/com/beust/jcommander/1.27/jcommander-1.27.jar

compile:
    [mkdir] Created dir: /tmp/example/target/classes
    [javac] /tmp/example/maven-build.xml:76: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to /tmp/example/target/classes

compile-tests:
    [mkdir] Created dir: /tmp/example/target/test-classes
    [javac] /tmp/example/maven-build.xml:101: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to /tmp/example/target/test-classes

test:
    [mkdir] Created dir: /tmp/example/target/test-reports
   [testng] [TestNG] Running:
   [testng]   Ant suite
   [testng] 
   [testng] Running 3 tests in org.example.SimpleTest:
   [testng] -- SUCCESS SimpleTest: 1 + 1 = 2

BUILD SUCCESSFUL
Total time: 4 seconds

@lefou
Copy link
Author

lefou commented Jul 16, 2015

This issue was fixed in lefou/LambdaTest#4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment