private void testGitFilesOnDisk(final String testName,
                                    final Path testDataDir,
                                    final List<String> pathPatterns)
            throws IOException {

        final Map<Pattern, Boolean> pathsFound = new HashMap<>();
        for (var pathPattern : pathPatterns) {
            pathsFound.put(Pattern.compile(pathPattern), Boolean.FALSE);
        }

        final List<String> pathsNotMatched = new ArrayList<>();

        final GitFileVisitor visitor = new GitFileVisitor(testDataDir, pathsFound, pathsNotMatched);

        Files.walkFileTree(testDataDir, visitor);

        assertThat(pathsFound)
                .as("%s: Should be true to show pattern matched", testName)
                .doesNotContainValue(Boolean.FALSE);

        assertThat(pathsNotMatched)
                .as("%s: Paths not matched should be empty", testName)
                .isEmpty();
    }
Constructor.

@param root            Root of the thing we're searching. Used to make paths relative.
@param pathsFound      Map of patterns and whether they've been found
@param pathsNotMatched List of paths we've found that weren't matched.
stroom-app/src/test/java/stroom/importexport/TestImportExportGitRepo.java