Skip to content

Commit

Permalink
Fix RerunLastFailures problem. Appear the perfix only one time
Browse files Browse the repository at this point in the history
  • Loading branch information
Eqerem-Hena committed Jun 6, 2024
1 parent f3a5c50 commit eb3117f
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 1 deletion.
26 changes: 25 additions & 1 deletion src/fitnesse/responders/run/SuiteResponder.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static fitnesse.responders.WikiImportingTraverser.ImportError;
import static fitnesse.wiki.WikiImportProperty.isAutoUpdated;
Expand Down Expand Up @@ -295,7 +297,29 @@ protected String getRerunPageName() {
PageCrawler pageCrawler = page.getPageCrawler();
WikiPagePath fullPath = pageCrawler.getFullPath();
String fullPathName = PathParser.render(fullPath);
return "RerunLastFailures_"+fullPathName.replace(".","-");
if (fullPathName.startsWith("RerunLastFailures_")) {
String newFullPathName = fullPathName.replace(".", "-");
if (!(newFullPathName.endsWith("(1)"))) {
return newFullPathName.replaceAll("\\(\\d+\\)", "(" + 2 + ")");
} else if (newFullPathName.endsWith("SubsetQueryTest")) {
return newFullPathName + "(1)";
} else {
int number = extractNumber(newFullPathName) + 1;
return newFullPathName.replaceAll("\\(\\d+\\)", "(" + number + ")");

}
} else {
return "RerunLastFailures_" + fullPathName.replace(".", "-");
}
}

public static int extractNumber(String input) {
Pattern pattern = Pattern.compile("\\((\\d+)\\)");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
return Integer.parseInt(matcher.group(1));
}
return -1; // return -1 if no number found
}

protected String getTitle() {
Expand Down
47 changes: 47 additions & 0 deletions test/fitnesse/responders/run/SuiteResponderTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,16 @@
import fitnesse.util.DateAlteringClock;
import fitnesse.util.DateTimeUtil;
import fitnesse.util.XmlUtil;
import fitnesse.wiki.PageCrawler;
import fitnesse.wiki.PageData;
import fitnesse.wiki.PathParser;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.WikiPagePath;
import fitnesse.wiki.WikiPageUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
Expand All @@ -47,6 +50,8 @@ public class SuiteResponderTest {
private SuiteResponder responder;
private WikiPage root;
private WikiPage suite;
private PageCrawler pageCrawler;
private WikiPagePath wikiPagePath;
private FitNesseContext context;
private final String fitPassFixture = "|!-fitnesse.testutil.PassFixture-!|\n";
private final String fitFailFixture = "|!-fitnesse.testutil.FailFixture-!|\n";
Expand Down Expand Up @@ -564,6 +569,48 @@ public void loadsCustomFormatters() throws Exception {

assertTrue(FooFormatter.initialized);
}

@Test
public void testRerunLastFailuresScenario() {
String fullPathName = "RerunLastFailures_TestPage";
Mockito.when(PathParser.render(wikiPagePath)).thenReturn(fullPathName);

String result = responder.getRerunPageName();
assertEquals("RerunLastFailures_TestPage(2)", result);
}

@Test
public void testRerunLastFailuresWithSubsetQueryTestScenario() {
String fullPathName = "RerunLastFailures_SubsetQueryTest";
Mockito.when(PathParser.render(wikiPagePath)).thenReturn(fullPathName);

String result = responder.getRerunPageName();
assertEquals("RerunLastFailures_SubsetQueryTest(1)", result);
}

@Test
public void testNormalPageScenario() {
String fullPathName = "NormalPage";
Mockito.when(PathParser.render(wikiPagePath)).thenReturn(fullPathName);

String result = responder.getRerunPageName();
assertEquals("RerunLastFailures_NormalPage", result);
}

@Test
public void testRerunLastFailuresWithNumber() {
String fullPathName = "RerunLastFailures_TestPage(3)";
Mockito.when(PathParser.render(wikiPagePath)).thenReturn(fullPathName);

String result = responder.getRerunPageName();
assertEquals("RerunLastFailures_TestPage(4)", result);
}

@Test
public void testExtractNumber() {
assertEquals(3, responder.extractNumber("TestPage(3)"));
assertEquals(-1, responder.extractNumber("TestPage"));
}

private String runSuite() throws Exception {
Response response = responder.makeResponse(context, request);
Expand Down

0 comments on commit eb3117f

Please sign in to comment.