diff --git a/lib/cucumber/core.rb b/lib/cucumber/core.rb index 2373a8b3..e33b591c 100644 --- a/lib/cucumber/core.rb +++ b/lib/cucumber/core.rb @@ -20,15 +20,16 @@ def execute(gherkin_documents, filters = [], event_bus = EventBus.new) def compile(gherkin_documents, last_receiver, filters = [], event_bus = EventBus.new) first_receiver = compose(filters, last_receiver) gherkin_query = ::Gherkin::Query.new - compiler = Compiler.new(first_receiver, gherkin_query, Cucumber::Messages::IdGenerator::Incrementing.new) - parse gherkin_documents, compiler, event_bus, gherkin_query + id_generator = Cucumber::Messages::IdGenerator::Incrementing.new + compiler = Compiler.new(first_receiver, gherkin_query, id_generator) + parse gherkin_documents, compiler, event_bus, gherkin_query, id_generator self end private - def parse(gherkin_documents, compiler, event_bus, gherkin_query) - parser = Core::Gherkin::Parser.new(compiler, event_bus, gherkin_query) + def parse(gherkin_documents, compiler, event_bus, gherkin_query, id_generator) + parser = Core::Gherkin::Parser.new(compiler, event_bus, gherkin_query, id_generator) gherkin_documents.each do |document| parser.document document end diff --git a/lib/cucumber/core/gherkin/parser.rb b/lib/cucumber/core/gherkin/parser.rb index 1bcab80d..8d214772 100644 --- a/lib/cucumber/core/gherkin/parser.rb +++ b/lib/cucumber/core/gherkin/parser.rb @@ -7,13 +7,14 @@ module Gherkin ParseError = Class.new(StandardError) class Parser - attr_reader :receiver, :event_bus, :gherkin_query - private :receiver, :event_bus, :gherkin_query + attr_reader :receiver, :event_bus, :gherkin_query, :id_generator + private :receiver, :event_bus, :gherkin_query, :id_generator - def initialize(receiver, event_bus, gherkin_query) + def initialize(receiver, event_bus, gherkin_query, id_generator) @receiver = receiver @event_bus = event_bus @gherkin_query = gherkin_query + @id_generator = id_generator end def document(document) @@ -38,7 +39,8 @@ def gherkin_options(document) default_dialect: document.language, include_source: false, include_gherkin_document: true, - include_pickles: true + include_pickles: true, + id_generator: id_generator } end diff --git a/spec/cucumber/core/gherkin/parser_spec.rb b/spec/cucumber/core/gherkin/parser_spec.rb index f441cd92..3f73aaf1 100644 --- a/spec/cucumber/core/gherkin/parser_spec.rb +++ b/spec/cucumber/core/gherkin/parser_spec.rb @@ -10,12 +10,14 @@ module Gherkin let(:receiver) { double } let(:event_bus) { double } let(:gherkin_query) { double } - let(:parser) { Parser.new(receiver, event_bus, gherkin_query) } + let(:id_generator) { double } + let(:parser) { Parser.new(receiver, event_bus, gherkin_query, id_generator) } let(:visitor) { double } before do allow( event_bus ).to receive(:gherkin_source_parsed) allow( gherkin_query ).to receive(:update) + allow( id_generator ).to receive(:new_id) end def parse