This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch SUREFIRE-1590
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit 8cb66ae33c19ff1e750919434c2f0b260d9047da
Author: Tibor17 <tibordig...@apache.org>
AuthorDate: Sat Nov 24 19:50:47 2018 +0100

    [SUREFIRE-1590] Deploy multiple versions of Report XSD
---
 maven-failsafe-plugin/pom.xml                      |  8 ++-
 .../maven/plugin/failsafe/IntegrationTestMojo.java |  2 +-
 .../surefire/report/StatelessXmlReporter.java      |  1 +
 .../surefire/report/StatelessXmlReporterTest.java  |  2 +-
 maven-surefire-plugin/pom.xml                      | 18 ++++++
 .../maven/plugin/surefire/SurefirePlugin.java      |  2 +-
 maven-surefire-plugin/src/site/apt/index.apt.vm    |  9 ++-
 ...-report.xsd => legacy-surefire-test-report.xsd} | 66 +++++++++++-----------
 ...est-report.xsd => surefire-test-report-3.0.xsd} |  2 +-
 .../report/SurefireSchemaValidationTest.java       |  2 +-
 10 files changed, 69 insertions(+), 43 deletions(-)

diff --git a/maven-failsafe-plugin/pom.xml b/maven-failsafe-plugin/pom.xml
index dad6c41..8319cba 100644
--- a/maven-failsafe-plugin/pom.xml
+++ b/maven-failsafe-plugin/pom.xml
@@ -166,7 +166,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-antrun-plugin</artifactId>
-                <version>1.8</version>
                 <executions>
                     <execution>
                         <id>generate-test-report</id>
@@ -175,8 +174,11 @@
                             <goal>run</goal>
                         </goals>
                         <configuration>
-                            <target name="generate-failsafe-test-report">
-                                <move 
file="${project.build.directory}/source-site/resources/xsd/surefire-test-report.xsd"
 
tofile="${project.build.directory}/source-site/resources/xsd/failsafe-test-report.xsd"
 />
+                            <target name="generate-failsafe-test-reports">
+                                <move 
file="${project.build.directory}/source-site/resources/xsd/surefire-test-report-3.0.xsd"
+                                      
tofile="${project.build.directory}/source-site/resources/xsd/failsafe-test-report-3.0.xsd"/>
+                                <move 
file="${project.build.directory}/source-site/resources/xsd/legacy-surefire-test-report.xsd"
+                                      
tofile="${project.build.directory}/source-site/resources/xsd/failsafe-test-report.xsd"/>
                             </target>
                         </configuration>
                     </execution>
diff --git 
a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
 
b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
index edc95c4..ebd1fb6 100644
--- 
a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
+++ 
b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
@@ -451,7 +451,7 @@ public class IntegrationTestMojo
     @Override
     protected String getReportSchemaLocation()
     {
-        return 
"https://maven.apache.org/surefire/maven-failsafe-plugin/xsd/failsafe-test-report.xsd";;
+        return 
"https://maven.apache.org/surefire/maven-failsafe-plugin/xsd/failsafe-test-report-3.0.xsd";;
     }
 
     @Override
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java
index 0f2b7e9..b89c4e9 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java
@@ -355,6 +355,7 @@ public class StatelessXmlReporter
 
         ppw.addAttribute( "xmlns:xsi", 
"http://www.w3.org/2001/XMLSchema-instance"; );
         ppw.addAttribute( "xsi:noNamespaceSchemaLocation", xsdSchemaLocation );
+        ppw.addAttribute( "version", "3.0" );
 
         ppw.addAttribute( "name", report.getReportName( reportNameSuffix ) );
 
diff --git 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
index 6cb5ba7..6e6f3d5 100644
--- 
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
+++ 
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporterTest.java
@@ -46,7 +46,7 @@ public class StatelessXmlReporterTest
     extends TestCase
 {
     private static final String XSD =
-            
"https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd";;
+            
"https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd";;
     private final static String TEST_ONE = "aTestMethod";
     private final static String TEST_TWO = "bTestMethod";
     private final static String TEST_THREE = "cTestMethod";
diff --git a/maven-surefire-plugin/pom.xml b/maven-surefire-plugin/pom.xml
index 43a53bf..9fb9c2a 100644
--- a/maven-surefire-plugin/pom.xml
+++ b/maven-surefire-plugin/pom.xml
@@ -110,6 +110,24 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>generate-test-report</id>
+                        <phase>site</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <target 
name="generate-legacy-surefire-test-report">
+                                <move 
file="${project.build.directory}/site/xsd/legacy-surefire-test-report.xsd"
+                                      
tofile="${project.build.directory}/site/xsd/surefire-test-report.xsd"/>
+                            </target>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
diff --git 
a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
 
b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
index 6c86801..fdc758a 100644
--- 
a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
+++ 
b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
@@ -394,7 +394,7 @@ public class SurefirePlugin
     @Override
     protected String getReportSchemaLocation()
     {
-        return 
"https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd";;
+        return 
"https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd";;
     }
     
     // now for the implementation of the field accessors
diff --git a/maven-surefire-plugin/src/site/apt/index.apt.vm 
b/maven-surefire-plugin/src/site/apt/index.apt.vm
index 7482ae6..71be8f1 100644
--- a/maven-surefire-plugin/src/site/apt/index.apt.vm
+++ b/maven-surefire-plugin/src/site/apt/index.apt.vm
@@ -84,7 +84,14 @@ mvn verify
   By default, these files are generated in 
<<<$\{basedir\}/target/${thisPlugin.toLowerCase()}-reports/TEST-*.xml>>>.
 
   The schema for the ${thisPlugin} XML reports is available at
-  {{{./xsd/${thisPlugin.toLowerCase()}-test-report.xsd}${thisPlugin} XML 
Report Schema}}.
+  {{{./xsd/${thisPlugin.toLowerCase()}-test-report-3.0.xsd}${thisPlugin} XML 
Report Schema}}.
+
+  The XML reports generated by legacy plugins (versions up to 2.22.0) should 
be validated by
+  {{{./xsd/${thisPlugin.toLowerCase()}-test-report.xsd}Legacy ${thisPlugin} 
XML Report Schema}}.
+
+  Two plugin versions (2.22.1 and 3.0.0-M1) however generate 3.0 XML reports 
they still refer to legacy
+  schema (see <<<noNamespaceSchemaLocation>>> in XML Report). The projects 
which expect XML Reports
+  validated by XSD Schema, tools e.g NUnit, should not use versions 2.22.1 and 
3.0.0-M1 of the ${thisPlugin}.
 
   For an HTML format of the report, please see the
   {{{http://maven.apache.org/plugins/maven-surefire-report-plugin/}Maven 
Surefire Report Plugin}}.
diff --git 
a/maven-surefire-plugin/src/site/resources/xsd/surefire-test-report.xsd 
b/maven-surefire-plugin/src/site/resources/xsd/legacy-surefire-test-report.xsd
similarity index 65%
copy from maven-surefire-plugin/src/site/resources/xsd/surefire-test-report.xsd
copy to 
maven-surefire-plugin/src/site/resources/xsd/legacy-surefire-test-report.xsd
index 898bb86..684f175 100644
--- a/maven-surefire-plugin/src/site/resources/xsd/surefire-test-report.xsd
+++ 
b/maven-surefire-plugin/src/site/resources/xsd/legacy-surefire-test-report.xsd
@@ -47,30 +47,30 @@
                                         <xs:extension base="xs:string">
                                             <xs:attribute name="message" 
type="xs:string"/>
                                             <xs:attribute name="type" 
type="xs:string" use="required"/>
+                                            <xs:attribute name="time" 
type="SUREFIRE_TIME" />
                                         </xs:extension>
                                     </xs:simpleContent>
                                 </xs:complexType>
                             </xs:element>
-                            <xs:element name="rerunFailure" minOccurs="0" 
maxOccurs="unbounded">
+                            <xs:element name="rerunFailure" nillable="true" 
minOccurs="0" maxOccurs="unbounded">
                                 <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="stackTrace" 
type="xs:string"/>
-                                        <xs:element name="system-out" 
type="xs:string" minOccurs="0"/>
-                                        <xs:element name="system-err" 
type="xs:string" minOccurs="0"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="message" 
type="xs:string"/>
-                                    <xs:attribute name="type" type="xs:string" 
use="required"/>
+                                    <xs:simpleContent>
+                                        <xs:extension base="xs:string">
+                                            <xs:attribute name="message" 
type="xs:string"/>
+                                            <xs:attribute name="type" 
type="xs:string" use="required"/>
+                                            <xs:attribute name="time" 
type="SUREFIRE_TIME" />
+                                        </xs:extension>
+                                    </xs:simpleContent>
                                 </xs:complexType>
                             </xs:element>
-                            <xs:element name="flakyFailure" minOccurs="0" 
maxOccurs="unbounded">
+                            <xs:element name="flakyFailure" nillable="true" 
minOccurs="0" maxOccurs="unbounded">
                                 <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="stackTrace" 
type="xs:string"/>
-                                        <xs:element name="system-out" 
type="xs:string" minOccurs="0"/>
-                                        <xs:element name="system-err" 
type="xs:string" minOccurs="0"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="message" 
type="xs:string"/>
-                                    <xs:attribute name="type" type="xs:string" 
use="required"/>
+                                    <xs:simpleContent>
+                                        <xs:extension base="xs:string">
+                                            <xs:attribute name="message" 
type="xs:string"/>
+                                            <xs:attribute name="type" 
type="xs:string" use="required"/>
+                                            <xs:attribute name="time" 
type="SUREFIRE_TIME" />                                        </xs:extension>
+                                    </xs:simpleContent>
                                 </xs:complexType>
                             </xs:element>
                             <xs:element name="skipped" nillable="true" 
minOccurs="0" maxOccurs="1">
@@ -92,30 +92,28 @@
                                     </xs:simpleContent>
                                 </xs:complexType>
                             </xs:element>
-                            <xs:element name="rerunError" minOccurs="0" 
maxOccurs="unbounded">
+                            <xs:element name="rerunError" nillable="true" 
minOccurs="0" maxOccurs="unbounded">
                                 <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="stackTrace" 
type="xs:string"/>
-                                        <xs:element name="system-out" 
type="xs:string" minOccurs="0"/>
-                                        <xs:element name="system-err" 
type="xs:string" minOccurs="0"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="message" 
type="xs:string"/>
-                                    <xs:attribute name="type" type="xs:string" 
use="required"/>
+                                    <xs:simpleContent>
+                                        <xs:extension base="xs:string">
+                                            <xs:attribute name="message" 
type="xs:string"/>
+                                            <xs:attribute name="type" 
type="xs:string" use="required"/>
+                                            <xs:attribute name="time" 
type="SUREFIRE_TIME" />                                        </xs:extension>
+                                    </xs:simpleContent>
                                 </xs:complexType>
                             </xs:element>
-                            <xs:element name="flakyError" minOccurs="0" 
maxOccurs="unbounded">
+                            <xs:element name="flakyError" nillable="true" 
minOccurs="0" maxOccurs="unbounded">
                                 <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element name="stackTrace" 
type="xs:string"/>
-                                        <xs:element name="system-out" 
type="xs:string" minOccurs="0"/>
-                                        <xs:element name="system-err" 
type="xs:string" minOccurs="0"/>
-                                    </xs:sequence>
-                                    <xs:attribute name="message" 
type="xs:string"/>
-                                    <xs:attribute name="type" type="xs:string" 
use="required"/>
+                                    <xs:simpleContent>
+                                        <xs:extension base="xs:string">
+                                            <xs:attribute name="message" 
type="xs:string"/>
+                                            <xs:attribute name="type" 
type="xs:string" use="required"/>
+                                            <xs:attribute name="time" 
type="SUREFIRE_TIME" />                                        </xs:extension>
+                                    </xs:simpleContent>
                                 </xs:complexType>
                             </xs:element>
-                            <xs:element name="system-out" type="xs:string" 
minOccurs="0"/>
-                            <xs:element name="system-err" type="xs:string" 
minOccurs="0"/>
+                            <xs:element name="system-out" nillable="true" 
minOccurs="0" maxOccurs="1"/>
+                            <xs:element name="system-err" nillable="true" 
minOccurs="0" maxOccurs="1"/>
                         </xs:sequence>
                         <xs:attribute name="name" type="xs:string" 
use="required"/>
                         <xs:attribute name="classname" type="xs:string"/>
diff --git 
a/maven-surefire-plugin/src/site/resources/xsd/surefire-test-report.xsd 
b/maven-surefire-plugin/src/site/resources/xsd/surefire-test-report-3.0.xsd
similarity index 99%
rename from 
maven-surefire-plugin/src/site/resources/xsd/surefire-test-report.xsd
rename to 
maven-surefire-plugin/src/site/resources/xsd/surefire-test-report-3.0.xsd
index 898bb86..81b08f4 100644
--- a/maven-surefire-plugin/src/site/resources/xsd/surefire-test-report.xsd
+++ b/maven-surefire-plugin/src/site/resources/xsd/surefire-test-report-3.0.xsd
@@ -17,7 +17,7 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; version="3.0">
     <xs:simpleType name="SUREFIRE_TIME">
         <xs:restriction base="xs:string">
             <xs:pattern 
value="(([0-9]{0,3},)*[0-9]{3}|[0-9]{0,3})*(\.[0-9]{0,3})?"/>
diff --git 
a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireSchemaValidationTest.java
 
b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireSchemaValidationTest.java
index c51887d..008f206 100644
--- 
a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireSchemaValidationTest.java
+++ 
b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireSchemaValidationTest.java
@@ -94,7 +94,7 @@ public class SurefireSchemaValidationTest
     {
         // get the schema file placed in a different module
         Path xsd = Paths.get( basedir.getAbsolutePath(), "..", "..", "..", 
"maven-surefire-plugin", "src", "site",
-                              "resources", "xsd", "surefire-test-report.xsd" );
+                              "resources", "xsd", 
"surefire-test-report-3.0.xsd" );
         return xsd.toFile().getCanonicalFile();
     }
 }

Reply via email to