require 'securerandom' require 'nokogiri' Given('a directory without standard Cucumber project directory structure') do FileUtils.cd('.') do FileUtils.rm_rf 'features' if File.directory?('features') end end Given('log only formatter is declared') do write_file('features/support/log_only_formatter.rb', [ 'class LogOnlyFormatter', ' attr_reader :io', '', ' def initialize(config)', ' @io = config.out_stream', ' end', '', ' def attach(src, media_type)', ' @io.puts src', ' end', 'end' ].join("\n")) end Then('exactly these files should be loaded: {list}') do |files| expect(command_line.stdout.scan(/^ \* (.*\.rb)$/).flatten).to eq files end Then('exactly these features should be run: {list}') do |files| expect(command_line.stdout.scan(/^ \* (.*\.feature)$/).flatten).to eq files end Then('{string} should not be required') do |file_name| expect(command_line.stdout).not_to include("* #{file_name}") end Then('{string} should be required') do |file_name| expect(command_line.stdout).to include("* #{file_name}") end Then('it fails before running features with:') do |expected| expect(command_line.all_output).to start_with_output(expected) expect(command_line).to have_failed end Then('the file {string} should contain:') do |path, content| expect(File.read(path)).to include(content) end When('I rerun the previous command with the same seed') do previous_seed = command_line.stdout.match(/with seed (\d+)/)[1] execute_extra_cucumber(command_line.args.gsub(/random/, "random:#{previous_seed}")) end Then('the output of both commands should be the same') do expect(command_line.stdout).to be_similar_output_than(last_extra_command.stdout) end