geordi 2.11.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +8 -2
  4. data/CHANGELOG.md +40 -0
  5. data/Gemfile +2 -5
  6. data/Gemfile.lock +50 -3
  7. data/README.md +34 -7
  8. data/Rakefile +6 -10
  9. data/{bin → exe}/b +0 -0
  10. data/{bin → exe}/cap-all +0 -0
  11. data/{bin → exe}/console-for +0 -0
  12. data/{bin → exe}/cuc +0 -0
  13. data/{bin → exe}/cuc-show +0 -0
  14. data/{bin → exe}/cuc-vnc-setup +0 -0
  15. data/{bin → exe}/deploy-to-production +0 -0
  16. data/{bin → exe}/dump-for +0 -0
  17. data/{bin → exe}/dumple +0 -0
  18. data/{bin → exe}/geordi +0 -0
  19. data/{bin → exe}/gitpt +0 -0
  20. data/{bin → exe}/launchy_browser +0 -0
  21. data/{bin → exe}/load-dump +0 -0
  22. data/{bin → exe}/migrate-all +0 -0
  23. data/{bin → exe}/rs +0 -0
  24. data/{bin → exe}/run_tests +0 -0
  25. data/{bin → exe}/shell-for +0 -0
  26. data/{bin → exe}/tests +0 -0
  27. data/geordi.gemspec +23 -20
  28. data/lib/geordi/COMMAND_TEMPLATE +4 -6
  29. data/lib/geordi/capistrano_config.rb +7 -7
  30. data/lib/geordi/chromedriver_updater.rb +9 -10
  31. data/lib/geordi/cli.rb +1 -7
  32. data/lib/geordi/commands/_setup_vnc.rb +23 -23
  33. data/lib/geordi/commands/apache_site.rb +3 -3
  34. data/lib/geordi/commands/bundle_install.rb +3 -3
  35. data/lib/geordi/commands/capistrano.rb +5 -6
  36. data/lib/geordi/commands/chromedriver_update.rb +0 -9
  37. data/lib/geordi/commands/clean.rb +5 -6
  38. data/lib/geordi/commands/commit.rb +0 -1
  39. data/lib/geordi/commands/console.rb +4 -4
  40. data/lib/geordi/commands/create_database_yml.rb +4 -4
  41. data/lib/geordi/commands/create_databases.rb +3 -3
  42. data/lib/geordi/commands/cucumber.rb +25 -25
  43. data/lib/geordi/commands/delete_dumps.rb +12 -12
  44. data/lib/geordi/commands/deploy.rb +27 -28
  45. data/lib/geordi/commands/drop_databases.rb +13 -15
  46. data/lib/geordi/commands/dump.rb +12 -13
  47. data/lib/geordi/commands/eurest.rb +2 -2
  48. data/lib/geordi/commands/firefox.rb +4 -4
  49. data/lib/geordi/commands/migrate.rb +3 -3
  50. data/lib/geordi/commands/png_optimize.rb +15 -14
  51. data/lib/geordi/commands/rake.rb +3 -3
  52. data/lib/geordi/commands/remove_executable_flags.rb +3 -3
  53. data/lib/geordi/commands/rspec.rb +11 -11
  54. data/lib/geordi/commands/security_update.rb +84 -27
  55. data/lib/geordi/commands/server.rb +6 -6
  56. data/lib/geordi/commands/setup.rb +8 -8
  57. data/lib/geordi/commands/shell.rb +3 -3
  58. data/lib/geordi/commands/tests.rb +1 -1
  59. data/lib/geordi/commands/unit.rb +3 -3
  60. data/lib/geordi/commands/update.rb +7 -7
  61. data/lib/geordi/commands/vnc.rb +1 -1
  62. data/lib/geordi/commands/with_rake.rb +3 -3
  63. data/lib/geordi/commands/yarn_install.rb +3 -3
  64. data/lib/geordi/cucumber.rb +35 -36
  65. data/lib/geordi/db_cleaner.rb +40 -41
  66. data/lib/geordi/dump_loader.rb +6 -5
  67. data/lib/geordi/firefox_for_selenium.rb +26 -29
  68. data/lib/geordi/gitpt.rb +14 -15
  69. data/lib/geordi/interaction.rb +2 -6
  70. data/lib/geordi/remote.rb +9 -10
  71. data/lib/geordi/util.rb +26 -27
  72. data/lib/geordi/version.rb +1 -1
  73. metadata +25 -37
  74. data/features/commit.feature +0 -17
  75. data/features/console.feature +0 -7
  76. data/features/cucumber.feature +0 -261
  77. data/features/deploy.feature +0 -66
  78. data/features/dump.feature +0 -34
  79. data/features/firefox.feature +0 -44
  80. data/features/server.feature +0 -31
  81. data/features/setup.feature +0 -11
  82. data/features/shell.feature +0 -78
  83. data/features/support/env.rb +0 -8
  84. data/features/support/step_definitions/aruba_backport_steps.rb +0 -5
  85. data/features/support/step_definitions/miscellaneous_steps.rb +0 -11
@@ -4,14 +4,13 @@ require 'tempfile'
4
4
 
5
5
  module Geordi
6
6
  class ChromedriverUpdater
7
- include Geordi::Interaction
8
7
 
9
8
  def run
10
9
  chrome_version = determine_chrome_version
11
10
  chromedriver_version = determine_chromedriver_version
12
11
 
13
12
  if skip_update?(chrome_version, chromedriver_version)
14
- warn("No update required, you are using for both executables the same version #{chrome_version}!")
13
+ Interaction.warn("No update required, you are using for both executables the same version #{chrome_version}!")
15
14
  else
16
15
  chromedriver_zip = download_chromedriver(chrome_version)
17
16
  unzip(chromedriver_zip, File.expand_path('~/bin'))
@@ -19,7 +18,7 @@ module Geordi
19
18
  chromedriver_zip.unlink
20
19
 
21
20
  # We need to determine the version again, as it could be nil in case no chromedriver was installed before
22
- note "Chromedriver updated to version #{determine_chromedriver_version}"
21
+ Interaction.note "Chromedriver updated to version #{determine_chromedriver_version}"
23
22
  end
24
23
  end
25
24
 
@@ -27,12 +26,12 @@ module Geordi
27
26
 
28
27
  def determine_chrome_version
29
28
  stdout_str, _error_str, status = Open3.capture3('google-chrome', '--version')
30
- chrome_version = if !stdout_str.nil?
29
+ chrome_version = unless stdout_str.nil?
31
30
  stdout_str[/\AGoogle Chrome (\d+)/, 1]
32
31
  end
33
32
 
34
33
  if !status.success? || chrome_version.nil?
35
- fail('Could not determine the current Google Chrome version')
34
+ Interaction.fail('Could not determine the current Google Chrome version')
36
35
  else
37
36
  chrome_version.to_i
38
37
  end
@@ -42,12 +41,12 @@ module Geordi
42
41
  return unless Open3.capture2('which chromedriver')[1].success?
43
42
 
44
43
  stdout_str, _error_str, status = Open3.capture3('chromedriver', '-v')
45
- chromedriver_version = if !stdout_str.nil?
44
+ chromedriver_version = unless stdout_str.nil?
46
45
  stdout_str[/\AChromeDriver (\d+)/, 1]
47
46
  end
48
47
 
49
48
  if !status.success? || chromedriver_version.nil?
50
- fail('Could not determine the current chromedriver version')
49
+ Interaction.fail('Could not determine the current chromedriver version')
51
50
  else
52
51
  chromedriver_version.to_i
53
52
  end
@@ -69,7 +68,7 @@ module Geordi
69
68
 
70
69
  file
71
70
  else
72
- fail("Could not download chromedriver version #{latest_version}")
71
+ Interaction.fail("Could not download chromedriver version #{latest_version}")
73
72
  end
74
73
  end
75
74
 
@@ -80,7 +79,7 @@ module Geordi
80
79
  if response.is_a?(Net::HTTPSuccess)
81
80
  response.body.to_s
82
81
  else
83
- fail("Could not find the latest version for Google Chrome version #{chrome_version}")
82
+ Interaction.fail("Could not find the latest version for Google Chrome version #{chrome_version}")
84
83
  end
85
84
  end
86
85
 
@@ -88,7 +87,7 @@ module Geordi
88
87
  _stdout_str, _error_str, status = Open3.capture3('unzip', '-d', output_dir, '-o', zip.path)
89
88
 
90
89
  unless status.success?
91
- fail("Could not unzip #{zip.path}")
90
+ Interaction.fail("Could not unzip #{zip.path}")
92
91
  end
93
92
  end
94
93
  end
@@ -6,18 +6,12 @@ require 'geordi/util'
6
6
  module Geordi
7
7
  class CLI < Thor
8
8
 
9
- if Geordi::Util.ruby_version <= Gem::Version.new('2.0.0')
10
- warn "Deprecation warning: Ruby 1.8.7 and 1.9.3 support will be dropped in Geordi 3.x."
11
- end
12
-
13
- include Geordi::Interaction
14
-
15
9
  def self.exit_on_failure?
16
10
  true
17
11
  end
18
12
 
19
13
  # load all tasks defined in lib/geordi/commands
20
- Dir[File.expand_path '../commands/*.rb', __FILE__].each do |file|
14
+ Dir[File.expand_path 'commands/*.rb', __dir__].each do |file|
21
15
  class_eval File.read(file), file
22
16
  end
23
17
 
@@ -1,34 +1,34 @@
1
- desc '-setup-vnc', 'Setup VNC for running Selenium tests there', :hide => true
1
+ desc '-setup-vnc', 'Setup VNC for running Selenium tests there', hide: true
2
2
  def _setup_vnc
3
3
  `clear`
4
4
 
5
- note 'This script will help you install a VNC server and a VNC viewer.'
5
+ Interaction.note 'This script will help you install a VNC server and a VNC viewer.'
6
6
  puts
7
- puts strip_heredoc <<-TEXT
7
+ puts Util.strip_heredoc <<-TEXT
8
8
  With those you will be able to use our cucumber script without being
9
9
  disturbed by focus-stealing Selenium windows. Instead, they will open
10
10
  inside a VNC session.
11
11
 
12
12
  You can still inspect everything with:
13
13
  TEXT
14
- note_cmd 'geordi vnc'
14
+ Interaction.note_cmd 'geordi vnc'
15
15
  puts
16
- note 'Please open a second shell to execute instructions.'
17
- prompt 'Continue ...'
16
+ Interaction.note 'Please open a second shell to execute instructions.'
17
+ Interaction.prompt 'Continue ...'
18
18
 
19
- announce 'Setup VNC server'
19
+ Interaction.announce 'Setup VNC server'
20
20
 
21
21
  vnc_server_installed = system('which vncserver > /dev/null 2>&1')
22
22
  if vnc_server_installed
23
- success 'It appears you already have a VNC server installed. Good job!'
23
+ Interaction.success 'It appears you already have a VNC server installed. Good job!'
24
24
  else
25
25
  puts 'Please run:'
26
- note_cmd 'sudo apt-get install vnc4server'
27
- prompt 'Continue ...'
26
+ Interaction.note_cmd 'sudo apt-get install vnc4server'
27
+ Interaction.prompt 'Continue ...'
28
28
 
29
29
  puts
30
- note 'We will now set a password for your VNC server.'
31
- puts strip_heredoc <<-TEXT
30
+ Interaction.note 'We will now set a password for your VNC server.'
31
+ puts Util.strip_heredoc <<-TEXT
32
32
  When running our cucumber script, you will not actually need this
33
33
  password, and there is no security risk. However, if you start a vncserver
34
34
  without our cucumber script, a user with your password can connect to
@@ -36,31 +36,31 @@ def _setup_vnc
36
36
 
37
37
  TEXT
38
38
  puts 'Please run:'
39
- note_cmd 'vncserver :20'
40
- warn 'Enter a secure password!'
41
- prompt 'Continue ...'
39
+ Interaction.note_cmd 'vncserver :20'
40
+ Interaction.warn 'Enter a secure password!'
41
+ Interaction.prompt 'Continue ...'
42
42
 
43
43
  puts 'Now stop the server again. Please run:'
44
- note_cmd 'vncserver -kill :20'
45
- prompt 'Continue ...'
44
+ Interaction.note_cmd 'vncserver -kill :20'
45
+ Interaction.prompt 'Continue ...'
46
46
  end
47
47
 
48
- announce 'Setup VNC viewer'
48
+ Interaction.announce 'Setup VNC viewer'
49
49
 
50
50
  vnc_viewer_installed = system('which vncviewer > /dev/null 2>&1')
51
51
  if vnc_viewer_installed
52
- success 'It appears you already have a VNC viewer installed. Good job!'
52
+ Interaction.success 'It appears you already have a VNC viewer installed. Good job!'
53
53
  else
54
54
  puts 'Please run:'
55
- note_cmd 'sudo apt-get install xtightvncviewer'
56
- prompt 'Continue ...'
55
+ Interaction.note_cmd 'sudo apt-get install xtightvncviewer'
56
+ Interaction.prompt 'Continue ...'
57
57
  end
58
58
 
59
59
  puts
60
- puts strip_heredoc <<-TEXT
60
+ puts Util.strip_heredoc <<-TEXT
61
61
  All done. Our cucumber script will now automatically run Selenium features
62
62
  in VNC.
63
63
  TEXT
64
64
 
65
- success 'Happy cuking!'
65
+ Interaction.success 'Happy cuking!'
66
66
  end
@@ -10,13 +10,13 @@ def apache_site(*args)
10
10
  puts 'Please call: apache-site my-site'
11
11
  puts
12
12
  puts 'Available sites:'
13
- Dir.new(".").each do |file|
13
+ Dir.new('.').each do |file|
14
14
  puts "- #{file}" if file != '.' && file != '..'
15
15
  end
16
16
  exit
17
17
  end
18
18
 
19
- has_default = File.exists?('default')
20
- exec "sudo a2dissite \*; sudo a2ensite #{"default " if has_default}#{site} && sudo apache2ctl restart"
19
+ has_default = File.exist?('default')
20
+ exec "sudo a2dissite \*; sudo a2ensite #{'default ' if has_default}#{site} && sudo apache2ctl restart"
21
21
  Dir.chdir old_cwd
22
22
  end
@@ -1,7 +1,7 @@
1
- desc 'bundle-install', 'Run bundle install if required', :hide => true
1
+ desc 'bundle-install', 'Run bundle install if required', hide: true
2
2
  def bundle_install
3
- if File.exists?('Gemfile') and !system('bundle check > /dev/null 2>&1')
4
- announce 'Bundling'
3
+ if File.exist?('Gemfile') && !system('bundle check > /dev/null 2>&1')
4
+ Interaction.announce 'Bundling'
5
5
  Util.system! 'bundle install'
6
6
  end
7
7
  end
@@ -6,18 +6,17 @@ LONGDESC
6
6
  def capistrano(*args)
7
7
  targets = Dir['config/deploy/*.rb'].map { |file| File.basename(file, '.rb') }.sort
8
8
 
9
- note 'Found the following deploy targets:'
9
+ Interaction.note 'Found the following deploy targets:'
10
10
  puts targets
11
- prompt('Continue?', 'n', /y|yes/) or fail 'Cancelled.'
11
+ Interaction.prompt('Continue?', 'n', /y|yes/) || Interaction.fail('Cancelled.')
12
12
 
13
13
  targets << nil if targets.empty? # default target
14
14
  targets.each do |stage|
15
- announce 'Target: ' + (stage || '(default)')
15
+ Interaction.announce 'Target: ' + (stage || '(default)')
16
16
 
17
17
  command = "bundle exec cap #{stage} " + args.join(' ')
18
- note_cmd command
18
+ Interaction.note_cmd command
19
19
 
20
- Util.system!(command, :fail_message => 'Capistrano failed. Have a look!')
20
+ Util.system!(command, fail_message: 'Capistrano failed. Have a look!')
21
21
  end
22
-
23
22
  end
@@ -9,14 +9,5 @@ LONGDESC
9
9
  def chromedriver_update
10
10
  require 'geordi/chromedriver_updater'
11
11
 
12
- # Ruby 1.9.3 introduces #capture3 in open3
13
- supported_ruby_version = '1.9.2'
14
-
15
- # We do not want to backport this command to Ruby 1.8.7, a user can just use a newer Ruby version to run it. For all
16
- # other commands it still is necessary to have a proper Ruby 1.8.7 support.
17
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new(supported_ruby_version)
18
- raise("Unsupported ruby version #{RUBY_VERSION}, please use at least #{supported_ruby_version} to run this command!")
19
- end
20
-
21
12
  ChromedriverUpdater.new.run
22
13
  end
@@ -1,16 +1,15 @@
1
1
  desc 'clean', 'Remove unneeded files from the current directory'
2
2
  def clean
3
3
 
4
- announce 'Removing tempfiles'
4
+ Interaction.announce 'Removing tempfiles'
5
5
  for pattern in %w[ webrat-* capybara-* tmp/webrat-* tmp/capybara-* tmp/rtex/* log/*.log ]
6
- note pattern
6
+ Interaction.note pattern
7
7
  puts `rm -vfR #{pattern}`
8
8
  end
9
9
 
10
- announce 'Finding recursively and removing backup files'
11
- for pattern in %w[ *~ ]
12
- note pattern
10
+ Interaction.announce 'Finding recursively and removing backup files'
11
+ %w[*~].each do |pattern|
12
+ Interaction.note pattern
13
13
  `find . -name #{pattern} -exec rm {} ';'`
14
14
  end
15
-
16
15
  end
@@ -21,4 +21,3 @@ Unsupported Ruby Version #{RUBY_VERSION}. `geordi commit` requires Ruby 2.1+.
21
21
 
22
22
  Gitpt.new.run(git_args)
23
23
  end
24
-
@@ -6,19 +6,19 @@ Open a Rails console on `staging`: `geordi console staging`
6
6
  LONGDESC
7
7
 
8
8
 
9
- option :select_server, :default => false, :type => :boolean, :aliases => '-s'
9
+ option :select_server, default: false, type: :boolean, aliases: '-s'
10
10
 
11
- def console(target = 'development', *args)
11
+ def console(target = 'development', *_args)
12
12
  require 'geordi/remote'
13
13
 
14
14
  if target == 'development'
15
15
  invoke_cmd 'yarn_install'
16
16
 
17
- announce 'Opening a local Rails console'
17
+ Interaction.announce 'Opening a local Rails console'
18
18
 
19
19
  Util.system! Util.console_command(target)
20
20
  else
21
- announce 'Opening a Rails console on ' + target
21
+ Interaction.announce 'Opening a Rails console on ' + target
22
22
 
23
23
  Geordi::Remote.new(target).console(options)
24
24
  end
@@ -1,10 +1,10 @@
1
- desc 'create-database-yml', '[sic]', :hide => true
1
+ desc 'create-database-yml', '[sic]', hide: true
2
2
  def create_database_yml
3
3
  real_yml = 'config/database.yml'
4
4
  sample_yml = 'config/database.sample.yml'
5
5
 
6
- if File.exists?(sample_yml) and not File.exists?(real_yml)
7
- announce 'Creating ' + real_yml
6
+ if File.exist?(sample_yml) && !File.exist?(real_yml)
7
+ Interaction.announce 'Creating ' + real_yml
8
8
 
9
9
  sample = File.read(sample_yml)
10
10
  adapter = sample.match(/adapter: (\w+)\n/).captures.first
@@ -15,6 +15,6 @@ def create_database_yml
15
15
  real = sample.gsub(/password:.*$/, "password: #{db_password}")
16
16
  File.open(real_yml, 'w') { |f| f.write(real) }
17
17
 
18
- note "Created #{real_yml}."
18
+ Interaction.note "Created #{real_yml}."
19
19
  end
20
20
  end
@@ -1,11 +1,11 @@
1
- desc 'create-databases', 'Create all databases', :hide => true
1
+ desc 'create-databases', 'Create all databases', hide: true
2
2
  def create_databases
3
3
  invoke_cmd 'create_database_yml'
4
4
  invoke_cmd 'bundle_install'
5
5
 
6
- announce 'Creating databases'
6
+ Interaction.announce 'Creating databases'
7
7
 
8
- if File.exists?('config/database.yml')
8
+ if File.exist?('config/database.yml')
9
9
  command = 'bundle exec rake db:create:all'
10
10
  command << ' parallel:create' if Util.file_containing?('Gemfile', /parallel_tests/)
11
11
 
@@ -17,30 +17,30 @@ or `-d`.
17
17
  e.g. `--format pretty`.
18
18
  LONGDESC
19
19
 
20
- option :modified, :aliases => '-m', :type => :boolean,
21
- :desc => 'Run all modified features'
22
- option :containing, :aliases => '-c', :banner => 'STRING',
23
- :desc => 'Run all features that contain STRING'
24
- option :verbose, :aliases => '-v', :type => :boolean,
25
- :desc => 'Print the testrun command'
26
- option :debug, :aliases => '-d', :type => :boolean,
27
- :desc => 'Run with `-f pretty -b` which helps hunting down bugs'
28
- option :rerun, :aliases => '-r', :type => :numeric, :default => 0,
29
- :desc => 'Rerun features up to N times while failing'
20
+ option :modified, aliases: '-m', type: :boolean,
21
+ desc: 'Run all modified features'
22
+ option :containing, aliases: '-c', banner: 'STRING',
23
+ desc: 'Run all features that contain STRING'
24
+ option :verbose, aliases: '-v', type: :boolean,
25
+ desc: 'Print the testrun command'
26
+ option :debug, aliases: '-d', type: :boolean,
27
+ desc: 'Run with `-f pretty -b` which helps hunting down bugs'
28
+ option :rerun, aliases: '-r', type: :numeric, default: 0,
29
+ desc: 'Rerun features up to N times while failing'
30
30
 
31
31
  def cucumber(*args)
32
32
  if args.empty?
33
33
  # This is not testable as there is no way to stub `git` :(
34
34
  if options.modified?
35
- modified_features = `git status --short`.split($/).map do |line|
35
+ modified_features = `git status --short`.split($INPUT_RECORD_SEPARATOR).map do |line|
36
36
  indicators = line.slice!(0..2) # Remove leading indicators
37
- line if line.include?('.feature') and not indicators.include?('D')
37
+ line if line.include?('.feature') && !indicators.include?('D')
38
38
  end.compact
39
39
  args = modified_features
40
40
  end
41
41
 
42
42
  if options.containing
43
- matching_features = `grep -lri '#{options.containing}' --include=*.feature features/`.split($/)
43
+ matching_features = `grep -lri '#{options.containing}' --include=*.feature features/`.split($INPUT_RECORD_SEPARATOR)
44
44
  args = matching_features.uniq
45
45
  end
46
46
  end
@@ -56,7 +56,7 @@ def cucumber(*args)
56
56
 
57
57
  # Serial run of @solo scenarios ############################################
58
58
  if files.any? { |f| f.include? ':' }
59
- note '@solo run skipped when called with line numbers' if options.verbose
59
+ Interaction.note '@solo run skipped when called with line numbers' if options.verbose
60
60
  else
61
61
  solo_files = if files.empty?
62
62
  'features' # Proper grepping
@@ -64,37 +64,37 @@ def cucumber(*args)
64
64
  files.join(' ')
65
65
  end
66
66
 
67
- solo_tag_usages = `grep -r '@solo' #{ solo_files }`.split("\n")
67
+ solo_tag_usages = `grep -r '@solo' #{solo_files}`.split("\n")
68
68
 
69
69
  if solo_tag_usages.any?
70
70
  solo_cmd_opts = cmd_opts.dup
71
71
  solo_cmd_opts << '--tags' << '@solo'
72
72
 
73
- announce 'Running @solo features'
74
- solo_success = Geordi::Cucumber.new.run files, solo_cmd_opts, :verbose => options.verbose, :parallel => false
75
- solo_success or fail 'Features failed.'
73
+ Interaction.announce 'Running @solo features'
74
+ solo_success = Geordi::Cucumber.new.run files, solo_cmd_opts, verbose: options.verbose, parallel: false
75
+ solo_success || Interaction.fail('Features failed.')
76
76
  end
77
77
  end
78
78
 
79
79
  # Parallel run of all given features + reruns ##############################
80
- announce 'Running features'
81
- normal_run_successful = Geordi::Cucumber.new.run(files, cmd_opts, :verbose => options.verbose)
80
+ Interaction.announce 'Running features'
81
+ normal_run_successful = Geordi::Cucumber.new.run(files, cmd_opts, verbose: options.verbose)
82
82
 
83
83
  unless normal_run_successful
84
84
  cmd_opts << '--profile' << 'rerun'
85
85
 
86
86
  # Reruns
87
87
  (options.rerun + 1).times do |i|
88
- fail 'Features failed.' if (i == options.rerun) # All reruns done?
88
+ Interaction.fail 'Features failed.' if i == options.rerun # All reruns done?
89
89
 
90
- announce "Rerun ##{ i + 1 } of #{ options.rerun }"
91
- break if Geordi::Cucumber.new.run([], cmd_opts, :verbose => options.verbose, :parallel => false)
90
+ Interaction.announce "Rerun ##{i + 1} of #{options.rerun}"
91
+ break if Geordi::Cucumber.new.run([], cmd_opts, verbose: options.verbose, parallel: false)
92
92
  end
93
93
  end
94
94
 
95
- success 'Features green.'
95
+ Interaction.success 'Features green.'
96
96
 
97
97
  else
98
- note 'Cucumber not employed.'
98
+ Interaction.note 'Cucumber not employed.'
99
99
  end
100
100
  end