lib/cucumber/core/events.rb
require 'cucumber/core/event' module Cucumber module Core module Events # Signals that a {Test::Case} is about to be executed class TestCaseStarting < Event.new(:test_case) # @return [Test::Case] the test case to be executed attr_reader :test_case end # Signals that a {Test::Step} is about to be executed class TestStepStarting < Event.new(:test_step) # @return [Test::Step] the test step to be executed attr_reader :test_step end # Signals that a {Test::Step} has finished executing class TestStepFinished < Event.new(:test_step, :result) # @return [Test::Step] the test step that was executed attr_reader :test_step # @return [Test::Result] the result of running the {Test::Step} attr_reader :result end # Signals that a {Test::Case} has finished executing class TestCaseFinished < Event.new(:test_case, :result) # @return [Test::Case] that was executed attr_reader :test_case # @return [Test::Result] the result of running the {Test::Step} attr_reader :result end # The registry contains all the events registered in the core, # that will be used by the {EventBus} by default. def self.registry build_registry( TestCaseStarting, TestStepStarting, TestStepFinished, TestCaseFinished, ) end # Build an event registry to be passed to the {EventBus} # constructor from a list of types. # # Each type must respond to `event_id` so that it can be added # to the registry hash. # # @return [Hash{Symbol => Class}] def self.build_registry(*types) types.map { |type| [type.event_id, type] }.to_h end end end end