diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0a2761bbb..4e2b60c2d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,17 +47,8 @@ jobs: # Cucumber 9 | Ruby 2.7 # Cucumber 10 | Ruby 3.1 # - ruby: ["3.1", "jruby-9.4", "3.2", "3.3", "3.4", "jruby-10.0", "4.0"] + ruby: ["3.3"] appraisal: [cucumber_10] - include: - - ruby: "3.0" - appraisal: cucumber_8 - - ruby: "3.0" - appraisal: cucumber_9 - - ruby: "3.1" - appraisal: cucumber_9 - - ruby: "4.0" - appraisal: rspec_4 env: BUNDLE_GEMFILE: gemfiles/${{ matrix.appraisal }}.gemfile @@ -80,7 +71,7 @@ jobs: matrix: # This will automatically pick the latest supported version of Cucumber # for each Ruby version - ruby: ["3.0", "3.1", "3.2", "3.3", "3.4", "4.0"] + ruby: ["3.3"] runs-on: macos-latest steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 @@ -101,7 +92,7 @@ jobs: matrix: # This will automatically pick the latest supported version of Cucumber # for each Ruby version - ruby: ["3.0", "3.1", "3.2", "3.3", "3.4", "4.0"] + ruby: ["3.3"] runs-on: windows-latest steps: - name: git config autocrlf @@ -113,12 +104,14 @@ jobs: ruby-version: ${{ matrix.ruby }} bundler: latest bundler-cache: true - - name: Run specs - run: bundle exec rake spec - - name: Run cukes (1) - run: bundle exec cucumber features/01_getting_started_with_aruba/ + # - name: Run specs + # run: bundle exec rake spec + # - name: Run cukes (1) + # run: bundle exec cucumber features/01_getting_started_with_aruba/ # - name: Run cukes (2) # run: bundle exec cucumber features/02_configure_aruba/ + - name: Run cukes - focus! + run: bundle exec cucumber features/02_configure_aruba/basics.feature # - name: Run cukes (3) # run: bundle exec cucumber features/03_testing_frameworks/ # - name: Run cukes (4) diff --git a/features/02_configure_aruba/activate_announcer_on_command_failure.feature b/features/02_configure_aruba/activate_announcer_on_command_failure.feature index 3ccbaa934..5b713007e 100644 --- a/features/02_configure_aruba/activate_announcer_on_command_failure.feature +++ b/features/02_configure_aruba/activate_announcer_on_command_failure.feature @@ -24,7 +24,7 @@ Feature: Configure announcer activation on command failure Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts %(The default value is "#{config.activate_announcer_on_command_failure.inspect}") @@ -37,7 +37,7 @@ Feature: Configure announcer activation on command failure """ Scenario: Modify value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| config.activate_announcer_on_command_failure = [:stderr, :stdout] diff --git a/features/02_configure_aruba/basics.feature b/features/02_configure_aruba/basics.feature index a95bca709..60d6f6092 100644 --- a/features/02_configure_aruba/basics.feature +++ b/features/02_configure_aruba/basics.feature @@ -14,17 +14,17 @@ Feature: Usage of configuration Background: Given I use a fixture named "cli-app" And an executable named "bin/aruba-test-cli" with: - """bash - #!/bin/bash - trap "exit 128" SIGTERM SIGINT - sleep $* + """ruby + #!/usr/bin/env ruby + sleep ARGV[0].to_f """ + @announce-output Scenario: Setting default values for option for RSpec Given a file named "spec/support/aruba_config.rb" with: """ruby Aruba.configure do |config| - config.exit_timeout = 0.7 + config.exit_timeout = 1.0 end """ And a file named "spec/usage_configuration_spec.rb" with: @@ -34,18 +34,19 @@ Feature: Usage of configuration RSpec.describe 'Run command', :type => :aruba do context 'when fast command' do before { run_command('aruba-test-cli 0') } - it { expect(last_command_started).to be_successfully_executed } + it { expect(last_command_started).to have_finished_in_time } end context 'when slow command' do before { run_command('aruba-test-cli 1') } - it { expect(last_command_started).not_to be_successfully_executed } + it { expect(last_command_started).not_to have_finished_in_time } end end """ When I run `rspec` Then the specs should all pass + @announce-output Scenario: Setting option during runtime for RSpec Maybe there are some long running tests, which need longer. You may not @@ -55,7 +56,7 @@ Feature: Usage of configuration Given a file named "spec/support/aruba_config.rb" with: """ruby Aruba.configure do |config| - config.exit_timeout = 0.5 + config.exit_timeout = 1.0 end """ And a file named "spec/support/hooks.rb" with: @@ -64,7 +65,7 @@ Feature: Usage of configuration config.before :each do |example| next unless example.metadata.key? :slow_command - aruba.config.exit_timeout = 1.5 + aruba.config.exit_timeout = 2.5 end end """ @@ -75,28 +76,39 @@ Feature: Usage of configuration RSpec.describe 'Run command', :type => :aruba do context 'when fast command' do before { run_command('aruba-test-cli 0') } - it { expect(last_command_started).to be_successfully_executed } + it { expect(last_command_started).to have_finished_in_time } end context 'when slow command and this is known by the developer', :slow_command => true do - before { run_command('aruba-test-cli 1') } - it { expect(last_command_started).to be_successfully_executed } + before { run_command('aruba-test-cli 1.1') } + it { expect(last_command_started).to have_finished_in_time } end context 'when slow command, but this might be a failure' do - before { run_command('aruba-test-cli 1') } - it { expect(last_command_started).not_to be_successfully_executed } + before { run_command('aruba-test-cli 1.1') } + it { expect(last_command_started).not_to have_finished_in_time } end end """ When I run `rspec` Then the specs should all pass + @announce-output Scenario: Setting default values for option for Cucumber - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| - config.exit_timeout = 0.5 + config.exit_timeout = 1.0 + end + """ + And a file named "features/step_definitions/timeout_steps.rb" with: + """ruby + Then 'the command should finish in time' do + expect(last_command_started).to have_finished_in_time + end + + Then 'the command should time out' do + expect(last_command_started).to run_too_long end """ And a file named "features/run.feature" with: @@ -104,31 +116,42 @@ Feature: Usage of configuration Feature: Run it Scenario: Fast command When I run `aruba-test-cli 0` - Then the exit status should be 0 + Then the command should finish in time Scenario: Slow command When I run `aruba-test-cli 1.0` - Then the exit status should be 128 + Then the command should time out """ When I run `cucumber` Then the features should all pass + @announce-output Scenario: Setting option during runtime for Cucumber Maybe there are some long running tests, which need longer. You may not want to set the default timeout for all commands to the maximum value only to prevent those commands from failing. - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| - config.exit_timeout = 0.2 + config.exit_timeout = 0.5 end """ And a file named "features/support/hooks.rb" with: """ruby Before '@slow-command' do - aruba.config.exit_timeout = 1.5 + aruba.config.exit_timeout = 2.5 + end + """ + And a file named "features/step_definitions/timeout_steps.rb" with: + """ruby + Then 'the command should finish in time' do + expect(last_command_started).to have_finished_in_time + end + + Then 'the command should time out' do + expect(last_command_started).to run_too_long end """ And a file named "features/usage_configuration.feature" with: @@ -136,16 +159,16 @@ Feature: Usage of configuration Feature: Run it Scenario: Fast command When I run `aruba-test-cli 0` - Then the exit status should be 0 + Then the command should finish in time @slow-command - Scenario: Slow command known by the developer - When I run `aruba-test-cli 0.5` - Then the exit status should be 0 + Scenario: Slow command finishes when given more time + When I run `aruba-test-cli 1.1` + Then the command should finish in time - Scenario: Slow command which might be a failure - When I run `aruba-test-cli 0.5` - Then the exit status should be 128 + Scenario: Slow command fails + When I run `aruba-test-cli 1.1` + Then the command should time out """ When I run `cucumber` Then the features should all pass diff --git a/features/02_configure_aruba/console_history_file.feature b/features/02_configure_aruba/console_history_file.feature index 683f2bbdd..d385ef114 100644 --- a/features/02_configure_aruba/console_history_file.feature +++ b/features/02_configure_aruba/console_history_file.feature @@ -8,7 +8,7 @@ Feature: Configure the aruba console history file Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ Aruba.configure do |config| puts %(The default value is "#{config.console_history_file}") @@ -21,7 +21,7 @@ Feature: Configure the aruba console history file """ Scenario: Set some value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ Aruba.configure do |config| config.console_history_file = '~/.config/aruba/history.txt' diff --git a/features/02_configure_aruba/exit_timeout.feature b/features/02_configure_aruba/exit_timeout.feature index a023bf57b..3cc5db19f 100644 --- a/features/02_configure_aruba/exit_timeout.feature +++ b/features/02_configure_aruba/exit_timeout.feature @@ -4,17 +4,26 @@ Feature: Configure timeout for command execution I want to configure the timeout when executing a command In order to support some longer running commands + Note that on Windows, you must check for timeouts explicitly and cannot rely + on a nonzero exit status: Killing the process from Ruby when the timeout + occurs will set the exit status to 0. + Background: Given I use the fixture "cli-app" And an executable named "bin/aruba-test-cli" with: - """bash - #!/bin/bash - trap "exit 128" SIGTERM SIGINT - sleep $* + """ruby + #!/usr/bin/env ruby + sleep ARGV[0].to_f + """ + And a file named "features/step_definitions/timeout_steps.rb" with: + """ruby + Then 'the command should finish in time' do + expect(last_command_started).to have_finished_in_time + end """ Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts %(The default value is "#{config.exit_timeout}") @@ -27,7 +36,7 @@ Feature: Configure timeout for command execution """ Scenario: Modify value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| config.exit_timeout = 1.0 @@ -37,13 +46,13 @@ Feature: Configure timeout for command execution """ Feature: Run it Scenario: Fast command - When I run `aruba-test-cli 0.5` - Then the exit status should be 0 + When I run `aruba-test-cli 0.1` + Then the command should finish in time """ Then I successfully run `cucumber` Scenario: Fails if takes longer - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| config.exit_timeout = 0.5 @@ -54,7 +63,7 @@ Feature: Configure timeout for command execution Feature: Run it Scenario: Fast command When I run `aruba-test-cli 2.5` - Then the exit status should be 0 + Then the command should finish in time """ Then I run `cucumber` And the exit status should be 1 diff --git a/features/02_configure_aruba/fixtures_directories.feature b/features/02_configure_aruba/fixtures_directories.feature index 121d746bd..055c76540 100644 --- a/features/02_configure_aruba/fixtures_directories.feature +++ b/features/02_configure_aruba/fixtures_directories.feature @@ -8,7 +8,7 @@ Feature: Configure directory where to look for fixtures Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts %(The default value is "%w(#{config.fixtures_directories.join(" ")})") @@ -21,7 +21,7 @@ Feature: Configure directory where to look for fixtures """ Scenario: Modify value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| config.fixtures_directories = %w(spec/fixtures) diff --git a/features/02_configure_aruba/fixtures_path_prefix.feature b/features/02_configure_aruba/fixtures_path_prefix.feature index b16cc0dac..e2aa6c54c 100644 --- a/features/02_configure_aruba/fixtures_path_prefix.feature +++ b/features/02_configure_aruba/fixtures_path_prefix.feature @@ -8,7 +8,7 @@ Feature: Use fixtures path prefix of aruba Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts "The prefix is \"#{config.fixtures_path_prefix}\"." diff --git a/features/02_configure_aruba/home_directory.feature b/features/02_configure_aruba/home_directory.feature index 065be0eb6..4d57c60e7 100644 --- a/features/02_configure_aruba/home_directory.feature +++ b/features/02_configure_aruba/home_directory.feature @@ -13,7 +13,7 @@ Feature: Configure the home directory to be used with aruba Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts %(The default value is "#{config.home_directory}") @@ -22,11 +22,11 @@ Feature: Configure the home directory to be used with aruba When I successfully run `cucumber` Then the output should match: """ - The default value is "/.*/tmp/aruba" + The default value is ".*/tmp/aruba" """ Scenario: Set to current working directory - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| # use current working directory @@ -44,7 +44,7 @@ Feature: Configure the home directory to be used with aruba """ Scenario: Set a path inside aruba's working directory - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| # Use aruba working directory @@ -60,11 +60,11 @@ Feature: Configure the home directory to be used with aruba Then I successfully run `cucumber` Then the output should match: """ - The value is "/.*/tmp/aruba/home" + The value is ".*/tmp/aruba/home" """ Scenario: Set to some other path (deprecated) - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| # use current working directory diff --git a/features/02_configure_aruba/io_timeout.feature b/features/02_configure_aruba/io_timeout.feature index f71bad70b..b89d79805 100644 --- a/features/02_configure_aruba/io_timeout.feature +++ b/features/02_configure_aruba/io_timeout.feature @@ -8,7 +8,7 @@ Feature: Configure timeout for io of commands Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts %(The default value is "#{config.io_wait_timeout}") @@ -21,7 +21,7 @@ Feature: Configure timeout for io of commands """ Scenario: Modify value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| config.io_wait_timeout = 2 diff --git a/features/02_configure_aruba/log_level.feature b/features/02_configure_aruba/log_level.feature index 7bb35556e..a7a2436d0 100644 --- a/features/02_configure_aruba/log_level.feature +++ b/features/02_configure_aruba/log_level.feature @@ -8,7 +8,7 @@ Feature: Configure Log level of aruba logger Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts %(The default value is "#{config.log_level}") @@ -21,7 +21,7 @@ Feature: Configure Log level of aruba logger """ Scenario: Modify value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| config.log_level = :warn diff --git a/features/02_configure_aruba/physical_block_size.feature b/features/02_configure_aruba/physical_block_size.feature index 4d665485c..ccf3d5f88 100644 --- a/features/02_configure_aruba/physical_block_size.feature +++ b/features/02_configure_aruba/physical_block_size.feature @@ -8,7 +8,7 @@ Feature: Configure the physical block size of disk Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts %(The default value is "#{config.physical_block_size}") @@ -21,7 +21,7 @@ Feature: Configure the physical block size of disk """ Scenario: Set the block size to something else which is a power of two - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| # use current working directory @@ -39,7 +39,7 @@ Feature: Configure the physical block size of disk """ Scenario: The value needs to be a power of two, otherwise it will fail - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| config.physical_block_size = 3 diff --git a/features/02_configure_aruba/remove_ansi_escape_sequences.feature b/features/02_configure_aruba/remove_ansi_escape_sequences.feature index d8ff1b882..ee665f508 100644 --- a/features/02_configure_aruba/remove_ansi_escape_sequences.feature +++ b/features/02_configure_aruba/remove_ansi_escape_sequences.feature @@ -8,7 +8,7 @@ Feature: Configure if ansi color codes should be stripped off from command outpu Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ Aruba.configure do |config| puts %(The default value is "#{config.remove_ansi_escape_sequences}") @@ -21,7 +21,7 @@ Feature: Configure if ansi color codes should be stripped off from command outpu """ Scenario: Modify value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ Aruba.configure do |config| config.remove_ansi_escape_sequences = false diff --git a/features/02_configure_aruba/root_directory.feature b/features/02_configure_aruba/root_directory.feature index 492fe3891..e6b273528 100644 --- a/features/02_configure_aruba/root_directory.feature +++ b/features/02_configure_aruba/root_directory.feature @@ -8,7 +8,7 @@ Feature: Use root directory of aruba Given I use the fixture "cli-app" Scenario: Default configuration - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ Aruba.configure do |config| puts config.root_directory diff --git a/features/02_configure_aruba/startup_wait_time.feature b/features/02_configure_aruba/startup_wait_time.feature index 3da07368d..bca67b873 100644 --- a/features/02_configure_aruba/startup_wait_time.feature +++ b/features/02_configure_aruba/startup_wait_time.feature @@ -18,7 +18,7 @@ Feature: Set time to wait after spawning command Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| puts %(The default value is "#{config.startup_wait_time}") @@ -31,7 +31,7 @@ Feature: Set time to wait after spawning command """ Scenario: Modify value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ruby Aruba.configure do |config| config.startup_wait_time = 2 diff --git a/features/02_configure_aruba/working_directory.feature b/features/02_configure_aruba/working_directory.feature index 23edbcdb3..313c10c91 100644 --- a/features/02_configure_aruba/working_directory.feature +++ b/features/02_configure_aruba/working_directory.feature @@ -8,7 +8,7 @@ Feature: Configure working directory of aruba Given I use the fixture "cli-app" Scenario: Default value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ Aruba.configure do |config| puts %(The default value is "#{config.working_directory}") @@ -21,7 +21,7 @@ Feature: Configure working directory of aruba """ Scenario: Modify value - Given a file named "features/support/aruba_config.rb" with: + Given a file named "features/support/aruba.rb" with: """ Aruba.configure do |config| config.working_directory = 'tmp/cucumber' diff --git a/features/03_testing_frameworks/cucumber/hooks/define_after_hook_for_commands.feature b/features/03_testing_frameworks/cucumber/hooks/define_after_hook_for_commands.feature index e7b15b3ba..cd312990f 100644 --- a/features/03_testing_frameworks/cucumber/hooks/define_after_hook_for_commands.feature +++ b/features/03_testing_frameworks/cucumber/hooks/define_after_hook_for_commands.feature @@ -6,8 +6,6 @@ Feature: After command hooks You can hook into Aruba's lifecycle just before it runs a command and after it has run the command: ```ruby - require 'aruba' - Aruba.configure do |config| config.after :command do |cmd| puts "After the run of '#{cmd}'" @@ -19,10 +17,8 @@ Feature: After command hooks Given I use a fixture named "cli-app" Scenario: Run a simple command with an "after(:command)"-hook - Given a file named "features/support/hooks.rb" with: + Given a file named "features/support/aruba.rb" with: """ - require_relative 'aruba' - Aruba.configure do |config| config.after :command do |cmd| puts "after the run of `#{cmd.commandline}`" diff --git a/features/03_testing_frameworks/cucumber/hooks/define_before_hook_for_commands.feature b/features/03_testing_frameworks/cucumber/hooks/define_before_hook_for_commands.feature index 3e6eba456..8b5d187c1 100644 --- a/features/03_testing_frameworks/cucumber/hooks/define_before_hook_for_commands.feature +++ b/features/03_testing_frameworks/cucumber/hooks/define_before_hook_for_commands.feature @@ -8,8 +8,6 @@ Feature: before_cmd hooks You can hook into Aruba's lifecycle just before it runs a command and after it has run the command: ```ruby - require_relative 'aruba' - Aruba.configure do |config| config.before :command do |cmd| puts "About to run '#{cmd}'" @@ -21,10 +19,8 @@ Feature: before_cmd hooks Given I use a fixture named "cli-app" Scenario: Run a simple command with an "after(:command)"-hook - Given a file named "features/support/hooks.rb" with: + Given a file named "features/support/aruba.rb" with: """ - require_relative 'aruba' - Aruba.configure do |config| config.before :command do |cmd| puts "before the run of `#{cmd.commandline}`" diff --git a/fixtures/cli-app/features/support/aruba.rb b/fixtures/cli-app/features/support/aruba.rb deleted file mode 100644 index 751674fc0..000000000 --- a/fixtures/cli-app/features/support/aruba.rb +++ /dev/null @@ -1,3 +0,0 @@ -# frozen_string_literal: true - -require 'aruba/cucumber' diff --git a/fixtures/cli-app/features/support/env.rb b/fixtures/cli-app/features/support/env.rb index bcc12c29d..751674fc0 100644 --- a/fixtures/cli-app/features/support/env.rb +++ b/fixtures/cli-app/features/support/env.rb @@ -1,3 +1,3 @@ # frozen_string_literal: true -require_relative 'aruba' +require 'aruba/cucumber' diff --git a/lib/aruba/cucumber/file.rb b/lib/aruba/cucumber/file.rb index ac96f2d42..460000047 100644 --- a/lib/aruba/cucumber/file.rb +++ b/lib/aruba/cucumber/file.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true Given(/^I use (?:a|the) fixture(?: named)? "([^"]*)"$/) do |name| + remove name if exist? name copy File.join(aruba.config.fixtures_path_prefix, name), name cd name end diff --git a/lib/aruba/cucumber/testing_frameworks.rb b/lib/aruba/cucumber/testing_frameworks.rb index a6c5f543b..663a468e5 100644 --- a/lib/aruba/cucumber/testing_frameworks.rb +++ b/lib/aruba/cucumber/testing_frameworks.rb @@ -87,8 +87,12 @@ end Then(/^the spec(?:s)? should(?: all)? pass$/) do - expect(all_output).to include_output_string '0 failures' - expect(last_command_stopped).to have_exit_status 0 + aggregate_failures do + # TODO: Detect '0 examples, 0 failures, 1 error occurred outside of examples' + expect(last_command_stopped) + .to have_output an_output_string_matching('examples?, 0 failures') + expect(last_command_stopped).to have_exit_status 0 + end end Then(/^the spec(?:s)? should fail with (\d+) failures?$/) do |count| diff --git a/spec/support/helpers/reporting.rb b/spec/support/helpers/reporting.rb index 23d57c118..3dba8bc37 100644 --- a/spec/support/helpers/reporting.rb +++ b/spec/support/helpers/reporting.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +# TODO: Isn't this provided by RSpec itself? module SpecHelpers module Reporting # Captures the given stream and returns it: