[ https://issues.apache.org/jira/browse/SUREFIRE-2257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17877384#comment-17877384 ]
M.P. Korstanje commented on SUREFIRE-2257: ------------------------------------------ {quote}Interesting case. So the packagelessness causes the issue?{quote} [~michael-o] No, but as a theory it accurate enough. Fundamentally the problem is that a large part of the codebase work with assumptions that were true for JUnit 4 but are no longer true for JUnit 5. [JUnit 5 consists of the JUnit Platform + JUnit Jupiter + JUnit Vintage|https://junit.org/junit5/docs/current/user-guide/#overview-what-is-junit-5]. Here the Platform provides a generic framework for test engines, of which Jupiter, Vintage, Cucumber and other test frameworks are implementations. As a framework the JUnit Platform models tests as a tree of [TestDescriptors with display names|https://junit.org/junit5/docs/current/api/org.junit.platform.engine/org/junit/platform/engine/TestDescriptor.html#getDisplayName()]. Surefire however has to map this tree into a report with only two fields, a class name and name. It does this by taking the names of each leaf node and their parent nodes. And this mostly generally works. Some information is already lost, but given the limited report format there isn't much that can be done here. For example using JUnits {{@Suite}} annotation you can create an arbitrarily large tree of Suites before arriving at an actual test. These suites are omitted from the xml report. Furthermore Surefire Report plugin tries to parse this information with the assumption that it is produced by JUnit 4 or JUnit Jupiter. But as get {{getDisplayName}} notes, it is not suitable for parsing. And Cucumber will provide display names that definitely aren't. Fortunately this the actual names are mostly immaterial to the report. So if their parsing is sufficiently defensive, the report will come out okay I guess. > [REGRESSION] NPEx: Cannot invoke "Object.toString()" because "value" is null > ---------------------------------------------------------------------------- > > Key: SUREFIRE-2257 > URL: https://issues.apache.org/jira/browse/SUREFIRE-2257 > Project: Maven Surefire > Issue Type: Bug > Components: Maven Surefire Report Plugin > Affects Versions: 3.5.0 > Reporter: Piotr Zygielo > Assignee: Michael Osipov > Priority: Major > Fix For: 3.5.1 > > Attachments: 3.4.0-surefire-report.png, screenshot-1.png, > screenshot-2.png, surefire-3.5.0-2-g69c1b46d8.png > > > On upgrading from 3.4.0 to 3.5.0 (so it works fine in 3.4.0), build breaks > with following: > {code} > [ERROR] Failed to execute goal > org.apache.maven.plugins:maven-site-plugin:3.20.0:site (default-site) on > project X: Failed to render site: Error generating > maven-surefire-report-plugin:3.5.0:report-only report: Cannot invoke > "Object.toString()" because "value" is null -> [Help 1] > org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute > goal org.apache.maven.plugins:maven-site-plugin:3.20.0:site (default-site) on > project X: Failed to render site > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 > (MojoExecutor.java:333) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute > (MojoExecutor.java:316) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:212) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:174) > at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 > (MojoExecutor.java:75) > at org.apache.maven.lifecycle.internal.MojoExecutor$1.run > (MojoExecutor.java:162) > at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute > (DefaultMojosExecutionStrategy.java:39) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:159) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:105) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:73) > at > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build > (SingleThreadedBuilder.java:53) > at org.apache.maven.lifecycle.internal.LifecycleStarter.execute > (LifecycleStarter.java:118) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) > at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) > at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) > at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) > at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) > at jdk.internal.reflect.DirectMethodHandleAccessor.invoke > (DirectMethodHandleAccessor.java:103) > at java.lang.reflect.Method.invoke (Method.java:580) > at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced > (Launcher.java:255) > at org.codehaus.plexus.classworlds.launcher.Launcher.launch > (Launcher.java:201) > at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode > (Launcher.java:361) > at org.codehaus.plexus.classworlds.launcher.Launcher.main > (Launcher.java:314) > Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to render > site > at org.apache.maven.plugins.site.render.SiteMojo.execute > (SiteMojo.java:119) > at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo > (DefaultBuildPluginManager.java:126) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 > (MojoExecutor.java:328) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute > (MojoExecutor.java:316) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:212) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:174) > at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 > (MojoExecutor.java:75) > at org.apache.maven.lifecycle.internal.MojoExecutor$1.run > (MojoExecutor.java:162) > at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute > (DefaultMojosExecutionStrategy.java:39) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:159) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:105) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:73) > at > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build > (SingleThreadedBuilder.java:53) > at org.apache.maven.lifecycle.internal.LifecycleStarter.execute > (LifecycleStarter.java:118) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) > at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) > at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) > at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) > at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) > at jdk.internal.reflect.DirectMethodHandleAccessor.invoke > (DirectMethodHandleAccessor.java:103) > at java.lang.reflect.Method.invoke (Method.java:580) > at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced > (Launcher.java:255) > at org.codehaus.plexus.classworlds.launcher.Launcher.launch > (Launcher.java:201) > at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode > (Launcher.java:361) > at org.codehaus.plexus.classworlds.launcher.Launcher.main > (Launcher.java:314) > Caused by: org.apache.maven.doxia.siterenderer.RendererException: Error > generating maven-surefire-report-plugin:3.5.0:report-only report > at > org.apache.maven.plugins.site.render.ReportDocumentRenderer.renderDocument > (ReportDocumentRenderer.java:210) > at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.render > (DefaultSiteRenderer.java:300) > at org.apache.maven.plugins.site.render.SiteMojo.renderNonDoxiaDocuments > (SiteMojo.java:282) > at org.apache.maven.plugins.site.render.SiteMojo.renderLocale > (SiteMojo.java:147) > at org.apache.maven.plugins.site.render.SiteMojo.execute > (SiteMojo.java:112) > at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo > (DefaultBuildPluginManager.java:126) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 > (MojoExecutor.java:328) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute > (MojoExecutor.java:316) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:212) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:174) > at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 > (MojoExecutor.java:75) > at org.apache.maven.lifecycle.internal.MojoExecutor$1.run > (MojoExecutor.java:162) > at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute > (DefaultMojosExecutionStrategy.java:39) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:159) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:105) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:73) > at > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build > (SingleThreadedBuilder.java:53) > at org.apache.maven.lifecycle.internal.LifecycleStarter.execute > (LifecycleStarter.java:118) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) > at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) > at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) > at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) > at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) > at jdk.internal.reflect.DirectMethodHandleAccessor.invoke > (DirectMethodHandleAccessor.java:103) > at java.lang.reflect.Method.invoke (Method.java:580) > at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced > (Launcher.java:255) > at org.codehaus.plexus.classworlds.launcher.Launcher.launch > (Launcher.java:201) > at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode > (Launcher.java:361) > at org.codehaus.plexus.classworlds.launcher.Launcher.main > (Launcher.java:314) > Caused by: java.lang.NullPointerException: Cannot invoke "Object.toString()" > because "value" is null > at org.apache.maven.doxia.sink.impl.SinkUtils.getAttributeString > (SinkUtils.java:188) > at org.apache.maven.doxia.sink.impl.AbstractXmlSink.writeStartTag > (AbstractXmlSink.java:126) > at org.apache.maven.doxia.sink.impl.Xhtml5BaseSink.writeStartTag > (Xhtml5BaseSink.java:1647) > at org.apache.maven.doxia.sink.impl.AbstractXmlSink.writeStartTag > (AbstractXmlSink.java:95) > at org.apache.maven.doxia.sink.impl.Xhtml5BaseSink.anchor > (Xhtml5BaseSink.java:1204) > at org.apache.maven.doxia.sink.impl.AbstractSink.anchor > (AbstractSink.java:354) > at org.apache.maven.reporting.AbstractMavenReportRenderer.startSection > (AbstractMavenReportRenderer.java:132) > at org.apache.maven.reporting.AbstractMavenReportRenderer.startSection > (AbstractMavenReportRenderer.java:116) > at > org.apache.maven.plugins.surefire.report.SurefireReportRenderer.renderSectionPackages > (SurefireReportRenderer.java:220) > at > org.apache.maven.plugins.surefire.report.SurefireReportRenderer.renderBody > (SurefireReportRenderer.java:119) > at org.apache.maven.reporting.AbstractMavenReportRenderer.render > (AbstractMavenReportRenderer.java:93) > at > org.apache.maven.plugins.surefire.report.AbstractSurefireReport.executeReport > (AbstractSurefireReport.java:159) > at org.apache.maven.reporting.AbstractMavenReport.generate > (AbstractMavenReport.java:354) > at > org.apache.maven.plugins.site.render.ReportDocumentRenderer.renderDocument > (ReportDocumentRenderer.java:199) > at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.render > (DefaultSiteRenderer.java:300) > at org.apache.maven.plugins.site.render.SiteMojo.renderNonDoxiaDocuments > (SiteMojo.java:282) > at org.apache.maven.plugins.site.render.SiteMojo.renderLocale > (SiteMojo.java:147) > at org.apache.maven.plugins.site.render.SiteMojo.execute > (SiteMojo.java:112) > at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo > (DefaultBuildPluginManager.java:126) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 > (MojoExecutor.java:328) > at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute > (MojoExecutor.java:316) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:212) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:174) > at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 > (MojoExecutor.java:75) > at org.apache.maven.lifecycle.internal.MojoExecutor$1.run > (MojoExecutor.java:162) > at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute > (DefaultMojosExecutionStrategy.java:39) > at org.apache.maven.lifecycle.internal.MojoExecutor.execute > (MojoExecutor.java:159) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:105) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject > (LifecycleModuleBuilder.java:73) > at > org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build > (SingleThreadedBuilder.java:53) > at org.apache.maven.lifecycle.internal.LifecycleStarter.execute > (LifecycleStarter.java:118) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) > at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) > at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) > at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) > at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) > at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) > at jdk.internal.reflect.DirectMethodHandleAccessor.invoke > (DirectMethodHandleAccessor.java:103) > at java.lang.reflect.Method.invoke (Method.java:580) > at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced > (Launcher.java:255) > at org.codehaus.plexus.classworlds.launcher.Launcher.launch > (Launcher.java:201) > at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode > (Launcher.java:361) > at org.codehaus.plexus.classworlds.launcher.Launcher.main > (Launcher.java:314) > {code} > maven 3.9.3, jdk 21 > {code} > # only skipped commits left to test > # possible first bad commit: [05e4681f38f53c2a54b7671291ca02dc63586a98] > [SUREFIRE-2227] Dynamically calculate xrefTestLocation > # possible first bad commit: [f1a419a1457e5a83f9deb07a700a1376487f72ed] > [SUREFIRE-2228] Upgrade to Doxia 2.0.0 Milestone Stack > {code} > (f1a419a1 failed to compile) -- This message was sent by Atlassian Jira (v8.20.10#820010)