use of io.cucumber.plugin.event.StepDefinedEvent in project cucumber-jvm by cucumber.
the class UnusedStepsSummaryPrinterTest method verifyUnusedStepsPrinted.
@Test
void verifyUnusedStepsPrinted() {
ByteArrayOutputStream out = new ByteArrayOutputStream();
UnusedStepsSummaryPrinter summaryPrinter = new UnusedStepsSummaryPrinter(out);
summaryPrinter.setMonochrome(true);
TimeServiceEventBus bus = new TimeServiceEventBus(Clock.systemUTC(), UUID::randomUUID);
summaryPrinter.setEventPublisher(bus);
// Register two steps, use one, then finish the test run
bus.send(new StepDefinedEvent(bus.getInstant(), mockStepDef("my/belly.feature:3", "a few cukes")));
bus.send(new StepDefinedEvent(bus.getInstant(), mockStepDef("my/tummy.feature:5", "some more cukes")));
bus.send(new StepDefinedEvent(bus.getInstant(), mockStepDef("my/gut.feature:7", "even more cukes")));
bus.send(new TestStepFinished(bus.getInstant(), mock(TestCase.class), mockTestStep("my/belly.feature:3"), new Result(Status.UNUSED, Duration.ZERO, null)));
bus.send(new StepDefinedEvent(bus.getInstant(), mockStepDef("my/belly.feature:3", "a few cukes")));
bus.send(new StepDefinedEvent(bus.getInstant(), mockStepDef("my/tummy.feature:5", "some more cukes")));
bus.send(new StepDefinedEvent(bus.getInstant(), mockStepDef("my/gut.feature:7", "even more cukes")));
bus.send(new TestStepFinished(bus.getInstant(), mock(TestCase.class), mockTestStep("my/gut.feature:7"), new Result(Status.UNUSED, Duration.ZERO, null)));
bus.send(new TestRunFinished(bus.getInstant(), new Result(Status.PASSED, Duration.ZERO, null)));
// Verify produced output
assertThat(out, isBytesEqualTo("1 Unused steps:\n" + "my/tummy.feature:5 # some more cukes\n"));
}
use of io.cucumber.plugin.event.StepDefinedEvent in project cucumber-jvm by cucumber.
the class CachingGlue method emitStepDefined.
private void emitStepDefined(CoreStepDefinition coreStepDefinition) {
bus.send(new StepDefinedEvent(bus.getInstant(), new io.cucumber.plugin.event.StepDefinition(coreStepDefinition.getStepDefinition().getLocation(), coreStepDefinition.getExpression().getSource())));
io.cucumber.messages.types.StepDefinition messagesStepDefinition = new io.cucumber.messages.types.StepDefinition();
messagesStepDefinition.setId(coreStepDefinition.getId().toString());
messagesStepDefinition.setPattern(new StepDefinitionPattern(coreStepDefinition.getExpression().getSource(), getExpressionType(coreStepDefinition)));
coreStepDefinition.getDefinitionLocation().ifPresent(reference -> messagesStepDefinition.setSourceReference(createSourceReference(reference)));
Envelope envelope = new Envelope();
envelope.setStepDefinition(messagesStepDefinition);
bus.send(envelope);
}
use of io.cucumber.plugin.event.StepDefinedEvent in project cucumber-jvm by cucumber.
the class RuntimeTest method generates_events_for_glue_and_scenario_scoped_glue.
@Test
void generates_events_for_glue_and_scenario_scoped_glue() {
final Feature feature = TestFeatureParser.parse("test.feature", "" + "Feature: feature name\n" + " Scenario: Run a scenario once\n" + " Given global scoped\n" + " And scenario scoped\n" + " Scenario: Then do it again\n" + " Given global scoped\n" + " And scenario scoped\n" + "");
final List<StepDefinition> stepDefinedEvents = new ArrayList<>();
Plugin eventListener = (EventListener) publisher -> publisher.registerHandlerFor(StepDefinedEvent.class, (StepDefinedEvent event) -> {
stepDefinedEvents.add(event.getStepDefinition());
});
final MockedStepDefinition mockedStepDefinition = new MockedStepDefinition();
final MockedScenarioScopedStepDefinition mockedScenarioScopedStepDefinition = new MockedScenarioScopedStepDefinition();
BackendSupplier backendSupplier = new TestBackendSupplier() {
private Glue glue;
@Override
public void loadGlue(Glue glue, List<URI> gluePaths) {
this.glue = glue;
glue.addStepDefinition(mockedStepDefinition);
}
@Override
public void buildWorld() {
glue.addStepDefinition(mockedScenarioScopedStepDefinition);
}
};
FeatureSupplier featureSupplier = new StubFeatureSupplier(feature);
Runtime.builder().withBackendSupplier(backendSupplier).withAdditionalPlugins(eventListener).withEventBus(new TimeServiceEventBus(new StepDurationTimeService(ZERO), UUID::randomUUID)).withFeatureSupplier(featureSupplier).build().run();
assertThat(stepDefinedEvents.get(0).getPattern(), is(mockedStepDefinition.getPattern()));
assertThat(stepDefinedEvents.get(1).getPattern(), is(mockedScenarioScopedStepDefinition.getPattern()));
// Twice, once for each scenario
assertThat(stepDefinedEvents.get(2).getPattern(), is(mockedStepDefinition.getPattern()));
assertThat(stepDefinedEvents.get(3).getPattern(), is(mockedScenarioScopedStepDefinition.getPattern()));
assertThat(stepDefinedEvents.size(), is(4));
}
Aggregations