diff --git a/src/main/java/hudson/plugins/robot/RobotParser.java b/src/main/java/hudson/plugins/robot/RobotParser.java index ad5512d..a1eed5e 100644 --- a/src/main/java/hudson/plugins/robot/RobotParser.java +++ b/src/main/java/hudson/plugins/robot/RobotParser.java @@ -15,6 +15,8 @@ */ package hudson.plugins.robot; +import org.apache.commons.lang.StringUtils; + import hudson.AbortException; import hudson.FilePath; import hudson.Util; @@ -44,10 +46,12 @@ public class RobotParser { - public RobotResult parse(String outputFileLocations, String outputPath, Run build, FilePath workSpace, String logFileName, String reportFileName) + public RobotResult parse(String outputFileLocations, String outputPath, Run build, + FilePath workSpace, String logFileName, String reportFileName, + String includeTags[], String excludeTags[]) throws InterruptedException, IOException { RobotResult result = new FilePath(workSpace, outputPath).act( - new RobotParserCallable(outputFileLocations, logFileName, reportFileName)); + new RobotParserCallable(outputFileLocations, logFileName, reportFileName, includeTags, excludeTags)); return result; } @@ -58,11 +62,29 @@ public static final class RobotParserCallable implements private final String outputFileLocations; private final String logFileName; private final String reportFileName; + private final String[] includeTags; + private final String[] excludeTags; + + private String[] filterTags(String tags[]) { + List out = new ArrayList(); + if (tags != null) { + for (String tag : tags) { + tag = StringUtils.strip(tag); + if (StringUtils.isNotEmpty(tag)) { + out.add(tag); + } + } + } + return out.toArray(new String[0]); + } - public RobotParserCallable(String outputFileLocations, String logFileName, String reportFileName) { + public RobotParserCallable(String outputFileLocations, String logFileName, String reportFileName, + String includeTags[], String excludeTags[]) { this.outputFileLocations = outputFileLocations; this.logFileName = logFileName; this.reportFileName = reportFileName; + this.includeTags = filterTags(includeTags); + this.excludeTags = filterTags(excludeTags); } public RobotResult invoke(File ws, VirtualChannel channel) @@ -151,7 +173,28 @@ private RobotSuiteResult processSuite(XMLStreamReader reader, RobotTestObject pa } else if("suite".equals(tagName)){ suite.addChild(processSuite(reader, suite, baseDirectory)); } else if("test".equals(tagName)){ - suite.addCaseResult(processTest(reader, suite)); + RobotCaseResult test = processTest(reader, suite); + List tags = test.getTags(); + // If no include tags are given, default is to include + boolean include = includeTags.length == 0; + + for (String tag : includeTags) { + if (tags.contains(tag)) { + include = true; + break; + } + } + + for (String tag : excludeTags) { + if (tags.contains(tag)) { + include = false; + break; + } + } + + if (include) { + suite.addCaseResult(test); + } } else if("kw".equals(tagName) && "teardown".equals(reader.getAttributeValue(null, "type"))) { ignoreUntilStarts(reader, "status"); if ("FAIL".equals(reader.getAttributeValue(null, "status"))) { diff --git a/src/main/java/hudson/plugins/robot/RobotPublisher.java b/src/main/java/hudson/plugins/robot/RobotPublisher.java index ced3770..78e3237 100755 --- a/src/main/java/hudson/plugins/robot/RobotPublisher.java +++ b/src/main/java/hudson/plugins/robot/RobotPublisher.java @@ -63,6 +63,8 @@ public class RobotPublisher extends Recorder implements Serializable, final private double unstableThreshold; private String[] otherFiles; final private boolean enableCache; + private String[] includeTags; + private String[] excludeTags; //Default to true private boolean onlyCritical = true; @@ -91,12 +93,17 @@ public class RobotPublisher extends Recorder implements Serializable, * Other files to be saved * @param enableCache * True if caching is used + * @param includeTags + * Include only tests with these tags + * @param excludeTags + * Exclude tests with these tags */ @DataBoundConstructor public RobotPublisher(String outputPath, String outputFileName, boolean disableArchiveOutput, String reportFileName, String logFileName, double passThreshold, double unstableThreshold, - boolean onlyCritical, String otherFiles, boolean enableCache) { + boolean onlyCritical, String otherFiles, boolean enableCache, + String includeTags, String excludeTags) { this.outputPath = outputPath; this.outputFileName = outputFileName; this.disableArchiveOutput = disableArchiveOutput; @@ -114,6 +121,14 @@ public RobotPublisher(String outputPath, String outputFileName, } this.otherFiles = filemasks; } + + if (includeTags != null) { + this.includeTags = includeTags.split("[, ]+"); + } + + if (excludeTags != null) { + this.excludeTags = excludeTags.split("[, ]+"); + } } /** @@ -204,6 +219,22 @@ public String getOtherFiles() { return StringUtils.join(otherFiles, ","); } + /** + * Gets the comma separated list of tags to include + * @return List of tags as string + */ + public String getIncludeTags() { + return StringUtils.join(includeTags, ","); + } + + /** + * Gets the comma separated list of tags to exclude + * @return List of tags as string + */ + public String getExcludeTags() { + return StringUtils.join(excludeTags, ","); + } + /** * {@inheritDoc} */ @@ -218,7 +249,7 @@ public Collection getProjectActions(AbstractProject project) { protected RobotResult parse(String expandedTestResults, String outputPath, Run build, FilePath workspace, Launcher launcher, TaskListener listener) throws IOException, InterruptedException { - return new RobotParser().parse(expandedTestResults, outputPath, build, workspace, getLogFileName(), getReportFileName()); + return new RobotParser().parse(expandedTestResults, outputPath, build, workspace, getLogFileName(), getReportFileName(), includeTags, excludeTags); } /** @@ -229,6 +260,7 @@ public void perform(Run build, FilePath workspace, Launcher launcher, Task if (build.getResult() != Result.ABORTED) { PrintStream logger = listener.getLogger(); logger.println(Messages.robot_publisher_started()); + logger.println(String.format("Using '%s', '%s'", StringUtils.join(includeTags, ","), StringUtils.join(excludeTags, ","))); logger.println(Messages.robot_publisher_parsing()); RobotResult result; diff --git a/src/main/java/hudson/plugins/robot/RobotStep.java b/src/main/java/hudson/plugins/robot/RobotStep.java index 2343874..db15551 100644 --- a/src/main/java/hudson/plugins/robot/RobotStep.java +++ b/src/main/java/hudson/plugins/robot/RobotStep.java @@ -38,6 +38,8 @@ public class RobotStep extends Step { private @CheckForNull String[] otherFiles; private boolean enableCache = true; private boolean onlyCritical = true; + private @CheckForNull String[] includeTags; + private @CheckForNull String[] excludeTags; @@ -89,7 +91,15 @@ public boolean getEnableCache() { public boolean getOnlyCritical() { return this.onlyCritical; } - + + public String getIncludeTags() { + return StringUtils.join(includeTags, ","); + } + + public String getExcludeTags() { + return StringUtils.join(excludeTags, ","); + } + @DataBoundSetter public void setReportFileName(String reportFileName) { this.reportFileName = Util.fixEmpty(reportFileName); @@ -142,6 +152,22 @@ public void setOtherFiles(String otherFiles) { } } + @DataBoundSetter + public void setIncludeTags(String includeTags) { + includeTags = Util.fixEmpty(includeTags); + if (includeTags != null) { + this.includeTags = includeTags.split("[, ]+"); + } + } + + @DataBoundSetter + public void setExcludeTags(String excludeTags) { + excludeTags = Util.fixEmpty(excludeTags); + if (excludeTags != null) { + this.excludeTags = excludeTags.split("[, ]+"); + } + } + @Override public StepExecution start(StepContext context) throws Exception { return new RobotStepExecution(this, context); diff --git a/src/main/java/hudson/plugins/robot/RobotStepExecution.java b/src/main/java/hudson/plugins/robot/RobotStepExecution.java index 702ea2b..c5909d8 100644 --- a/src/main/java/hudson/plugins/robot/RobotStepExecution.java +++ b/src/main/java/hudson/plugins/robot/RobotStepExecution.java @@ -28,7 +28,11 @@ public class RobotStepExecution extends SynchronousNonBlockingStepExecution + + + + + + diff --git a/src/main/resources/hudson/plugins/robot/RobotPublisher/config.properties b/src/main/resources/hudson/plugins/robot/RobotPublisher/config.properties index bcb46f4..77249bc 100644 --- a/src/main/resources/hudson/plugins/robot/RobotPublisher/config.properties +++ b/src/main/resources/hudson/plugins/robot/RobotPublisher/config.properties @@ -14,6 +14,9 @@ advanced.otherfiles=Other files to copy advanced.otherfiles.description=Comma separated list of robot related artifacts to be saved advanced.enableCache=Enable cache advanced.enableCache.description=Enable cache for test results - +advanced.includeTags=Include Tags +advanced.includeTags.description=Comma separated list of tags to include +advanced.excludeTags=Exclude Tags +advanced.excludeTags.description=Comma separated list of tags to exclude thresholds.label=Thresholds for build result thresholds.onlycritical=Use thresholds for critical tests only \ No newline at end of file diff --git a/src/main/resources/hudson/plugins/robot/RobotPublisher/help-excludeTags.html b/src/main/resources/hudson/plugins/robot/RobotPublisher/help-excludeTags.html new file mode 100644 index 0000000..ae1dea0 --- /dev/null +++ b/src/main/resources/hudson/plugins/robot/RobotPublisher/help-excludeTags.html @@ -0,0 +1,3 @@ +
+

Tests that match these tags are completely excluded.

+
diff --git a/src/main/resources/hudson/plugins/robot/RobotPublisher/help-includeTags.html b/src/main/resources/hudson/plugins/robot/RobotPublisher/help-includeTags.html new file mode 100644 index 0000000..368228c --- /dev/null +++ b/src/main/resources/hudson/plugins/robot/RobotPublisher/help-includeTags.html @@ -0,0 +1,4 @@ +
+

Only include tests with these tags.

+

If empty all tests are included.

+
diff --git a/src/main/resources/hudson/plugins/robot/RobotStep/config.jelly b/src/main/resources/hudson/plugins/robot/RobotStep/config.jelly index f71e1a7..6c11f3a 100755 --- a/src/main/resources/hudson/plugins/robot/RobotStep/config.jelly +++ b/src/main/resources/hudson/plugins/robot/RobotStep/config.jelly @@ -29,6 +29,12 @@ limitations under the License. + + + + + + diff --git a/src/main/resources/hudson/plugins/robot/RobotStep/config.properties b/src/main/resources/hudson/plugins/robot/RobotStep/config.properties index bcb46f4..77249bc 100644 --- a/src/main/resources/hudson/plugins/robot/RobotStep/config.properties +++ b/src/main/resources/hudson/plugins/robot/RobotStep/config.properties @@ -14,6 +14,9 @@ advanced.otherfiles=Other files to copy advanced.otherfiles.description=Comma separated list of robot related artifacts to be saved advanced.enableCache=Enable cache advanced.enableCache.description=Enable cache for test results - +advanced.includeTags=Include Tags +advanced.includeTags.description=Comma separated list of tags to include +advanced.excludeTags=Exclude Tags +advanced.excludeTags.description=Comma separated list of tags to exclude thresholds.label=Thresholds for build result thresholds.onlycritical=Use thresholds for critical tests only \ No newline at end of file diff --git a/src/main/resources/hudson/plugins/robot/RobotStep/help-excludeTags.html b/src/main/resources/hudson/plugins/robot/RobotStep/help-excludeTags.html new file mode 100644 index 0000000..ae1dea0 --- /dev/null +++ b/src/main/resources/hudson/plugins/robot/RobotStep/help-excludeTags.html @@ -0,0 +1,3 @@ +
+

Tests that match these tags are completely excluded.

+
diff --git a/src/main/resources/hudson/plugins/robot/RobotStep/help-includeTags.html b/src/main/resources/hudson/plugins/robot/RobotStep/help-includeTags.html new file mode 100644 index 0000000..368228c --- /dev/null +++ b/src/main/resources/hudson/plugins/robot/RobotStep/help-includeTags.html @@ -0,0 +1,4 @@ +
+

Only include tests with these tags.

+

If empty all tests are included.

+
diff --git a/src/test/java/hudson/plugins/robot/RobotPublisherSystemTest.java b/src/test/java/hudson/plugins/robot/RobotPublisherSystemTest.java index f26c8d0..59b6337 100644 --- a/src/test/java/hudson/plugins/robot/RobotPublisherSystemTest.java +++ b/src/test/java/hudson/plugins/robot/RobotPublisherSystemTest.java @@ -57,12 +57,12 @@ public class RobotPublisherSystemTest { public void testRoundTripConfig() throws Exception { FreeStyleProject p = j.jenkins.createProject(FreeStyleProject.class, "testRoundTripConfig"); RobotPublisher before = new RobotPublisher("a", "b", false, "c", "d", 11, 27, true, "dir1/*.jpg, dir2/*.png", - false); + false, "include,include2", "exclude,exclude2"); p.getPublishersList().add(before); j.configRoundtrip(p); RobotPublisher after = p.getPublishersList().get(RobotPublisher.class); assertThat( - "outputPath,outputFileName,reportFileName,logFileName,passThreshold,unstableThreshold,onlyCritical,otherFiles", + "outputPath,outputFileName,reportFileName,logFileName,passThreshold,unstableThreshold,onlyCritical,otherFiles,includeTags,excludeTags", before, samePropertyValuesAs(after)); } @@ -70,7 +70,7 @@ public void testRoundTripConfig() throws Exception { public void testConfigView() throws Exception { FreeStyleProject p = j.jenkins.createProject(FreeStyleProject.class, "testConfigView"); RobotPublisher before = new RobotPublisher("a", "b", false, "c", "d", 11, 27, true, "dir1/*.jpg, dir2/*.png", - false); + false, "include,include2", "exclude,exclude2"); p.getPublishersList().add(before); HtmlPage page = j.createWebClient().getPage(p, "configure"); WebAssert.assertTextPresent(page, "Publish Robot Framework"); @@ -82,6 +82,10 @@ public void testConfigView() throws Exception { WebAssert.assertInputContainsValue(page, "_.reportFileName", "c"); WebAssert.assertInputPresent(page, "_.logFileName"); WebAssert.assertInputContainsValue(page, "_.logFileName", "d"); + WebAssert.assertInputPresent(page, "_.includeTags"); + WebAssert.assertInputContainsValue(page, "_.includeTags", "include,include2"); + WebAssert.assertInputPresent(page, "_.excludeTags"); + WebAssert.assertInputContainsValue(page, "_.excludeTags", "exclude,exclude2"); WebAssert.assertInputPresent(page, "_.unstableThreshold"); WebAssert.assertInputContainsValue(page, "_.unstableThreshold", "27.0"); WebAssert.assertInputPresent(page, "_.passThreshold"); diff --git a/src/test/java/hudson/plugins/robot/RobotPublisherTest.java b/src/test/java/hudson/plugins/robot/RobotPublisherTest.java index 335813d..070692c 100644 --- a/src/test/java/hudson/plugins/robot/RobotPublisherTest.java +++ b/src/test/java/hudson/plugins/robot/RobotPublisherTest.java @@ -35,7 +35,7 @@ protected void setUp() throws Exception { } private RobotPublisher getRobotPublisher(double passThreshold, double unstableThreshold) { - return new RobotPublisher("", "", false, "", "", passThreshold, unstableThreshold, onlyCritical, "", false); + return new RobotPublisher("", "", false, "", "", passThreshold, unstableThreshold, onlyCritical, "", false, null, null); } public void testBlankConfigShouldReturnDefaults() { @@ -102,7 +102,7 @@ public void testShouldBeSuccessWithOnlyCritical(){ } public void testShouldUnstableLowFailures() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("low_failure_output.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("low_failure_output.xml", null, null, null, null); RobotResult result = remoteOperation.invoke(new File(RobotPublisherTest.class.getResource("low_failure_output.xml").toURI()).getParentFile(), null); result.tally(null); @@ -118,7 +118,7 @@ public void testShouldUnstableLowFailures() throws Exception{ } public void testShouldHandleDurationWithoutTimes() throws Exception { - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("rebot_output.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("rebot_output.xml", null, null, null, null); RobotResult result = remoteOperation.invoke(new File(RobotPublisherTest.class.getResource("rebot_output.xml").toURI()).getParentFile(), null); result.tally(null); diff --git a/src/test/java/hudson/plugins/robot/graph/RobotGraphHelperTest.java b/src/test/java/hudson/plugins/robot/graph/RobotGraphHelperTest.java index 6096f52..0f5953c 100644 --- a/src/test/java/hudson/plugins/robot/graph/RobotGraphHelperTest.java +++ b/src/test/java/hudson/plugins/robot/graph/RobotGraphHelperTest.java @@ -36,7 +36,7 @@ public class RobotGraphHelperTest extends TestCase { protected void setUp() throws Exception { super.setUp(); - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("output.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("output.xml", null, null, null, null); RobotResult result = remoteOperation.invoke(new File(new RobotGraphHelperTest().getClass().getResource("output.xml").toURI()).getParentFile(), null); result.tally(null); diff --git a/src/test/java/hudson/plugins/robot/model/RobotResultTest.java b/src/test/java/hudson/plugins/robot/model/RobotResultTest.java index a98792f..5a4bbc8 100644 --- a/src/test/java/hudson/plugins/robot/model/RobotResultTest.java +++ b/src/test/java/hudson/plugins/robot/model/RobotResultTest.java @@ -36,7 +36,7 @@ public class RobotResultTest { @Before public void setUp() throws Exception { - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("output.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("output.xml", null, null, null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("output.xml").toURI()).getParentFile(), null); result.tally(null); } @@ -112,7 +112,7 @@ public void testShouldParseFailMessages(){ @Test public void testShouldParseNewCriticalCases() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", null, null, null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("new_critical_output.xml").toURI()).getParentFile(), null); result.tally(null); @@ -136,7 +136,7 @@ public void testShouldParseFailedCriticalCases(){ @Test public void testShouldParseFailedNewCriticalCases() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", null, null, null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("new_critical_output.xml").toURI()).getParentFile(), null); result.tally(null); @@ -145,7 +145,7 @@ public void testShouldParseFailedNewCriticalCases() throws Exception{ @Test public void testShouldAcceptNoLogAndReport() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", null, null, null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("new_critical_output.xml").toURI()).getParentFile(), null); result.tally(null); @@ -155,7 +155,7 @@ public void testShouldAcceptNoLogAndReport() throws Exception{ @Test public void testShouldGetLogWhenAvailable() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", "log.html", "report.html"); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", "log.html", "report.html", null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("new_critical_output.xml").toURI()).getParentFile(), null); result.tally(null); @@ -164,7 +164,7 @@ public void testShouldGetLogWhenAvailable() throws Exception{ @Test public void testShouldGetLogAndReportInSuites() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("output.xml", "log.html", "report.html"); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("output.xml", "log.html", "report.html", null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("output.xml").toURI()).getParentFile(), null); result.tally(null); @@ -175,7 +175,7 @@ public void testShouldGetLogAndReportInSuites() throws Exception{ @Test public void testIdShouldBeEmptyWhenNotAvailable() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", "log.html", null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", "log.html", null, null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("new_critical_output.xml").toURI()).getParentFile(), null); result.tally(null); @@ -184,7 +184,7 @@ public void testIdShouldBeEmptyWhenNotAvailable() throws Exception{ @Test public void testShouldGetIdWhenAvailable() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("teardown_fail.xml", "log.html", null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("teardown_fail.xml", "log.html", null, null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("teardown_fail.xml").toURI()).getParentFile(), null); result.tally(null); RobotSuiteResult suite = result.getSuite("Fail"); @@ -196,7 +196,7 @@ public void testShouldGetIdWhenAvailable() throws Exception{ @Test public void testShouldParseCriticalityFromStatusInsteadOfTest() throws Exception{ - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("new_critical_output.xml", null, null, null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("new_critical_output.xml").toURI()).getParentFile(), null); result.tally(null); @@ -251,7 +251,7 @@ public void testShouldReturnCaseTags(){ @Test public void testShouldParseSplittedOutput() throws Exception { - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("testfile.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("testfile.xml", null, null, null, null); result = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("testfile.xml").toURI()).getParentFile(), null); RobotSuiteResult suite = result.getSuite("nestedSuites"); @@ -262,7 +262,7 @@ public void testShouldParseSplittedOutput() throws Exception { @Test public void testShouldParseSuiteTeardownFailures() throws Exception { - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("teardown_fail.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("teardown_fail.xml", null, null, null, null); RobotResult res = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("teardown_fail.xml").toURI()).getParentFile(), null); List failers = res.getAllFailedCases(); assertEquals(3, failers.size()); @@ -270,7 +270,7 @@ public void testShouldParseSuiteTeardownFailures() throws Exception { @Test public void testShouldHandleNameCollisions() throws Exception { - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("collisions.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("collisions.xml", null, null, null, null); RobotResult res = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("collisions.xml").toURI()).getParentFile(), null); List failers = res.getAllFailedCases(); assertEquals(4, failers.size()); @@ -278,7 +278,7 @@ public void testShouldHandleNameCollisions() throws Exception { @Test public void testShouldParseWholeSuiteDuration() throws Exception { - RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("suite-setup-and-teardown.xml", null, null); + RobotParser.RobotParserCallable remoteOperation = new RobotParser.RobotParserCallable("suite-setup-and-teardown.xml", null, null, null, null); RobotResult res = remoteOperation.invoke(new File(RobotSuiteResultTest.class.getResource("suite-setup-and-teardown.xml").toURI()).getParentFile(), null); res.tally(null); assertEquals(10141, res.getDuration());