Class DuplicateScenarioTitles

java.lang.Object
com.arc_e_tect.gradle.gherkin.parser.DuplicateScenarioTitles

public final class DuplicateScenarioTitles extends Object
Finds scenarios whose title collides under ScenarioFingerprint - the identity used to key persisted progress history - regardless of whether the colliding scenarios were parsed from the same .feature file or different ones.

ScenarioFingerprint deliberately hashes a scenario's title alone, so that a scenario keeps its history when moved between feature files. That same title-only identity means two distinct scenarios that merely happen to share a title are indistinguishable to it: within a single run, whichever is processed last silently overwrites the other's entry in the persisted history map, and across runs a stage timestamp genuinely earned by one can permanently leak onto the other, since history timestamps are never cleared once set. Rejecting the collision outright, before either the report or the history file is written, is simpler and safer than trying to disambiguate the two scenarios after the fact.

Scope: the caller passes one project's occurrences at a time, so titles collide only within a project. Two projects implementing the same cross-cutting concern share scenario titles by design, and their histories are stored in separate files - so a title-only fingerprint stays unambiguous there without needing to be qualified, and nothing about those two scenarios needs rejecting.