private StageResult convert(final Path source, final ResultsVisitor visitor, final FixtureResult result) { final StageResult stageResult = new StageResult() .setName(result.getName()) .setTime(convert(result.getStart(), result.getStop())) .setStatus(convert(result.getStatus())) .setSteps(convert(result.getSteps(), step -> convert(source, visitor, step))) .setDescription(result.getDescription()) .setDescriptionHtml(result.getDescriptionHtml()) .setAttachments(convert(result.getAttachments(), attach -> convert(source, visitor, attach))) .setParameters(convert(result.getParameters(), this::convert)); Optional.of(result) .map(ExecutableItem::getStatusDetails) .ifPresent(statusDetails -> { stageResult.setStatusMessage(statusDetails.getMessage()); stageResult.setStatusTrace(statusDetails.getTrace()); }); return stageResult; }
private Stream<Attachment> extractAttachments(StageResult stageResult) { Stream<Attachment> fromSteps = stageResult.getSteps().stream().flatMap(this::extractAttachments); Stream<Attachment> fromAttachments = stageResult.getAttachments().stream(); return Stream.concat(fromSteps, fromAttachments); }
private StageResult getTestStage(final Path source, final ResultsVisitor visitor, final TestResult result) { final StageResult testStage = new StageResult(); testStage.setSteps(convert(result.getSteps(), step -> convert(source, visitor, step))); testStage.setAttachments(convert(result.getAttachments(), attachment -> convert(source, visitor, attachment))); testStage.setStatus(convert(result.getStatus())); testStage.setDescription(result.getDescription()); testStage.setDescriptionHtml(result.getDescriptionHtml()); Optional.of(result) .map(ExecutableItem::getStatusDetails) .ifPresent(statusDetails -> { testStage.setStatusMessage(statusDetails.getMessage()); testStage.setStatusTrace(statusDetails.getTrace()); }); return testStage; }
final StageResult testStage = new StageResult(); if (!source.getSteps().isEmpty()) { testStage.setSteps(convert( source.getSteps(), step -> convert(directory, visitor, step, status, dest.getStatusMessage(), dest.getStatusTrace())) testStage.setAttachments(convert(source.getAttachments(), at -> convert(directory, visitor, at))); testStage.setStatus(status); testStage.setStatusMessage(dest.getStatusMessage()); testStage.setStatusTrace(dest.getStatusTrace()); dest.setTestStage(testStage);
@Test public void shouldParseStdOutOnFail() throws Exception { process( "trxdata/sample.trx", "sample.trx" ); final ArgumentCaptor<TestResult> captor = ArgumentCaptor.forClass(TestResult.class); verify(visitor, times(4)).visitTestResult(captor.capture()); assertThat(captor.getAllValues()) .filteredOn(result -> result.getStatus() == Status.FAILED) .filteredOn(result -> result.getTestStage().getSteps().size() == 10) .filteredOn(result -> result.getTestStage().getSteps().get(1).getName().contains("Given I have entered 50 into the calculator")) .filteredOn(result -> result.getTestStage().getSteps().get(3).getName().contains("And I have entered -1 into the calculator")) .hasSize(1); }
@Test public void shouldAddLogAsAttachment() throws Exception { final Attachment hey = new Attachment().setUid("some-uid"); when(visitor.visitAttachmentFile(any())).thenReturn(hey); process( "junitdata/TEST-test.SampleTest.xml", "TEST-test.SampleTest.xml", "junitdata/test.SampleTest.txt", "test.SampleTest.txt" ); final ArgumentCaptor<Path> attachmentCaptor = ArgumentCaptor.forClass(Path.class); verify(visitor, times(1)).visitAttachmentFile(attachmentCaptor.capture()); assertThat(attachmentCaptor.getValue()) .isRegularFile() .hasContent("some-test-log"); final ArgumentCaptor<TestResult> captor = ArgumentCaptor.forClass(TestResult.class); verify(visitor, times(1)).visitTestResult(captor.capture()); final StageResult testStage = captor.getValue().getTestStage(); assertThat(testStage) .describedAs("Should create a test stage") .isNotNull(); assertThat(testStage.getAttachments()) .describedAs("Should add an attachment") .hasSize(1) .describedAs("Attachment should has right uid and name") .extracting(Attachment::getName, Attachment::getUid) .containsExactly(Tuple.tuple("System out", "some-uid")); }
private StageResult getTestStage(final Path source, final ResultsVisitor visitor, final TestResult result) { final StageResult testStage = new StageResult(); testStage.setSteps(convert(result.getSteps(), step -> convert(source, visitor, step))); testStage.setAttachments(convert(result.getAttachments(), attachment -> convert(source, visitor, attachment))); testStage.setStatus(convert(result.getStatus())); testStage.setDescription(result.getDescription()); testStage.setDescriptionHtml(result.getDescriptionHtml()); Optional.of(result) .map(ExecutableItem::getStatusDetails) .ifPresent(statusDetails -> { testStage.setStatusMessage(statusDetails.getMessage()); testStage.setStatusTrace(statusDetails.getTrace()); }); return testStage; }
final StageResult testStage = new StageResult(); if (!source.getSteps().isEmpty()) { testStage.setSteps(convert( source.getSteps(), step -> convert(directory, visitor, step, status, dest.getStatusMessage(), dest.getStatusTrace())) testStage.setAttachments(convert(source.getAttachments(), at -> convert(directory, visitor, at))); testStage.setStatus(status); testStage.setStatusMessage(dest.getStatusMessage()); testStage.setStatusTrace(dest.getStatusTrace()); dest.setTestStage(testStage);
private StageResult convert(final Path source, final ResultsVisitor visitor, final FixtureResult result) { final StageResult stageResult = new StageResult() .setName(result.getName()) .setTime(convert(result.getStart(), result.getStop())) .setStatus(convert(result.getStatus())) .setSteps(convert(result.getSteps(), step -> convert(source, visitor, step))) .setDescription(result.getDescription()) .setDescriptionHtml(result.getDescriptionHtml()) .setAttachments(convert(result.getAttachments(), attach -> convert(source, visitor, attach))) .setParameters(convert(result.getParameters(), this::convert)); Optional.of(result) .map(ExecutableItem::getStatusDetails) .ifPresent(statusDetails -> { stageResult.setStatusMessage(statusDetails.getMessage()); stageResult.setStatusTrace(statusDetails.getTrace()); }); return stageResult; }