Skip to content

Commit

Permalink
[Core] Emit step hook messages (#2093)
Browse files Browse the repository at this point in the history
The beforestep and afterstep hook details were not displayed in ndjson report.

Co-authored-by: grasshopper7 <grass.hopper.moc@gmail.com>
  • Loading branch information
grasshopper7 and grass-hopper-moc committed Aug 20, 2020
1 parent 2421c92 commit e6a9b58
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
2 changes: 2 additions & 0 deletions core/src/main/java/io/cucumber/core/runner/CachingGlue.java
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ void prepareGlue(StepTypeRegistry stepTypeRegistry) throws DuplicateStepDefiniti
// TODO: Redefine hooks for each scenario, similar to how we're doing
// for CoreStepDefinition
beforeHooks.forEach(this::emitHook);
beforeStepHooks.forEach(this::emitHook);

stepDefinitions.forEach(stepDefinition -> {
StepExpression expression = stepExpressionFactory.createExpression(stepDefinition);
Expand All @@ -251,6 +252,7 @@ void prepareGlue(StepTypeRegistry stepTypeRegistry) throws DuplicateStepDefiniti
emitStepDefined(coreStepDefinition);
});

afterStepHooks.forEach(this::emitHook);
afterHooks.forEach(this::emitHook);
}

Expand Down
24 changes: 23 additions & 1 deletion core/src/test/java/io/cucumber/core/runner/CachingGlueTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.cucumber.core.backend.SourceReference;
import io.cucumber.core.backend.StepDefinition;
import io.cucumber.core.backend.TestCaseState;
import io.cucumber.core.eventbus.EventBus;
import io.cucumber.core.feature.TestFeatureParser;
import io.cucumber.core.gherkin.Feature;
import io.cucumber.core.gherkin.Step;
Expand All @@ -24,10 +25,13 @@
import io.cucumber.datatable.TableEntryByTypeTransformer;
import io.cucumber.docstring.DocStringType;
import org.junit.jupiter.api.Test;
import io.cucumber.messages.Messages;
import io.cucumber.plugin.event.EventHandler;

import java.lang.reflect.Type;
import java.net.URI;
import java.time.Clock;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
Expand Down Expand Up @@ -458,6 +462,25 @@ void scenario_scoped_hooks_have_higher_order() {

assertThat(hooks, contains(hookDefinition2, hookDefinition1, hookDefinition3));
}

@Test
public void emits_hook_messages_to_bus() {

List<Messages.Envelope> events = new ArrayList<>();
EventHandler<Messages.Envelope> messageEventHandler = e -> events.add(e);

EventBus bus = new TimeServiceEventBus(Clock.systemUTC(), UUID::randomUUID);
bus.registerHandlerFor(Messages.Envelope.class, messageEventHandler);
CachingGlue glue = new CachingGlue(bus);

glue.addBeforeHook(new MockedScenarioScopedHookDefinition());
glue.addAfterHook(new MockedScenarioScopedHookDefinition());
glue.addBeforeStepHook(new MockedScenarioScopedHookDefinition());
glue.addAfterStepHook(new MockedScenarioScopedHookDefinition());

glue.prepareGlue(stepTypeRegistry);
assertThat(events.size(), is(4));
}

private static class MockedScenarioScopedStepDefinition extends StubStepDefinition implements ScenarioScoped {

Expand Down Expand Up @@ -773,5 +796,4 @@ public boolean isDisposed() {
}

}

}

0 comments on commit e6a9b58

Please sign in to comment.