Search code examples
javamavenjzy3d

Failure to Execute Goal Maven Surefire Plugin on Child Module for Jzy3d Program


To simplify what I'm asking: what is a test failure and how do I rectify it?

I'm new to Maven, and I'm trying to get the graphical plotting application Jzy3d to work on my computer. I've updated all of the plugins to be the newest versions in the POM files for the parent and child modules, as well as checking that Maven is pointing to the newest JRE I have installed (which it is).

My dependency trees are also all fine, which covers many of the avenues for which I have seen this error on this forum and elsewhere.

I simply cannot isolate the issue.

The error message when running mvn package -e is as follows:

D:\Program Files\jzy3d-api-master>mvn package -e 
[INFO] Error stacktraces are turned on. 
[INFO] Scanning for projects... 
[INFO]
------------------------------------------------------------------------ 
[INFO] Reactor Build Order: 
[INFO] 
[INFO] Jzy3d Master Project 
[INFO] JDT core (fork of https://github.com/yonatang/JDT) 
[INFO] Jzy3d API 
[INFO] Jzy3d SWT Tools 
[INFO] Jzy3d Tutorials 
[INFO] 
[INFO]
------------------------------------------------------------------------ 
[INFO] Building Jzy3d Master Project 0.9.2-SNAPSHOT 
[INFO]
------------------------------------------------------------------------ 
[INFO] 
[INFO]
------------------------------------------------------------------------ 
[INFO] Building JDT core (fork of https://github.com/yonatang/JDT)
0.9.2-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ jzy3d-jdt-core --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\src\main\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.3:compile (default-compile) @ jzy3d-jdt-core --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ jzy3d-jdt-core --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 18 resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.3:testCompile (default-testCompile) @ jzy3d-jdt-core --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] 
[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ jzy3d-jdt-core --- 
[INFO] Surefire report directory: D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\target\surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running il.ac.idc.jdt.SmokeTest Configuring TestNG with: TestNG60Configurator Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 2.639 sec <<< FAILURE! - in il.ac.idc.jdt.SmokeTest shouldRunOnExampleData(il.ac.idc.jdt.SmokeTest)  Time elapsed: 0.412 sec  <<< FAILURE! java.lang.AssertionError: t1_1000.tsin trangulation is correct for smf
        at il.ac.idc.jdt.SmokeTest.shouldRunOnExampleData(SmokeTest.java:28)
Results :
Failed tests:   SmokeTest.shouldRunOnExampleData:28 t1_1000.tsin trangulation is correct for smf
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0

[INFO]
------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] Jzy3d Master Project ............................... SUCCESS [  0.022 s] 
[INFO] JDT core (fork of https://github.com/yonatang/JDT) . FAILURE [  8.853 s] 
[INFO] Jzy3d API .......................................... SKIPPED 
[INFO] Jzy3d SWT Tools .................................... SKIPPED 
[INFO] Jzy3d Tutorials .................................... SKIPPED 
[INFO]
------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO]
------------------------------------------------------------------------ 
[INFO] Total time: 9.772 s 
[INFO] Finished at: 2016-01-13T11:56:26+00:00 
[INFO] Final Memory: 8M/22M 
[INFO]
------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project jzy3d-jdt-core: There are test failures. 
[ERROR] 
[ERROR] Please refer to D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\target\surefire-reports for the individual test results. 
[ERROR] -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project jzy3d-jdt-core: There are test failures.
Please refer to D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\target\surefire-reports for the individual test results.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures.
Please refer to D:\Program Files\jzy3d-api-master\jzy3d-jdt-core\target\surefire-reports for the individual test results.
        at org.apache.maven.plugin.surefire.SurefireHelper.reportExecution(SurefireHelper.java:91)
        at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary(SurefirePlugin.java:320)
        at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:892)
        at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:755)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
        ... 20 more [ERROR] [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR]   mvn <goals> -rf :jzy3d-jdt-core

My parent POM file is:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.jzy3d</groupId>
    <artifactId>jzy3d-master</artifactId>
    <version>0.9.2-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Jzy3d Master Project</name>
  <url>http://www.jzy3d.org</url>
  <description>A java API to draw 3d charts.</description>
  <developers>
    <developer>
      <id>martin.pernollet</id>
      <name>Martin Pernollet</name>
      <email>[email protected]</email>
      <url>http://twitter.com/jzy3d</url>
    </developer>
    <developer>
      <id>nils.hoffmann</id>
      <name>Nils Hoffmann</name>
    </developer>
    <developer>
      <id>juan.barandiaran</id>
      <name>Juan Barandiaran</name>
    </developer>
  </developers>

  <licenses>
    <license>
      <name>The (New) BSD License</name>
      <url>http://www.opensource.org/licenses/bsd-license.php</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <connection>scm:git:git://github.com/jzy3d/jzy3d-api</connection>
  </scm>
  <issueManagement>
    <system>Github</system>
    <url>https://github.com/jzy3d/jzy3d-api/issues</url>
  </issueManagement>

  <modules>
      <module>jzy3d-api</module>
      <!-- <module>jzy3d-javafx</module> -->
      <module>jzy3d-swt</module>

      <module>jzy3d-jdt-core</module>
      <module>jzy3d-tutorials</module>
  </modules>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <version.jzy3d>0.9.2-SNAPSHOT</version.jzy3d>
    <version.java.source>1.6</version.java.source>
    <version.java.target>1.6</version.java.target>
        <version.mvn.compiler>3.0</version.mvn.compiler>
        <version.mvn.ftp>1.0-beta-6</version.mvn.ftp>
        <version.mvn.deploy>2.4</version.mvn.deploy>
    <version.mvn.javadoc>2.9.1</version.mvn.javadoc>
        <version.libs.junit>4.10</version.libs.junit>
        <version.libs.swt>4.2.1</version.libs.swt>
    </properties>

  <distributionManagement>
    <repository>
      <id>jzy3d-ftp</id>
      <name>Jzy3d Maven Folder</name>
      <url>ftp://ftp.cluster013.ovh.net/maven/releases</url>
    </repository>
    <snapshotRepository>
      <id>jzy3d-ftp</id>
      <name>Jzy3d Maven Folder SNAPSHOTS</name>
      <url>ftp://ftp.cluster013.ovh.net/maven/snapshots</url>
    </snapshotRepository>
  </distributionManagement>

<repositories>
  <repository>
     <id>jzy3d-snapshots</id>
     <name>Jzy3d Snapshots</name>
     <url>http://maven.jzy3d.org/snapshots</url>
  </repository>
  <repository>
     <id>jzy3d-releases</id>
     <name>Jzy3d Snapshots</name>
     <url>http://maven.jzy3d.org/releases</url>
  </repository>
</repositories>

  <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.3</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>

            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <version>2.10.3</version>
              <configuration>
                <stylesheetfile>jzy3d-api/doc/layout.css</stylesheetfile>
              </configuration>
            </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19.1</version>
     </plugin>

 <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.10</version>
        <executions>
          <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>[ groupId ]</groupId>
                  <artifactId>[ artifactId ]</artifactId>
                  <version>[ version ]</version>
                  <type>[ packaging ]</type>
                  <classifier> [classifier - optional] </classifier>
                  <overWrite>[ true or false ]</overWrite>
                  <outputDirectory>[ output directory ]</outputDirectory>
                  <destFileName>[ filename ]</destFileName>
                </artifactItem>
              </artifactItems>
              <!-- other configurations here -->
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
    </pluginManagement>


    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
          <artifactId>wagon-ftp</artifactId>
          <version>${version.mvn.ftp}</version>
      </extension>
    </extensions>
  </build>
</project>

And the child POM for which the error message keeps running (jzy3d-jdt-core) is:

<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>
    <parent>
        <groupId>org.jzy3d</groupId>
        <artifactId>jzy3d-master</artifactId>
        <version>0.9.2-SNAPSHOT</version>
    </parent>
    <artifactId>jzy3d-jdt-core</artifactId>

    <name>JDT core (fork of https://github.com/yonatang/JDT)</name>
    <description>Java Delaunay Triangulation Core Library</description>

    <properties>
        <testng.version>6.5.2</testng.version>
        <hamcrest.version>1.3.RC2</hamcrest.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.1</version>
        </dependency>

Solution

  • To simplify what I'm asking: what is a test failure and how do I rectify it?

    During the build of a Maven project, it executes automatically what are called unit tests. Those are Java classes whose purpose are to verify the behaviour of specific methods of the project. In this case, it turns out that one of the test is failing in your build.


    Update 12 March 2016: the issue mentioned in this post was fixed!


    There is indeed a problem with the tests of the jzy3d library when run on Windows. I checked out the master of their GitHub and I had the same error as you.

    The reason is that, during the unit tests, the library is checking if the contents of two files are equal. However, one file is created with the line separator of the current OS, while the control file has Unix line separator.

    If you take a look at the file jzy3d-jdt-core\src\test\resources\outputs\t1_1000.tsin_result.tsin, you will notice that it uses the Unix \n line separator. The shouldRunOnExampleData test that is failing is creating a temporary file to verify against that control file. On my Windows machine, this temporary file was created in C:\Users\{UserName}\AppData\Local\Temp\jdt-4971059362436436156.smf and, if opened, you can see that it uses Windows line separator \r\n. Hence, the two files are not equal and the test fails.

    A possible solution, targeted at the developers of that library, is to use IOUtils.contentEqualsIgnoreEOL inside the test shouldRunOnExampleData, since this method does not check for the line endings when comparing two input streams. I created the issue 52 for this problem and submitted a pull request, that is now merged and closed.

    A solution for you, user of the library, is either:

    • to change the line endings of each file inside jzy3d-jdt-core\src\test\resources\outputs with Windows line separator. If you are using Notepad++ to open the file, you can simply change the line-endings by going to "Edit > EOL Conversion > Windows format" and save the file.
    • to fix the code by using contentEqualsIgnoreEOL inside the class SmokeTest (the arguments then need to be wrapped with an InputStreamReader).
    • to skip the tests with mvn clean install -DskipTests=true.

    In my case, I changed the code of the test to ignore the line endings. The rest of the build went fine.