class Cucumber::Cli::Main
def configuration
def configuration return @configuration if @configuration @configuration = Configuration.new(@out_stream, @error_stream) @configuration.parse!(@args) Cucumber.logger = @configuration.log @configuration end
def execute(args)
def execute(args) new(args).execute! end
def execute!(legacy_step_mother = nil)
def execute!(legacy_step_mother = nil) if legacy_step_mother warn("Passing a step_mother to #execute! is deprecated, and has been ignored: #{caller[0]}") end trap_interrupt return @drb_output if run_drb_client runtime = Runtime.new(configuration) runtime.run! runtime.results.failure? rescue ProfilesNotDefinedError, YmlLoadError, ProfileNotFound => e @error_stream.puts e.message true end
def initialize(args, out_stream = STDOUT, error_stream = STDERR)
def initialize(args, out_stream = STDOUT, error_stream = STDERR) @args = args if Cucumber::WINDOWS_MRI @out_stream = out_stream == STDOUT ? Formatter::ColorIO.new(Kernel, STDOUT) : out_stream else @out_stream = out_stream end @error_stream = error_stream @configuration = nil end
def run_drb_client
def run_drb_client return false unless configuration.drb? @drb_output = DRbClient.run(@args, @error_stream, @out_stream, configuration.drb_port) true rescue DRbClientError => e @error_stream.puts "WARNING: #{e.message} Running features locally:" end
def trap_interrupt
def trap_interrupt trap('INT') do exit!(1) if Cucumber.wants_to_quit Cucumber.wants_to_quit = true STDERR.puts "\nExiting... Interrupt again to exit immediately." end end