Skip to content

Commit 6a46eea

Browse files
U117293U117293
U117293
authored and
U117293
committed
fix: managed dirty glue for #2902
1 parent ac77eed commit 6a46eea

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

Diff for: cucumber-core/src/main/java/io/cucumber/core/runner/CachingGlue.java

+17-18
Original file line numberDiff line numberDiff line change
@@ -277,10 +277,6 @@ void prepareGlue(Locale locale) throws DuplicateStepDefinitionException {
277277
stepDefinitionsHashCode = stepDefinitionsHashCodeNew;
278278
}
279279

280-
stepDefinitionsChanged = true; // TODO comment this line to make build
281-
// fail, e.g. due to
282-
// io.cucumber.core.plugin.PrettyFormatterTest.should_handle_scenario_outline
283-
284280
// TODO: separate prepared and unprepared glue into different classes
285281
if (parameterTypesDefinitionsChanged) {
286282
// parameters changed from the previous scenario => re-register them
@@ -367,7 +363,7 @@ void prepareGlue(Locale locale) throws DuplicateStepDefinitionException {
367363
throw new DuplicateStepDefinitionException(previous, stepDefinition);
368364
}
369365
stepDefinitionsByPattern.put(coreStepDefinition.getExpression().getSource(), coreStepDefinition);
370-
emitStepDefined(coreStepDefinition);
366+
emitStepDefined(coreStepDefinition); // FIXME if step definition are cached, the StepDefinedEvent is not emitted anymore, so io.cucumber.core.runtime.RuntimeTest#generates_events_for_glue_and_scenario_scoped_glue fails
371367
});
372368
}
373369

@@ -515,19 +511,22 @@ private List<PickleStepDefinitionMatch> stepDefinitionMatches(URI uri, Step step
515511
}
516512

517513
void removeScenarioScopedGlue() {
518-
removeScenarioScopedGlue(beforeHooks);
519-
removeScenarioScopedGlue(beforeStepHooks);
520-
removeScenarioScopedGlue(afterHooks);
521-
removeScenarioScopedGlue(afterStepHooks);
522-
removeScenarioScopedGlue(stepDefinitions);
523-
removeScenarioScopedGlue(dataTableTypeDefinitions);
524-
removeScenarioScopedGlue(docStringTypeDefinitions);
525-
removeScenarioScopedGlue(parameterTypeDefinitions);
526-
removeScenarioScopedGlue(defaultParameterTransformers);
527-
removeScenarioScopedGlue(defaultDataTableEntryTransformers);
528-
removeScenarioScopedGlue(defaultDataTableCellTransformers);
529-
530-
stepDefinitionsByPattern.clear();
514+
boolean dirty = false;
515+
dirty |= removeScenarioScopedGlue(beforeHooks);
516+
dirty |= removeScenarioScopedGlue(beforeStepHooks);
517+
dirty |= removeScenarioScopedGlue(afterHooks);
518+
dirty |= removeScenarioScopedGlue(afterStepHooks);
519+
dirty |= removeScenarioScopedGlue(stepDefinitions);
520+
dirty |= removeScenarioScopedGlue(dataTableTypeDefinitions);
521+
dirty |= removeScenarioScopedGlue(docStringTypeDefinitions);
522+
dirty |= removeScenarioScopedGlue(parameterTypeDefinitions);
523+
dirty |= removeScenarioScopedGlue(defaultParameterTransformers);
524+
dirty |= removeScenarioScopedGlue(defaultDataTableEntryTransformers);
525+
dirty |= removeScenarioScopedGlue(defaultDataTableCellTransformers);
526+
527+
if (dirty) {
528+
stepDefinitionsByPattern.clear();
529+
}
531530

532531
}
533532

0 commit comments

Comments
 (0)