All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nl.praegus.fitnesse.responders.testHistory.RecentTestHistory Maven / Gradle / Ivy

There is a newer version: 2.0.24
Show newest version
package nl.praegus.fitnesse.responders.testHistory;

import fitnesse.reporting.history.PageHistory;
import fitnesse.wiki.PathParser;

import util.FileUtil;
import java.io.File;
import java.util.*;
import static java.util.Comparator.*;
import static java.util.stream.Collectors.toList;

public class RecentTestHistory {
    private final List testHistoryLines = new ArrayList<>();
    private final Map pageHistoryIndex;

    public RecentTestHistory(File historyDirectory){
        this.pageHistoryIndex = getHistoryIndex(historyDirectory);

        for (String pageName : pageHistoryIndex.keySet()) {
            PageHistory pageHistory = getPageHistory(pageName);
            testHistoryLines.add(new TestHistoryLine(pageHistory));
        }
    }

    public List getHistoryLines() {
        return testHistoryLines.stream()
                .sorted(comparing(TestHistoryLine::getMostRecentRunDate, nullsLast(reverseOrder())))
                .collect(toList());
    }

    public List getFilteredTestHistoryLines() {
        List filteredTestHistoryLines = new ArrayList<>();

        for (TestHistoryLine testHistoryLine : testHistoryLines) {
            String testName;

            if (testHistoryLine.getPageName().contains(".")) {
                testName = testHistoryLine.getPageName().substring(testHistoryLine.getPageName().lastIndexOf(".") + 1);
            } else {
                testName = testHistoryLine.getPageName();
            }

            if (!testName.equals("SetUp") && !testName.equals("TearDown") && !testName.equals("SuiteTearDown") && !testName.equals("SuiteSetUp")) {
                filteredTestHistoryLines.add(testHistoryLine);
            }
        }

        return filteredTestHistoryLines.stream()
                .sorted(comparing(TestHistoryLine::getMostRecentRunDate, nullsLast(reverseOrder())))
                .collect(toList());
    }

    public Set getPageNames(){
        return pageHistoryIndex.keySet();
    }

    public PageHistory getPageHistory(String pageName) {
        File historyPage = pageHistoryIndex.get(pageName);
        if (historyPage == null)
            return null;
        else {
            PageHistory pageHistory = new PageHistory(historyPage);
            if (pageHistory.size() == 0)
                return null;
            else
                return pageHistory;
        }
    }

    private Map getHistoryIndex(File historyDirectory) {
        Map map = new HashMap<>();
        File[] pageDirectories = FileUtil.getDirectoryListing(historyDirectory);
        for (File file : pageDirectories) {
            if (isValidFile(file)) {
                map.put(file.getName(), file);
            }
        }
        return map;
    }

    private boolean isValidFile(File file) {
        return file.isDirectory() && Objects.requireNonNull(file.list()).length > 0 && PathParser.isWikiPath(file.getName());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy