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

claude pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/creadur-rat.git


The following commit(s) were added to refs/heads/master by this push:
     new 5066aa0c RAT-98: converted to assertj (#438)
5066aa0c is described below

commit 5066aa0c74be905558ce3f654c478d440626ea7d
Author: Claude Warren <[email protected]>
AuthorDate: Fri Feb 7 09:22:17 2025 +0100

    RAT-98: converted to assertj (#438)
    
    * converted to assertj
    
    * Disabled gitignore tests
    
    ---------
    
    Co-authored-by: P. Ottlinger <[email protected]>
---
 .../org/apache/rat/ReportConfigurationTest.java    | 109 +++---
 .../org/apache/rat/document/FileDocumentTest.java  |  33 +-
 .../java/org/apache/rat/mp/RatCheckMojoTest.java   | 388 ++++++++++-----------
 .../resources/unit/RAT-335-GitIgnore/.gitignore    |   7 -
 .../unit/RAT-335-GitIgnore/dir1/.gitignore         |   3 -
 .../resources/unit/RAT-335-GitIgnore/dir1/dir1.txt |   1 -
 .../unit/RAT-335-GitIgnore/dir1/file1.log          |   1 -
 .../resources/unit/RAT-335-GitIgnore/dir2/dir2.md  |   1 -
 .../resources/unit/RAT-335-GitIgnore/dir3/dir3.log |   1 -
 .../test/resources/unit/RAT-335-GitIgnore/root.md  |   1 -
 .../unit/{RAT-335-GitIgnore => RAT-335}/README.txt |   0
 .../{RAT-335-GitIgnore => RAT-335}/dir1/dir1.md    |   0
 .../{RAT-335-GitIgnore => RAT-335}/dir2/dir2.txt   |   0
 .../{RAT-335-GitIgnore => RAT-335}/dir3/file3.log  |   0
 .../invoker.properties                             |   0
 .../unit/{RAT-335-GitIgnore => RAT-335}/pom.xml    |   0
 .../resources/unit/RAT-362-GitIgnore/.gitignore    |   2 -
 .../test/resources/unit/RAT-362-GitIgnore/foo.md   |   1 -
 .../unit/{RAT-362-GitIgnore => RAT-362}/bar.md     |   0
 .../invoker.properties                             |   0
 .../unit/{RAT-362-GitIgnore => RAT-362}/pom.xml    |   1 +
 .../src/test/resources/unit/it3/pom.xml            |   1 +
 22 files changed, 270 insertions(+), 280 deletions(-)

diff --git 
a/apache-rat-core/src/test/java/org/apache/rat/ReportConfigurationTest.java 
b/apache-rat-core/src/test/java/org/apache/rat/ReportConfigurationTest.java
index 327aa905..8ff47a28 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/ReportConfigurationTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/ReportConfigurationTest.java
@@ -19,10 +19,7 @@
 package org.apache.rat;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -89,12 +86,15 @@ public class ReportConfigurationTest {
 
     @Test
     public void testAddIncludedFilter() {
+        DocumentName dirName = DocumentName.builder(tempDir).build();
         underTest.addExcludedFilter(DirectoryFileFilter.INSTANCE);
-        DocumentNameMatcher exlcuder = 
underTest.getDocumentExcluder(DocumentName.builder(new 
File(File.separator)).build());
-        assertEquals("not(DirectoryFileFilter)", exlcuder.toString());
-        assertFalse(exlcuder.matches(DocumentName.builder(tempDir).build()));
+        DocumentNameMatcher excluder = underTest.getDocumentExcluder(dirName);
+
+        assertThat(excluder.toString()).isEqualTo("not(DirectoryFileFilter)");
+        
assertThat(excluder.matches(DocumentName.builder(tempDir).build())).isFalse();
+
         File f = new File(tempDir, "foo.txt");
-        assertTrue(exlcuder.matches(DocumentName.builder(f).build()));
+        assertThat(excluder.matches(DocumentName.builder(f).build())).isTrue();
     }
 
     @Test
@@ -103,17 +103,16 @@ public class ReportConfigurationTest {
         ILicenseFamily fam2 = 
ILicenseFamily.builder().setLicenseFamilyCategory("BAR").setLicenseFamilyName("big
 and round").build();
         underTest.addFamilies(Arrays.asList(fam1, fam2));
         SortedSet<String> result = underTest.getLicenseIds(LicenseFilter.ALL);
-        assertTrue(result.contains(ILicenseFamily.makeCategory("FOO")), 
"Missing FOO");
-        assertTrue(result.contains(ILicenseFamily.makeCategory("BAR")), 
"Missing BAR");
-        assertEquals(2, result.size());
+        assertThat(result).contains(ILicenseFamily.makeCategory("FOO"));
+        assertThat(result).contains(ILicenseFamily.makeCategory("BAR"));
+        assertThat(result).hasSize(2);
     }
 
     @Test
     public void testAddApprovedLicenseId() {
         underTest.addApprovedLicenseId("FOO");
         SortedSet<String> result = 
underTest.getLicenseIds(LicenseFilter.APPROVED);
-        assertTrue(result.contains("FOO"));
-        assertEquals(1, result.size());
+        assertThat(result).hasSize(1).contains("FOO");
     }
     @Test
     public void testAddAndRemoveApproveLicenseCategories() {
@@ -366,27 +365,28 @@ public class ReportConfigurationTest {
     @Test
     public void exclusionTest() {
         DocumentName baseDir = DocumentName.builder(tempDir).build();
-        
assertTrue(underTest.getDocumentExcluder(baseDir).matches(mkDocumentName(new 
File(tempDir,"foo"))));
-        
assertTrue(underTest.getDocumentExcluder(baseDir).matches(mkDocumentName(new 
File("foo"))));
+        DocumentName foo = mkDocumentName(new File(tempDir,"foo"));
+        
assertThat(underTest.getDocumentExcluder(baseDir).matches(foo)).isTrue();
 
         underTest.setFrom(Defaults.builder().build());
 
         File f = new File(tempDir, ".hiddenDir");
-        assertTrue(f.mkdir(), () -> "Could not create directory " + f);
-
-        
assertFalse(underTest.getDocumentExcluder(baseDir).matches(mkDocumentName(new 
File(tempDir, ".hiddenDir"))));
+        assertThat(f.mkdir()).as(() -> "Could not create directory " + 
f).isTrue();
+        DocumentName hiddenDir = mkDocumentName(new File(tempDir, 
".hiddenDir"));
+        DocumentNameMatcher excluder = underTest.getDocumentExcluder(baseDir);
+        assertThat(excluder.matches(hiddenDir)).isFalse();
 
         underTest.addIncludedCollection(StandardCollection.HIDDEN_DIR);
-        
assertTrue(underTest.getDocumentExcluder(baseDir).matches(mkDocumentName(new 
File(tempDir, ".hiddenDir"))));
+        
assertThat(underTest.getDocumentExcluder(baseDir).matches(hiddenDir)).isTrue();
 
         underTest.addExcludedCollection(StandardCollection.HIDDEN_DIR);
-        
assertTrue(underTest.getDocumentExcluder(baseDir).matches(mkDocumentName(new 
File(tempDir, ".hiddenDir"))));
+        
assertThat(underTest.getDocumentExcluder(baseDir).matches(hiddenDir)).isTrue();
 
         underTest.addExcludedFilter(DirectoryFileFilter.DIRECTORY);
 
         File file = new File(tempDir, "newDir");
-        assertTrue(file.mkdirs(), () -> "Could not create directory " + file);
-        
assertFalse(underTest.getDocumentExcluder(baseDir).matches(mkDocumentName(file)));
+        assertThat(file.mkdirs()).as(() -> "Could not create directory " + 
file).isTrue();
+        
assertThat(underTest.getDocumentExcluder(baseDir).matches(mkDocumentName(file))).isFalse();
     }
 
     @Test
@@ -471,8 +471,8 @@ public class ReportConfigurationTest {
         IReportable reportable = mock(IReportable.class);
         underTest.addSource(reportable);
         assertThat(underTest.hasSource()).isTrue();
-        Exception thrown = assertThrows(ConfigurationException.class, () -> 
underTest.addSource((IReportable)null));
-        assertThat(thrown.getMessage()).contains("Reportable may not be 
null.");
+        assertThatThrownBy(() -> 
underTest.addSource((IReportable)null)).isExactlyInstanceOf(ConfigurationException.class)
+                .hasMessageContaining("Reportable may not be null.");
     }
 
     @Test
@@ -517,18 +517,17 @@ public class ReportConfigurationTest {
     public void testValidate() {
         final StringBuilder sb = new StringBuilder();
         String msg = "At least one source must be specified";
-        Exception thrown = assertThrows(ConfigurationException.class,
-                () -> underTest.validate(sb::append));
-        assertThat(thrown.getMessage()).isEqualTo(msg);
+        assertThatThrownBy(() -> 
underTest.validate(sb::append)).isExactlyInstanceOf(ConfigurationException.class)
+                .hasMessageContaining(msg);
         assertThat(sb.toString()).isEqualTo(msg);
 
 
         sb.setLength(0);
         msg = "You must specify at least one license";
         underTest.addSource(mock(IReportable.class));
-        thrown = assertThrows(ConfigurationException.class,
-                () -> underTest.validate(sb::append));
-        assertThat(thrown.getMessage()).isEqualTo(msg);
+
+        assertThatThrownBy(() -> 
underTest.validate(sb::append)).isExactlyInstanceOf(ConfigurationException.class)
+                .hasMessageContaining(msg);
         assertThat(sb.toString()).isEqualTo(msg);
 
         sb.setLength(0);
@@ -544,10 +543,12 @@ public class ReportConfigurationTest {
             config.setOut(() -> osi);
             assertThat(osi.closeCount).isEqualTo(0);
             try (OutputStream os = config.getOutput().get()) {
+                assertThat(os).isNotNull();
                 assertThat(osi.closeCount).isEqualTo(0);
             }
             assertThat(osi.closeCount).isEqualTo(1);
             try (OutputStream os = config.getOutput().get()) {
+                assertThat(os).isNotNull();
                 assertThat(osi.closeCount).isEqualTo(1);
             }
             assertThat(osi.closeCount).isEqualTo(2);
@@ -558,45 +559,48 @@ public class ReportConfigurationTest {
     public void logFamilyCollisionTest() {
         // setup
         
underTest.addFamily(ILicenseFamily.builder().setLicenseFamilyCategory("CAT").setLicenseFamilyName("name"));
-        assertFalse(log.getCaptured().contains("CAT"));
+        assertThat(log.getCaptured()).doesNotContain("CAT");
        
         // verify default collision logs WARNING
         
underTest.addFamily(ILicenseFamily.builder().setLicenseFamilyCategory("CAT").setLicenseFamilyName("name2"));
-        assertTrue(log.getCaptured().contains("WARN"), "default value not 
WARN");
-        assertTrue(log.getCaptured().contains("CAT"), "'CAT' not found");
+        assertThat(log.getCaptured().contains("WARN")).as("default value not 
WARN").isTrue();
+        assertThat(log.getCaptured().contains("CAT")).as("'CAT' not 
found").isTrue();
         
         // verify level setting works.
         for (Level l : Level.values()) {
           log.clear();
           underTest.logFamilyCollisions(l);
           
underTest.addFamily(ILicenseFamily.builder().setLicenseFamilyCategory("CAT").setLicenseFamilyName("name2"));
-          assertTrue(log.getCaptured().contains("CAT"), "'CAT' not found");
-          assertTrue(log.getCaptured().contains(l.name()), "logging not set to 
"+l);
+          assertThat(log.getCaptured().contains("CAT")).as("'CAT' not 
found").isTrue();
+          assertThat(log.getCaptured().contains(l.name())).as("logging not set 
to "+l).isTrue();
         }
     }
     
     @Test
     public void familyDuplicateOptionsTest() {
         
underTest.addFamily(ILicenseFamily.builder().setLicenseFamilyCategory("CAT").setLicenseFamilyName("name"));
-        assertFalse(log.getCaptured().contains("CAT"));
+        assertThat(log.getCaptured()).doesNotContain("CAT");
         
         // verify default second setting ignores change
         
underTest.addFamily(ILicenseFamily.builder().setLicenseFamilyCategory("CAT").setLicenseFamilyName("name2"));
-        assertTrue(log.getCaptured().contains("CAT"));
-        assertEquals("name", 
underTest.getLicenseFamilies(LicenseFilter.ALL).stream()
-                .filter(s -> s.getFamilyCategory().equals("CAT  
")).map(ILicenseFamily::getFamilyName).findFirst().get());
+        assertThat(log.getCaptured()).contains("CAT");
+        assertThat(underTest.getLicenseFamilies(LicenseFilter.ALL).stream()
+                .filter(s -> s.getFamilyCategory().equals("CAT  
")).map(ILicenseFamily::getFamilyName).findFirst())
+                .contains("name");
         
         underTest.familyDuplicateOption(Options.OVERWRITE);
         // verify second setting ignores change
         
underTest.addFamily(ILicenseFamily.builder().setLicenseFamilyCategory("CAT").setLicenseFamilyName("name2"));
-        assertTrue(log.getCaptured().contains("CAT"));
-        assertEquals("name2", 
underTest.getLicenseFamilies(LicenseFilter.ALL).stream()
-                .filter(s -> s.getFamilyCategory().equals("CAT  
")).map(ILicenseFamily::getFamilyName).findFirst().get());
+        assertThat(log.getCaptured()).contains("CAT");
+        assertThat(underTest.getLicenseFamilies(LicenseFilter.ALL).stream()
+                .filter(s -> s.getFamilyCategory().equals("CAT  
")).map(ILicenseFamily::getFamilyName).findFirst())
+                .contains("name2");
 
         // verify fail throws exception
         underTest.familyDuplicateOption(Options.FAIL);
-        assertThrows( IllegalArgumentException.class, 
()->underTest.addFamily(ILicenseFamily.builder().setLicenseFamilyCategory("CAT").setLicenseFamilyName("name2")));
-  
+        
assertThatThrownBy(()->underTest.addFamily(ILicenseFamily.builder().setLicenseFamilyCategory("CAT").setLicenseFamilyName("name2")))
+                .isExactlyInstanceOf(IllegalArgumentException.class);
+
         underTest.familyDuplicateOption(Options.IGNORE);
     }
 
@@ -616,7 +620,7 @@ public class ReportConfigurationTest {
         underTest.addLicense(ILicense.builder().setId("ID").setName("license 
name2").setFamily(family.getFamilyCategory())
                 .setMatcher( matcher 
).setLicenseFamilies(underTest.getLicenseFamilies(LicenseFilter.ALL))
                 .build());
-        assertTrue(log.getCaptured().contains("WARN"));
+        assertThat(log.getCaptured()).contains("WARN");
         
         log.clear();
         underTest.logLicenseCollisions(Level.ERROR);
@@ -625,7 +629,7 @@ public class ReportConfigurationTest {
         underTest.addLicense(ILicense.builder().setId("ID").setName("license 
name2").setFamily(family.getFamilyCategory())
                 .setMatcher( matcher 
).setLicenseFamilies(underTest.getLicenseFamilies(LicenseFilter.ALL))
                 .build());
-        assertTrue(log.getCaptured().contains("ERROR"));
+        assertThat(log.getCaptured()).contains("ERROR");
     }
     
     @Test
@@ -643,18 +647,19 @@ public class ReportConfigurationTest {
         
         // verify default second setting ignores change
         underTest.addLicense(makeLicense.apply("license name2"));
-        assertTrue(log.getCaptured().contains("WARN"));
-        assertEquals("license name",
-                
underTest.getLicenses(LicenseFilter.ALL).stream().map(ILicense::getName).findFirst().get());
+        assertThat(log.getCaptured()).contains("WARN");
+        
assertThat(underTest.getLicenses(LicenseFilter.ALL).stream().map(ILicense::getName).findFirst())
+                .contains("license name");
         
         underTest.licenseDuplicateOption(Options.OVERWRITE);
         underTest.addLicense(makeLicense.apply("license name2"));
-        assertEquals("license name2",
-                
underTest.getLicenses(LicenseFilter.ALL).stream().map(ILicense::getName).findFirst().get());
+        
assertThat(underTest.getLicenses(LicenseFilter.ALL).stream().map(ILicense::getName).findFirst())
+                .contains("license name2");
 
         // verify fail throws exception
         underTest.licenseDuplicateOption(Options.FAIL);
-        assertThrows( IllegalArgumentException.class, ()-> 
underTest.addLicense(makeLicense.apply("another name")));
+        assertThatThrownBy(()-> 
underTest.addLicense(makeLicense.apply("another name")))
+                .isExactlyInstanceOf(IllegalArgumentException.class);
     }
 
     /**
diff --git 
a/apache-rat-core/src/test/java/org/apache/rat/document/FileDocumentTest.java 
b/apache-rat-core/src/test/java/org/apache/rat/document/FileDocumentTest.java
index f1ebb38c..a36944f4 100644
--- 
a/apache-rat-core/src/test/java/org/apache/rat/document/FileDocumentTest.java
+++ 
b/apache-rat-core/src/test/java/org/apache/rat/document/FileDocumentTest.java
@@ -18,41 +18,50 @@
  */ 
 package org.apache.rat.document;
 
+import java.nio.file.Path;
+import org.apache.commons.io.FileUtils;
 import org.apache.rat.api.Document;
 import org.apache.rat.test.utils.Resources;
-import org.assertj.core.util.Files;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.Reader;
+import org.junit.jupiter.api.io.TempDir;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.assertj.core.api.Assertions.assertThat;
 
 public class FileDocumentTest {
     private Document document;
-    private File file;
-    
+
+    @TempDir
+    private static Path tempDir;
+
     @BeforeEach
     public void setUp() throws Exception {
-        File basedir = new File(Files.currentFolder(), 
Resources.SRC_TEST_RESOURCES);
-        file = Resources.getExampleResource("exampleData/Source.java");
-        document = new FileDocument(DocumentName.builder(basedir).build(), 
file, DocumentNameMatcher.MATCHES_ALL);
+
+        File basedir = new File(tempDir.toFile(), 
Resources.SRC_TEST_RESOURCES);
+        basedir.mkdirs();
+        File sourceData = 
Resources.getExampleResource("exampleData/Source.java");
+        File file = new File(basedir, "Source.java");
+        FileUtils.copyFile(sourceData, file);
+        assertThat(file).exists();
+
+        DocumentName docName = DocumentName.builder(basedir).build();
+        document = new FileDocument(docName, file, 
DocumentNameMatcher.MATCHES_ALL);
     }
 
     @Test
     public void reader() throws Exception {
         Reader reader = document.reader();
-        assertNotNull(reader, "Reader should be returned");
-        assertEquals("package elements;", 
-                 new BufferedReader(reader).readLine(), "First file line 
expected");
+        assertThat(reader).isNotNull();
+        assertThat(new BufferedReader(reader).readLine()).isEqualTo("package 
elements;");
     }
 
     @Test
     public void getName() {
         final DocumentName name = document.getName();
-        assertNotNull(name, "Name is set");
+        assertThat(name).isNotNull();
     }
 }
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 e9a1ab8f..d9d5a302 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
@@ -16,18 +16,17 @@
  */
 package org.apache.rat.mp;
 
+import static java.lang.String.format;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.rat.mp.RatTestHelpers.ensureRatReportIsCorrect;
-import static org.apache.rat.mp.RatTestHelpers.getSourceDirectory;
-import static org.apache.rat.mp.RatTestHelpers.newArtifactFactory;
-import static org.apache.rat.mp.RatTestHelpers.newArtifactRepository;
-import static org.apache.rat.mp.RatTestHelpers.newSiteRenderer;
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Fail.fail;
 
 import java.io.File;
 
-import java.io.FileInputStream;
+import java.io.IOException;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -45,70 +44,90 @@ import org.apache.rat.license.ILicenseFamily;
 import org.apache.rat.license.LicenseSetFactory;
 import org.apache.rat.license.LicenseSetFactory.LicenseFilter;
 import org.apache.rat.report.claim.ClaimStatistic;
+import org.apache.rat.test.AbstractOptionsProvider;
+import org.apache.rat.test.utils.Resources;
 import org.apache.rat.testhelpers.TextUtils;
 import org.apache.rat.testhelpers.XmlUtils;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledOnOs;
+import org.junit.jupiter.api.condition.OS;
+import org.junit.jupiter.api.io.TempDir;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.NodeList;
 
 /**
  * Test case for the {@link RatCheckMojo} and {@link RatReportMojo}.
  */
-public class RatCheckMojoTest extends BetterAbstractMojoTestCase {
-    /**
-     * Creates a new instance of {@link RatCheckMojo}.
-     *
-     * @param pDir The directory, where to look for a pom.xml file.
-     * @return The configured Mojo.
-     * @throws Exception An error occurred while creating the Mojo.
-     */
-    private RatCheckMojo newRatCheckMojo(String pDir) throws Exception {
-        Arg.reset();
-        return (RatCheckMojo) newRatMojo(pDir, "check", false);
+public class RatCheckMojoTest {
+
+    @TempDir
+    static Path tempDir;
+
+    private final static XPath xPath = XPathFactory.newInstance().newXPath();
+
+    @AfterAll
+    static void preserveData() {
+        AbstractOptionsProvider.preserveData(tempDir.toFile(), "unit");
+    }
+
+    @AfterAll
+    @EnabledOnOs(OS.WINDOWS)
+    static void cleanup() {
+        System.gc(); // hacky workaround for windows bug.
+    }
+
+    private RatCheckMojo getMojo(File pomFile) throws IOException {
+        try {
+            final RatCheckMojo mojo = new OptionMojoTest.SimpleMojoTestcase() {
+            }.getMojo(pomFile);
+            Assertions.assertNotNull(mojo);
+            return mojo;
+        } catch (IOException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new IOException(format("Unable to generate mojo for %s", 
pomFile), e);
+        }
     }
 
     /**
      * Creates a new instance of {@link AbstractRatMojo}.
      *
-     * @param pDir The directory, where to look for a pom.xml file.
-     * @param pGoal The goal, which the Mojo must implement.
-     * @param pCreateCopy if {@code true} copy the directory contents and 
return the
+     * @param testDir The directory, where to look for a pom.xml file.
      * copy location.
      * @return The configured Mojo.
      * @throws Exception An error occurred while creating the Mojo.
      */
-    private AbstractRatMojo newRatMojo(String pDir, String pGoal, boolean 
pCreateCopy) throws Exception {
-        final File baseDir = new File(getBasedir());
-        final File testBaseDir = getSourceDirectory(getBasedir(), pDir, 
pCreateCopy, baseDir);
-        final File testPom = new File(testBaseDir, "pom.xml");
-        final File buildDirectory = new File(new File(baseDir, "target/test"), 
pDir);
-        AbstractRatMojo mojo = (AbstractRatMojo) lookupConfiguredMojo(testPom, 
pGoal);
-        assertNotNull(mojo);
-
-        assertNotNull("The mojo is missing its MavenProject, which will result 
in an NPE during RAT runs.",
-                mojo.getProject());
-
-        if (mojo instanceof RatReportMojo) {
-            setVariableValueToObject(mojo, "localRepository", 
newArtifactRepository(getContainer()));
-            setVariableValueToObject(mojo, "factory", newArtifactFactory());
-            setVariableValueToObject(mojo, "siteRenderer", 
newSiteRenderer(getContainer()));
-        } else if (mojo instanceof RatCheckMojo) {
-            final File ratTxtFile = new File(buildDirectory, "rat.txt");
-            FileUtils.write(ratTxtFile, "", UTF_8); // Ensure the output file 
exists and is empty (rerunning the test will append)
-            mojo.setOutputFile(ratTxtFile.getAbsolutePath());
-        }
+    private RatCheckMojo newRatMojo(String testDir) throws Exception {
+        Arg.reset();
+        final File sourceDir = 
Resources.getResourceDirectory(format("unit/%s", testDir));
+        final File baseDir = tempDir.resolve(testDir).toFile();
+        FileUtils.copyDirectory(sourceDir, baseDir);
+        final File pomFile = new File(baseDir, "pom.xml");
+        RatCheckMojo mojo = getMojo(pomFile);
+        assertThat(mojo).isNotNull();
+        assertThat(mojo.getProject())
+                .as("The mojo is missing its MavenProject, which will result 
in an NPE during RAT runs.")
+                .isNotNull();
+
+        File buildDirectory = new File(baseDir, "target");
+        assertThat(buildDirectory.mkdirs()).isTrue();
+        final File ratTxtFile = new File(buildDirectory, "rat.txt");
+        FileUtils.write(ratTxtFile, "", UTF_8); // Ensure the output file 
exists and is empty (rerunning the test will append)
+        mojo.setOutputFile(ratTxtFile.getAbsolutePath());
         return mojo;
     }
 
-    private String getDir(RatCheckMojo mojo) {
-        return 
mojo.getProject().getBasedir().getAbsolutePath().replace("\\","/") + "/";
-    }
     /**
      * Runs a check, which should expose no problems.
      *
      * @throws Exception The test failed.
      */
-    public void testIt1() throws Exception {
-        final RatCheckMojo mojo = newRatCheckMojo("it1");
+    @Test
+    void it1() throws Exception {
+        final RatCheckMojo mojo = newRatMojo("it1");
         final File ratTxtFile = mojo.getRatTxtFile();
 
         ReportConfiguration config = mojo.getConfiguration();
@@ -120,7 +139,7 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
         data.put(ClaimStatistic.Counter.APPROVED, "1");
         data.put(ClaimStatistic.Counter.BINARIES, "0");
         data.put(ClaimStatistic.Counter.DOCUMENT_TYPES, "2");
-        data.put(ClaimStatistic.Counter.IGNORED, "1");
+        data.put(ClaimStatistic.Counter.IGNORED, "2");
         data.put(ClaimStatistic.Counter.LICENSE_CATEGORIES, "1");
         data.put(ClaimStatistic.Counter.LICENSE_NAMES, "1");
         data.put(ClaimStatistic.Counter.NOTICES, "0");
@@ -147,8 +166,8 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
 
     private static Map<String, String> mapOf(String... parts) {
         Map<String, String> map = new HashMap<>();
-        for (int i=0; i<parts.length; i+=2) {
-            map.put(parts[i], parts[i+1]);
+        for (int i = 0; i < parts.length; i += 2) {
+            map.put(parts[i], parts[i + 1]);
         }
         return map;
     }
@@ -158,8 +177,9 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
      *
      * @throws Exception The test failed.
      */
-    public void testIt2() throws Exception {
-        final RatCheckMojo mojo = newRatCheckMojo("it2");
+    @Test
+    void it2() throws Exception {
+        final RatCheckMojo mojo = newRatMojo("it2");
         final File ratTxtFile = mojo.getRatTxtFile();
         final String[] expected = {
                 "^Files with unapproved 
licenses\\s+\\*+\\s+\\Q/src.txt\\E\\s+",
@@ -167,21 +187,23 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
                 ReporterTestUtils.counterText(ClaimStatistic.Counter.BINARIES, 
0, false),
                 ReporterTestUtils.counterText(ClaimStatistic.Counter.ARCHIVES, 
0, false),
                 
ReporterTestUtils.counterText(ClaimStatistic.Counter.STANDARDS, 2, false),
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.IGNORED, 
0, false),
+                ReporterTestUtils.counterText(ClaimStatistic.Counter.IGNORED, 
1, false),
                 ReporterTestUtils.apacheLicenseVersion2(1),
                 ReporterTestUtils.unknownLicense(1),
                 ReporterTestUtils.documentOut(false, Document.Type.STANDARD, 
"/src.txt") +
-                ReporterTestUtils.UNKNOWN_LICENSE,
+                        ReporterTestUtils.UNKNOWN_LICENSE,
                 ReporterTestUtils.documentOut(true, Document.Type.STANDARD, 
"/pom.xml") +
-                ReporterTestUtils.APACHE_LICENSE
-                };
+                        ReporterTestUtils.APACHE_LICENSE
+        };
         try {
             mojo.execute();
             fail("Expected RatCheckException");
         } catch (RatCheckException e) {
             final String msg = e.getMessage();
-            assertTrue("report filename was not contained in '" + msg + "'", 
msg.contains(ratTxtFile.getName()));
-            assertFalse("no null allowed in '" + msg + "'", 
(msg.toUpperCase().contains("NULL")));
+            assertThat(msg.contains(ratTxtFile.getName())).as(() -> 
format("report filename was not contained in '%s'", msg))
+                    .isTrue();
+            assertThat(msg.toUpperCase()).contains("UNAPPROVED EXCEEDED 
MINIMUM");
+
             ensureRatReportIsCorrect(ratTxtFile, expected, TextUtils.EMPTY);
         }
     }
@@ -189,68 +211,76 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
     /**
      * Tests adding license headers.
      */
-    public void testIt3() throws Exception {
-        final RatCheckMojo mojo = (RatCheckMojo) newRatMojo("it3", "check", 
true);
+    @Test
+    void it3() throws Exception {
+        final RatCheckMojo mojo = newRatMojo("it3");
         final File ratTxtFile = mojo.getRatTxtFile();
-        final String[] expected = {
-                "^Files with unapproved 
licenses\\s+\\*+\\s+\\Q/src.apt\\E\\s+",
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.NOTICES, 
0, false),
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.BINARIES, 
0, false),
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.ARCHIVES, 
0, false),
-                
ReporterTestUtils.counterText(ClaimStatistic.Counter.STANDARDS, 2, false),
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.IGNORED, 
0, false),
-                ReporterTestUtils.apacheLicenseVersion2(1),
-                ReporterTestUtils.unknownLicense(1),
-                ReporterTestUtils.documentOut(false, Document.Type.STANDARD, 
"/src.apt") +
-                ReporterTestUtils.UNKNOWN_LICENSE,
-                ReporterTestUtils.documentOut(true, Document.Type.STANDARD, 
"/pom.xml") +
-                ReporterTestUtils.APACHE_LICENSE
-        };
 
         ReportConfiguration config = mojo.getConfiguration();
-        assertTrue("should be adding licenses", config.isAddingLicenses());
-
+        assertThat(config.isAddingLicenses()).as("should be adding 
licenses").isTrue();
         mojo.execute();
+        org.w3c.dom.Document document = 
XmlUtils.toDom(Files.newInputStream(ratTxtFile.toPath()));
 
-        ensureRatReportIsCorrect(ratTxtFile, expected, TextUtils.EMPTY);
+        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/pom.xml']", "type",
+                "STANDARD");
+        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/src.apt']", "type",
+                "STANDARD");
+        XmlUtils.assertIsPresent(document, xPath, 
"/rat-report/resource[@name='/src.apt']/license[@approval='false']");
+
+        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/src.apt']", "type",
+                "STANDARD");
+
+        for (Document.Type type : Document.Type.values()) {
+            if (type == Document.Type.STANDARD) {
+                XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/documentType[@name='STANDARD']", "count",
+                        "2");
+            } else if (type == Document.Type.IGNORED) {
+                XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/documentType[@name='IGNORED']", "count",
+                        "1");
+            } else {
+                XmlUtils.assertIsNotPresent(document, xPath, 
format("/rat-report/statistics/documentType[@name='%s']", type));
+            }
+        }
     }
 
     /**
      * Tests defining licenses in configuration
      */
-    public void testIt5() throws Exception {
-        final RatCheckMojo mojo = (RatCheckMojo) newRatMojo("it5", "check", 
true);
+    @Disabled("Disabled until gitignore processing is correct")
+    @Test
+    void it5() throws Exception {
+        final RatCheckMojo mojo = newRatMojo("it5");
         final File ratTxtFile = mojo.getRatTxtFile();
 
         ReportConfiguration config = mojo.getConfiguration();
-        assertFalse("Should not be adding licenses", 
config.isAddingLicenses());
-        assertFalse("Should not be forcing licenses", 
config.isAddingLicensesForced());
-
-        ReportConfigurationTest.validateDefaultApprovedLicenses(config);
-        
assertFalse(config.getLicenseCategories(LicenseFilter.APPROVED).contains(ILicenseFamily.makeCategory("YAL")));
-        ReportConfigurationTest.validateDefaultLicenseFamilies(config, "YAL");
-        assertNotNull(LicenseSetFactory.familySearch("YAL", 
config.getLicenseFamilies(LicenseFilter.ALL)));
-        ReportConfigurationTest.validateDefaultLicenses(config, "MyLicense", 
"CpyrT", "RegxT", "SpdxT", "TextT",
-                "Not", "All", "Any");
-        assertTrue(LicenseSetFactory.search("YAL", "MyLicense", 
config.getLicenses(LicenseFilter.ALL)).isPresent());
-        try {
-            mojo.execute();
-            fail("Should have thrown exception");
-        } catch (RatCheckException e) {
-            assertThat(e.getMessage()).contains("UNAPPROVED");
-        }
+        assertThat(config.isAddingLicenses()).as("Should not be adding 
licenses").isFalse();
+        assertThat(config.isAddingLicensesForced()).as("Should not be forcing 
licenses").isFalse();
+
+        ReportConfigurationTest.validateDefaultApprovedLicenses(config, 1);
+        
assertThat(config.getLicenseCategories(LicenseFilter.APPROVED)).doesNotContain(ILicenseFamily.makeCategory("YAL"))
+                .contains(ILicenseFamily.makeCategory("CC"));
+        ReportConfigurationTest.validateDefaultLicenseFamilies(config, "YAL", 
"CC");
+        assertThat(LicenseSetFactory.familySearch("YAL", 
config.getLicenseFamilies(LicenseFilter.APPROVED))).isNull();
+        assertThat(LicenseSetFactory.familySearch("YAL", 
config.getLicenseFamilies(LicenseFilter.ALL))).isNotNull();
+        assertThat(LicenseSetFactory.familySearch("CC", 
config.getLicenseFamilies(LicenseFilter.APPROVED))).isNotNull();
+        assertThat(LicenseSetFactory.familySearch("CC", 
config.getLicenseFamilies(LicenseFilter.ALL))).isNotNull();
+
+        ReportConfigurationTest.validateDefaultLicenses(config, "CC-BY-NC-ND", 
"YAL");
+        assertThat(LicenseSetFactory.search("YAL", "YAL", 
config.getLicenses(LicenseFilter.ALL))).isPresent();
+
+        mojo.execute();
 
         Map<ClaimStatistic.Counter, String> data = new HashMap<>();
-        data.put(ClaimStatistic.Counter.APPROVED, "0");
+        data.put(ClaimStatistic.Counter.APPROVED, "1");
         data.put(ClaimStatistic.Counter.ARCHIVES, "0");
         data.put(ClaimStatistic.Counter.BINARIES, "0");
         data.put(ClaimStatistic.Counter.DOCUMENT_TYPES, "2");
-        data.put(ClaimStatistic.Counter.IGNORED, "1");
+        data.put(ClaimStatistic.Counter.IGNORED, "3");
         data.put(ClaimStatistic.Counter.LICENSE_CATEGORIES, "1");
-        data.put(ClaimStatistic.Counter.LICENSE_NAMES, "4");
+        data.put(ClaimStatistic.Counter.LICENSE_NAMES, "1");
         data.put(ClaimStatistic.Counter.NOTICES, "0");
         data.put(ClaimStatistic.Counter.STANDARDS, "1");
-        data.put(ClaimStatistic.Counter.UNAPPROVED, "4");
+        data.put(ClaimStatistic.Counter.UNAPPROVED, "0");
         data.put(ClaimStatistic.Counter.UNKNOWN, "0");
 
         org.w3c.dom.Document document = 
XmlUtils.toDom(Files.newInputStream(ratTxtFile.toPath()));
@@ -259,35 +289,31 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
         for (ClaimStatistic.Counter counter : ClaimStatistic.Counter.values()) 
{
             String xpath = 
String.format("/rat-report/statistics/statistic[@name='%s']", 
counter.displayName());
             Map<String, String> map = mapOf("approval",
-                    counter == ClaimStatistic.Counter.UNAPPROVED ? "false" : 
"true",
+                    "true",
                     "count", data.get(counter),
                     "description", counter.getDescription());
             XmlUtils.assertAttributes(document, xPath, xpath, map);
         }
 
-        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/.bzrignore']",
-                mapOf("mediaType", "application/octet-stream", "type", 
"IGNORED"));
-
+        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/.rat']",
+                "mediaType", "application/octet-stream", "type", "IGNORED", 
"isDirectory", "true");
         XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/pom.xml']",
-                mapOf("mediaType", "application/xml", "type", "STANDARD", 
"encoding", "ISO-8859-1"));
-
-        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/pom.xml']/license[@id='Any']",
-                mapOf("approval", "false", "family", "YAL  ", "name", "Any 
testing"));
-        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/pom.xml']/license[@id='MyLicense']",
-                mapOf("approval", "false", "family", "YAL  ", "name", "Yet 
another license"));
-        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/pom.xml']/license[@id='RegxT']",
-                mapOf("approval", "false", "family", "YAL  ", "name", "Regex 
with tag"));
-        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/pom.xml']/license[@id='TextT']",
-                mapOf("approval", "false", "family", "YAL  ", "name", "Text 
with tag"));
+                "mediaType", "application/xml", "type", "IGNORED", 
"isDirectory", "false");
+        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/src/main/java/nl/basjes/something/Something.java']",
+                "mediaType", "text/x-java-source", "type", "STANDARD", 
"encoding", "ISO-8859-1");
+        XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/src/main/java/nl/basjes/something/Something.java']/license",
+                "approval", "true", "family", 
ILicenseFamily.makeCategory("CC"), "id", "CC-BY-NC-ND", "name",
+                "Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 
International");
     }
-    
+
     /**
      * Runs a check, which should expose no problems.
      *
      * @throws Exception The test failed.
      */
-    public void testRAT_343() throws Exception {
-        final RatCheckMojo mojo = newRatCheckMojo("RAT-343");
+    @Test
+    void rat343() throws Exception {
+        final RatCheckMojo mojo = newRatMojo("RAT-343");
         final File ratTxtFile = mojo.getRatTxtFile();
         // POM reports AL, BSD and CC BYas BSD because it contains the BSD and 
CC BY strings
         final String[] expected = {
@@ -299,7 +325,7 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
                 ReporterTestUtils.counterText(ClaimStatistic.Counter.BINARIES, 
0, false),
                 ReporterTestUtils.counterText(ClaimStatistic.Counter.ARCHIVES, 
0, false),
                 
ReporterTestUtils.counterText(ClaimStatistic.Counter.STANDARDS, 1, false),
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.IGNORED, 
0, false),
+                ReporterTestUtils.counterText(ClaimStatistic.Counter.IGNORED, 
1, false),
                 ReporterTestUtils.apacheLicenseVersion2(1),
                 "^BSD: 1 ",
                 "^Creative Commons Attribution: 1 ",
@@ -314,7 +340,7 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
         assertThat(config.isAddingLicensesForced()).isFalse();
         assertThat(config.getCopyrightMessage()).isNull();
         assertThat(config.getStyleSheet()).withFailMessage("Stylesheet should 
not be null").isNotNull();
-        
+
         ReportConfigurationTest.validateDefaultApprovedLicenses(config, 1);
         ReportConfigurationTest.validateDefaultLicenseFamilies(config, "BSD", 
"CC BY");
         ReportConfigurationTest.validateDefaultLicenses(config, "BSD", "CC 
BY");
@@ -326,37 +352,21 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
     /**
      * Tests verifying gitignore parsing
      */
-    public void /*test*/RAT_335GitIgnoreParsing() throws Exception {
-        final RatCheckMojo mojo = newRatCheckMojo("RAT-335-GitIgnore");
+    @Disabled("Disabled until gitignore processing is correct")
+    @Test
+    void rat335() throws Exception {
+        final RatCheckMojo mojo = newRatMojo("RAT-335");
         final File ratTxtFile = mojo.getRatTxtFile();
-//        final String[] expected = {
-//                
ReporterTestUtils.counterText(ClaimStatistic.Counter.NOTICES, 1, false),
-//                
ReporterTestUtils.counterText(ClaimStatistic.Counter.BINARIES, 0, false),
-//                
ReporterTestUtils.counterText(ClaimStatistic.Counter.ARCHIVES, 0, false),
-//                
ReporterTestUtils.counterText(ClaimStatistic.Counter.STANDARDS, 6, false),
-//                
ReporterTestUtils.counterText(ClaimStatistic.Counter.IGNORED, 0, false),
-//                
ReporterTestUtils.counterText(ClaimStatistic.Counter.UNKNOWN, 4, false),
-//                ReporterTestUtils.apacheLicenseVersion2(2),
-//                ReporterTestUtils.unknownLicense(4),
-//                ReporterTestUtils.documentOut(true, Document.Type.STANDARD, 
"/pom.xml") +
-//                        ReporterTestUtils.APACHE_LICENSE,
-//                ReporterTestUtils.documentOut(false, Document.Type.STANDARD, 
"/dir1/dir1.md") +
-//                        ReporterTestUtils.UNKNOWN_LICENSE,
-//                ReporterTestUtils.documentOut(false, Document.Type.STANDARD, 
"/dir2/dir2.txt") +
-//                        ReporterTestUtils.UNKNOWN_LICENSE,
-//                ReporterTestUtils.documentOut(false, Document.Type.STANDARD, 
"/dir3/file3.log") +
-//                        ReporterTestUtils.UNKNOWN_LICENSE,
-//        };
         try {
             mojo.execute();
             fail("Expected RatCheckException");
         } catch (RatCheckException e) {
             final String msg = e.getMessage();
-            assertTrue("report filename was not contained in '" + msg + "'", 
msg.contains(ratTxtFile.getName()));
-            assertFalse("no null allowed in '" + msg + "'", 
(msg.toUpperCase().contains("NULL")));
+            assertThat(msg).contains(ratTxtFile.getName());
+            assertThat(msg).contains("UNAPPROVED exceeded minimum");
 
             Map<ClaimStatistic.Counter, String> data = new HashMap<>();
-            data.put(ClaimStatistic.Counter.APPROVED, "2");
+            data.put(ClaimStatistic.Counter.APPROVED, "1");
             data.put(ClaimStatistic.Counter.ARCHIVES, "0");
             data.put(ClaimStatistic.Counter.BINARIES, "0");
             data.put(ClaimStatistic.Counter.DOCUMENT_TYPES, "3");
@@ -364,12 +374,11 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
             data.put(ClaimStatistic.Counter.LICENSE_CATEGORIES, "2");
             data.put(ClaimStatistic.Counter.LICENSE_NAMES, "2");
             data.put(ClaimStatistic.Counter.NOTICES, "1");
-            data.put(ClaimStatistic.Counter.STANDARDS, "6");
+            data.put(ClaimStatistic.Counter.STANDARDS, "5");
             data.put(ClaimStatistic.Counter.UNAPPROVED, "4");
             data.put(ClaimStatistic.Counter.UNKNOWN, "4");
 
             org.w3c.dom.Document document = 
XmlUtils.toDom(Files.newInputStream(ratTxtFile.toPath()));
-            XPath xPath = XPathFactory.newInstance().newXPath();
 
             for (ClaimStatistic.Counter counter : 
ClaimStatistic.Counter.values()) {
                 String xpath = 
String.format("/rat-report/statistics/statistic[@name='%s']", 
counter.displayName());
@@ -382,31 +391,30 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
 
             // license categories
             XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/licenseCategory[@name='?????']",
-                        mapOf("count", "4" ));
+                    mapOf("count", "4"));
 
             XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/licenseCategory[@name='AL   ']",
-                    mapOf("count", "2" ));
+                    mapOf("count", "1"));
 
             // license names
             XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/licenseName[@name='Apache License Version 2.0']",
-                    mapOf("count", "2" ));
+                    mapOf("count", "1"));
 
             XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/licenseName[@name='Unknown license']",
-                    mapOf("count", "4" ));
+                    mapOf("count", "4"));
 
             // Document types
             XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/documentType[@name='IGNORED']",
-                    mapOf("count", "6" ));
+                    mapOf("count", "6"));
 
             XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/documentType[@name='NOTICE']",
-                    mapOf("count", "1" ));
+                    mapOf("count", "1"));
 
             XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/documentType[@name='STANDARD']",
-                    mapOf("count", "6" ));
+                    mapOf("count", "5"));
 
             List<String> ignoredFiles = new ArrayList<>(Arrays.asList(
                     "/dir1/dir1.txt",
-                    "/dir1/file1.log",
                     "/dir1/.gitignore",
                     "/dir2/dir2.md",
                     "/dir3/dir3.log",
@@ -414,7 +422,7 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
                     "/root.md"));
 
             NodeList nodeList = XmlUtils.getNodeList(document, xPath, 
"/rat-report/resource[@type='IGNORED']");
-            for (int i=0;i< nodeList.getLength(); i++) {
+            for (int i = 0; i < nodeList.getLength(); i++) {
                 NamedNodeMap attr = nodeList.item(i).getAttributes();
                 String s = attr.getNamedItem("name").getNodeValue();
                 assertThat(ignoredFiles).contains(s);
@@ -431,62 +439,46 @@ public class RatCheckMojoTest extends 
BetterAbstractMojoTestCase {
      * So for this test we must create such a file which is specific for the 
current
      * working directory.
      */
-    public void /*test*/RAT362GitIgnore() throws Exception {
-        final RatCheckMojo mojo = newRatCheckMojo("RAT-362-GitIgnore");
+    @Disabled("Disabled until gitignore processing is correct")
+    @Test
+    void rat362() throws Exception {
+        final RatCheckMojo mojo = newRatMojo("RAT-362");
         final File ratTxtFile = mojo.getRatTxtFile();
-        final String dirStr = getDir(mojo);
-
-        if (dirStr.contains(":")) {
-            // The problem this is testing for cannot happen if there is
-            // a Windows drive letter in the name of the directory.
-            // Any duplication of a ':' will make it all fail always.
-            // So there is no point in continuing this test.
-            return;
-        }
-        File dir = new File(dirStr);
-
-        // Make the target directory for the test file
-        assertTrue(dir.isDirectory());
-
-        // Create the test file with a content on which it must fail
-        File barFile = new File(dir, "bar.md");
-        assertThat(barFile).exists();
-        final String[] expected = {
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.NOTICES, 
0, false),
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.BINARIES, 
0, false),
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.ARCHIVES, 
0, false),
-                
ReporterTestUtils.counterText(ClaimStatistic.Counter.STANDARDS, 3, false),
-                ReporterTestUtils.counterText(ClaimStatistic.Counter.IGNORED, 
0, false),
-                ReporterTestUtils.apacheLicenseVersion2(2),
-                ReporterTestUtils.unknownLicense(1),
-                ReporterTestUtils.documentOut(false, Document.Type.STANDARD, 
"/bar.md") +
-                        ReporterTestUtils.UNKNOWN_LICENSE
-        };
         try {
             mojo.execute();
-            fail("Expected RatCheckException: This check should have failed on 
the invalid test file");
+            fail("Expected RatCheckException");
         } catch (RatCheckException e) {
             final String msg = e.getMessage();
-            assertTrue("report filename was not contained in '" + msg + "'", 
msg.contains(ratTxtFile.getName()));
-            assertFalse("no null allowed in '" + msg + "'", 
(msg.toUpperCase().contains("NULL")));
-            ensureRatReportIsCorrect(ratTxtFile, expected, TextUtils.EMPTY);
+            assertThat(msg).contains(ratTxtFile.getName());
+            assertThat(msg).contains("UNAPPROVED exceeded minimum");
+
+            org.w3c.dom.Document document = 
XmlUtils.toDom(Files.newInputStream(ratTxtFile.toPath()));
+            // Document types
+            XmlUtils.assertAttributes(document, xPath, 
"/rat-report/statistics/documentType[@name='IGNORED']",
+                    "count", "3");
+
+            XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/bar.md']",
+                    "type", "STANDARD");
+            XmlUtils.assertAttributes(document, xPath, 
"/rat-report/resource[@name='/foo.md']",
+                    "type", "IGNORED");
         }
     }
 
     /**
-    * Tests implicit excludes apply to submodules too
-    */
-   public void testRAT_107() throws Exception {
-       final RatCheckMojo mojo = (RatCheckMojo) newRatMojo("RAT-107", "check", 
true);
-       final File ratTxtFile = mojo.getRatTxtFile();
-       final String[] expected = {};
-       final String[] notExpected = {};
-       setVariableValueToObject(mojo, "excludeSubProjects", Boolean.FALSE);
-       mojo.setInputExcludeParsedScm("MAVEN");
-       mojo.setInputExcludeParsedScm("idea");
-       mojo.setInputExcludeParsedScm("eclipse");
-       mojo.execute();
-
-       ensureRatReportIsCorrect(ratTxtFile, expected, notExpected);
-   }
+     * Tests implicit excludes apply to submodules too
+     */
+    @Test
+    void rat107() throws Exception {
+        final RatCheckMojo mojo = newRatMojo("RAT-107");
+        final File ratTxtFile = mojo.getRatTxtFile();
+        final String[] expected = {};
+        final String[] notExpected = {};
+        //setVariableValueToObject(mojo, "excludeSubProjects", Boolean.FALSE);
+        mojo.setInputExcludeParsedScm("MAVEN");
+        mojo.setInputExcludeParsedScm("idea");
+        mojo.setInputExcludeParsedScm("eclipse");
+        mojo.execute();
+
+        ensureRatReportIsCorrect(ratTxtFile, expected, notExpected);
+    }
 }
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/.gitignore 
b/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/.gitignore
deleted file mode 100644
index 8855fa80..00000000
--- a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-*.md
-
-# This makes it ignore dir3/dir3.log and dir3/file3.log
-*.log
-
-# This makes it "unignore" dir3/file3.log
-!file*.log
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/.gitignore 
b/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/.gitignore
deleted file mode 100644
index 26fd5c95..00000000
--- 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.txt
-!dir1.md
-file1.log
\ No newline at end of file
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/dir1.txt 
b/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/dir1.txt
deleted file mode 100644
index a31cbc89..00000000
--- a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/dir1.txt
+++ /dev/null
@@ -1 +0,0 @@
-File without a valid license
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/file1.log 
b/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/file1.log
deleted file mode 100644
index a31cbc89..00000000
--- a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/file1.log
+++ /dev/null
@@ -1 +0,0 @@
-File without a valid license
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir2/dir2.md 
b/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir2/dir2.md
deleted file mode 100644
index a31cbc89..00000000
--- a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir2/dir2.md
+++ /dev/null
@@ -1 +0,0 @@
-File without a valid license
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir3/dir3.log 
b/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir3/dir3.log
deleted file mode 100644
index a31cbc89..00000000
--- a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir3/dir3.log
+++ /dev/null
@@ -1 +0,0 @@
-File without a valid license
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/root.md 
b/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/root.md
deleted file mode 100644
index a31cbc89..00000000
--- a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/root.md
+++ /dev/null
@@ -1 +0,0 @@
-File without a valid license
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/README.txt 
b/apache-rat-plugin/src/test/resources/unit/RAT-335/README.txt
similarity index 100%
rename from 
apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/README.txt
rename to apache-rat-plugin/src/test/resources/unit/RAT-335/README.txt
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/dir1.md 
b/apache-rat-plugin/src/test/resources/unit/RAT-335/dir1/dir1.md
similarity index 100%
rename from 
apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir1/dir1.md
rename to apache-rat-plugin/src/test/resources/unit/RAT-335/dir1/dir1.md
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir2/dir2.txt 
b/apache-rat-plugin/src/test/resources/unit/RAT-335/dir2/dir2.txt
similarity index 100%
rename from 
apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir2/dir2.txt
rename to apache-rat-plugin/src/test/resources/unit/RAT-335/dir2/dir2.txt
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir3/file3.log 
b/apache-rat-plugin/src/test/resources/unit/RAT-335/dir3/file3.log
similarity index 100%
rename from 
apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/dir3/file3.log
rename to apache-rat-plugin/src/test/resources/unit/RAT-335/dir3/file3.log
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/invoker.properties
 b/apache-rat-plugin/src/test/resources/unit/RAT-335/invoker.properties
similarity index 100%
rename from 
apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/invoker.properties
rename to apache-rat-plugin/src/test/resources/unit/RAT-335/invoker.properties
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/pom.xml 
b/apache-rat-plugin/src/test/resources/unit/RAT-335/pom.xml
similarity index 100%
rename from apache-rat-plugin/src/test/resources/unit/RAT-335-GitIgnore/pom.xml
rename to apache-rat-plugin/src/test/resources/unit/RAT-335/pom.xml
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/.gitignore 
b/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/.gitignore
deleted file mode 100644
index 4912996b..00000000
--- a/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/foo.md
-target
\ No newline at end of file
diff --git a/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/foo.md 
b/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/foo.md
deleted file mode 100644
index a31cbc89..00000000
--- a/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/foo.md
+++ /dev/null
@@ -1 +0,0 @@
-File without a valid license
diff --git a/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/bar.md 
b/apache-rat-plugin/src/test/resources/unit/RAT-362/bar.md
similarity index 100%
rename from apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/bar.md
rename to apache-rat-plugin/src/test/resources/unit/RAT-362/bar.md
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/invoker.properties
 b/apache-rat-plugin/src/test/resources/unit/RAT-362/invoker.properties
similarity index 100%
rename from 
apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/invoker.properties
rename to apache-rat-plugin/src/test/resources/unit/RAT-362/invoker.properties
diff --git 
a/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/pom.xml 
b/apache-rat-plugin/src/test/resources/unit/RAT-362/pom.xml
similarity index 97%
rename from apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/pom.xml
rename to apache-rat-plugin/src/test/resources/unit/RAT-362/pom.xml
index 71669aa3..af34ad81 100644
--- a/apache-rat-plugin/src/test/resources/unit/RAT-362-GitIgnore/pom.xml
+++ b/apache-rat-plugin/src/test/resources/unit/RAT-362/pom.xml
@@ -27,6 +27,7 @@
         <artifactId>apache-rat-plugin</artifactId>
         <version>@pom.version@</version>
         <configuration>
+          <outputStyle>xml</outputStyle>
           <!-- Minimize the number of active rules to keep the test minimal -->
           <excludes>
             <exclude>**/.gitignore</exclude>
diff --git a/apache-rat-plugin/src/test/resources/unit/it3/pom.xml 
b/apache-rat-plugin/src/test/resources/unit/it3/pom.xml
index f6982e39..1188a2d2 100644
--- a/apache-rat-plugin/src/test/resources/unit/it3/pom.xml
+++ b/apache-rat-plugin/src/test/resources/unit/it3/pom.xml
@@ -29,6 +29,7 @@
         <configuration>
           <numUnapprovedLicenses>1</numUnapprovedLicenses>
           <addLicenseHeaders>true</addLicenseHeaders>
+          <outputStyle>xml</outputStyle>
         </configuration>
       </plugin>
     </plugins>

Reply via email to