Skip to content

Commit e65d253

Browse files
U117293U117293
U117293
authored and
U117293
committed
fix: corrected cache invalidation for #2902
1 parent 6a46eea commit e65d253

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

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

+14-9
Original file line numberDiff line numberDiff line change
@@ -249,32 +249,32 @@ void prepareGlue(Locale locale) throws DuplicateStepDefinitionException {
249249
int docStringTypeDefinitionsHashCodeNew = docStringTypeDefinitions.hashCode();
250250
int stepDefinitionsHashCodeNew = stepDefinitions.hashCode();
251251
boolean firstTime = stepTypeRegistry == null;
252-
boolean languageChanged = firstTime || !locale.equals(this.locale);
252+
boolean languageChanged = !locale.equals(this.locale);
253253
boolean parameterTypesDefinitionsChanged = parameterTypeDefinitionsHashCode != parameterTypeDefinitionsHashCodeNew
254254
|| parameterTypeDefinitionsHashCode == 0;
255255
boolean docStringTypeDefinitionsChanged = docStringTypeDefinitionsHashCode != docStringTypeDefinitionsHashCodeNew
256-
||
257-
docStringTypeDefinitionsHashCode == 0;
256+
|| docStringTypeDefinitionsHashCode == 0;
258257
boolean dataTableTypeDefinitionsChanged = dataTableTypeDefinitionsHashCode != dataTableTypeDefinitionsHashCodeNew
259-
||
260-
dataTableTypeDefinitionsHashCode == 0;
258+
|| dataTableTypeDefinitionsHashCode == 0;
261259
boolean stepDefinitionsChanged = stepDefinitionsHashCodeNew != stepDefinitionsHashCode
262260
|| stepDefinitionsHashCode == 0;
263261
if (firstTime || languageChanged ||
264-
parameterTypesDefinitionsChanged || stepDefinitionsChanged ||
265-
dataTableTypeDefinitionsChanged || docStringTypeDefinitionsChanged) {
262+
parameterTypesDefinitionsChanged || dataTableTypeDefinitionsChanged ||
263+
docStringTypeDefinitionsChanged || stepDefinitionsChanged) {
266264
// conditions changed => invalidate the glue cache
267265
this.locale = locale;
268266
stepTypeRegistry = new StepTypeRegistry(locale);
269267
stepExpressionFactory = new StepExpressionFactory(stepTypeRegistry, bus);
270268
parameterTypesDefinitionsChanged = true;
271-
stepDefinitionsChanged = true;
272269
dataTableTypeDefinitionsChanged = true;
273270
docStringTypeDefinitionsChanged = true;
271+
stepDefinitionsChanged = true;
274272
parameterTypeDefinitionsHashCode = parameterTypeDefinitionsHashCodeNew;
275273
dataTableTypeDefinitionsHashCode = dataTableTypeDefinitionsHashCodeNew;
276274
docStringTypeDefinitionsHashCode = docStringTypeDefinitionsHashCodeNew;
277275
stepDefinitionsHashCode = stepDefinitionsHashCodeNew;
276+
stepDefinitionsByPattern.clear();
277+
stepPatternByStepText.clear();
278278
}
279279

280280
// TODO: separate prepared and unprepared glue into different classes
@@ -363,7 +363,12 @@ void prepareGlue(Locale locale) throws DuplicateStepDefinitionException {
363363
throw new DuplicateStepDefinitionException(previous, stepDefinition);
364364
}
365365
stepDefinitionsByPattern.put(coreStepDefinition.getExpression().getSource(), 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
366+
emitStepDefined(coreStepDefinition); // FIXME if step definition
367+
// are cached, the
368+
// StepDefinedEvent is not
369+
// emitted anymore, so
370+
// io.cucumber.core.runtime.RuntimeTest#generates_events_for_glue_and_scenario_scoped_glue
371+
// fails
367372
});
368373
}
369374

0 commit comments

Comments
 (0)