@Override public Data getTestData(AbstractBuild<?, ?> ab, Launcher lnchr, BuildListener bl, TestResult tr) throws IOException, InterruptedException { bl.getLogger().println("Scanning for test data..."); boolean foundSession = false; List<String> sessionIDs = null; for (SuiteResult sr : tr.getSuites()) { for (CaseResult cr : sr.getCases()) { sessionIDs = TestingBotReportFactory.findSessionIDs(cr); if (!sessionIDs.isEmpty()) { String errorDetails = cr.getErrorDetails(); if (errorDetails == null) { errorDetails = ""; } TestingBotAPI api = new TestingBotAPI(); Map<String, String> data = new HashMap<String, String>(); data.put("success", cr.isPassed() ? "1" : "0"); data.put("status_message", errorDetails); data.put("name", cr.getFullName()); api.updateTest(sessionIDs.get(0), data); foundSession = true; } } } if (!foundSession) { bl.getLogger().println("No TestingBot sessionIDs found in test output."); return null; } else { return TestingBotReportFactory.INSTANCE; } }
/* (non-Javadoc) * @see hudson.plugins.testlink.result.ResultSeeker#seekAndUpdate(hudson.plugins.testlink.result.TestCaseWrapper<?>[], hudson.model.AbstractBuild, hudson.Launcher, hudson.model.BuildListener, hudson.plugins.testlink.TestLinkSite, hudson.plugins.testlink.result.Report) */ @Override public void seek( TestCaseWrapper[] automatedTestCases, AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener, TestLinkSite testlink) throws ResultSeekerException { listener.getLogger().println(Messages.Results_JUnit_LookingForTestCases()); // i18n try { final JUnitParser parser = new JUnitParser(false); final TestResult testResult = parser.parse(this.includePattern, build, launcher, listener); for (SuiteResult suiteResult : testResult.getSuites()) { for (CaseResult caseResult : suiteResult.getCases()) { for (TestCaseWrapper automatedTestCase : automatedTestCases) { final String[] commaSeparatedValues = automatedTestCase.getKeyCustomFieldValues(this.keyCustomField); for (String value : commaSeparatedValues) { if (!caseResult.isSkipped() && caseResult.getName().equals(value)) { ExecutionStatus status = this.getExecutionStatus(caseResult); automatedTestCase.addCustomFieldAndStatus(value, status); if (this.isIncludeNotes()) { final String notes = this.getJUnitNotes(caseResult, build.number); automatedTestCase.appendNotes(notes); } super.handleResult(automatedTestCase, build, listener, testlink, suiteResult); } } } } } } catch (IOException e) { throw new ResultSeekerException(e); } catch (InterruptedException e) { throw new ResultSeekerException(e); } }