RAT-228: Fix broken Ant integration tests

Make tests more deterministic and fix matcher setup.
Thanks to Romain Manni-Bucau


git-svn-id: https://svn.apache.org/repos/asf/creadur/rat/trunk@1842757 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/apache-rat-plugin/src/test/java/org/apache/rat/mp/RatCheckMojoTest.java b/apache-rat-plugin/src/test/java/org/apache/rat/mp/RatCheckMojoTest.java
index 4e6e915..bfa2490 100644
--- a/apache-rat-plugin/src/test/java/org/apache/rat/mp/RatCheckMojoTest.java
+++ b/apache-rat-plugin/src/test/java/org/apache/rat/mp/RatCheckMojoTest.java
@@ -42,6 +42,7 @@
 import static org.apache.rat.mp.RatTestHelpers.newArtifactResolver;
 import static org.apache.rat.mp.RatTestHelpers.newSiteRenderer;
 import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
 
 /**
  * Test case for the {@link RatCheckMojo} and {@link RatReportMojo}.
@@ -233,23 +234,23 @@
             assertFalse("no null allowed in '" + msg + "'", (msg.toUpperCase()
                     .contains("NULL")));
         }
+        assertTrue(ratTxtFile.exists());
         DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
         FileInputStream fis = new FileInputStream(ratTxtFile);
-        boolean documentParsed = false;
         try {
             Document doc = db.parse(fis);
-            boolean byteSequencePresent = doc.getElementsByTagName("header-sample")
-                    .item(0)
-                    .getTextContent()
-                    .contains("\u00E4\u00F6\u00FC\u00C4\u00D6\u00DC\u00DF");
-            assertTrue("Report should contain test umlauts", byteSequencePresent);
-            documentParsed = true;
+            NodeList headerSample = doc.getElementsByTagName("header-sample");
+            String textContent = headerSample.item(0).getTextContent();
+            if (textContent.length() == 0) { // can be the pom since this test will parse 2 files but the pom is "ok"
+                textContent = headerSample.item(1).getTextContent();
+            }
+            boolean byteSequencePresent = textContent.contains("\u00E4\u00F6\u00FC\u00C4\u00D6\u00DC\u00DF");
+            assertTrue("Report should contain test umlauts, got '" + textContent + "'", byteSequencePresent);
         } catch (Exception ex) {
-            documentParsed = false;
+            fail("Report file could not be parsed as XML: " + ex.getMessage());
         } finally {
             fis.close();
         }
-        assertTrue("Report file could not be parsed as XML", documentParsed);
     }
 
 
diff --git a/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/Report.java b/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/Report.java
index b27f83a..46b9d26 100644
--- a/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/Report.java
+++ b/apache-rat-tasks/src/main/java/org/apache/rat/anttasks/Report.java
@@ -292,14 +292,13 @@
      * required) into a single array.
      */
     private List<IHeaderMatcher> getLicenseMatchers() {
-        List<IHeaderMatcher> matchers = new ArrayList<IHeaderMatcher>(Defaults.DEFAULT_MATCHERS);
+        List<IHeaderMatcher> matchers = new ArrayList<IHeaderMatcher>(
+        (addDefaultLicenseMatchers ? Defaults.DEFAULT_MATCHERS.size() : 0) + licenseMatchers.size());
         if (addDefaultLicenseMatchers) {
-            int nestedSize = licenseMatchers.size();
-            if (nestedSize != 0) {
-                matchers.addAll(licenseMatchers);
-            }
+            matchers.addAll(Defaults.DEFAULT_MATCHERS);
+            matchers.addAll(licenseMatchers);
         } else {
-            matchers = new ArrayList<IHeaderMatcher>();
+            matchers = new ArrayList<IHeaderMatcher>(licenseMatchers);
         }
         return matchers;
     }
diff --git a/apache-rat-tasks/src/test/resources/antunit/report-normal-operation.xml b/apache-rat-tasks/src/test/resources/antunit/report-normal-operation.xml
index 2be61e6..88de39d 100644
--- a/apache-rat-tasks/src/test/resources/antunit/report-normal-operation.xml
+++ b/apache-rat-tasks/src/test/resources/antunit/report-normal-operation.xml
@@ -330,7 +330,7 @@
 }
 ]]></echo>
     <javac srcdir="${output.dir}/src" destdir="${output.dir}/dest"
-           classpath="${test.classpath}"/>
+           classpath="${test.classpath}" fork="true"/>
     <typedef name="exmpl" classname="org.example.Matcher"
              classpathref="all-classes-needed-for-tests"
              loaderref="testloader"/>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 4338d5c..d5ea3eb 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -55,6 +55,9 @@
 
   <body>
     <release version="0.13" date="2018-xx-xx" description="Current SNAPSHOT - to be done">
+      <action issue="RAT-228" type="add" due-to="Romain Manni-Bucau" dev="pottlinger">
+        Fixing broken Ant unit test setup and making tests run more deterministic.
+      </action>
       <action issue="RAT-245" type="add" dev="pottlinger">
         Update to latest available and compatible Apache ANT 1.9.12 to get bugfixes and newer JDK support.
       </action>