From 8098876bfaf2a2f28c22d16b5856c4be43fcf32b Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 3 Apr 2024 10:54:55 +0100 Subject: [PATCH] DEV: Restore RSpec 'documentation' output, but collapse in CI (#26485) This reverts commit ef895f1c32ad406a37a10137eab38d75bc82bd38 and 57df0d526e2d131d80c878edee27c8b3a0fccfe4, but adds GitHub actions line grouping to the verbose output to reduce scrolling. --- .github/workflows/tests.yml | 12 ++++++------ lib/turbo_tests/documentation_formatter.rb | 17 ++++++++++++++++- lib/turbo_tests/reporter.rb | 6 ++++++ lib/turbo_tests/runner.rb | 2 ++ 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 930b7b9d4a4..5ec6e5c7ba5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -212,11 +212,11 @@ jobs: - name: Core RSpec if: matrix.build_type == 'backend' && matrix.target == 'core' - run: bin/turbo_rspec --use-runtime-info --verbose + run: bin/turbo_rspec --use-runtime-info --verbose --format documentation - name: Plugin RSpec if: matrix.build_type == 'backend' && matrix.target == 'plugins' - run: bin/rake plugin:turbo_spec['*','--verbose --use-runtime-info'] + run: bin/rake plugin:turbo_spec['*','--verbose --format documentation --use-runtime-info'] - name: Plugin QUnit if: matrix.build_type == 'frontend' && matrix.target == 'plugins' @@ -246,7 +246,7 @@ jobs: if: matrix.build_type == 'system' && matrix.target == 'core' env: CHECKOUT_TIMEOUT: 10 - run: RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --use-runtime-info --profile=50 --verbose spec/system + run: RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --use-runtime-info --profile=50 --verbose --format documentation spec/system - name: Plugin System Tests if: matrix.build_type == 'system' && matrix.target == 'plugins' @@ -254,7 +254,7 @@ jobs: CHECKOUT_TIMEOUT: 10 run: | GLOBIGNORE="plugins/chat/*"; - LOAD_PLUGINS=1 RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --use-runtime-info --profile=50 --verbose plugins/*/spec/system + LOAD_PLUGINS=1 RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --use-runtime-info --profile=50 --verbose --format documentation plugins/*/spec/system shell: bash timeout-minutes: 30 @@ -262,7 +262,7 @@ jobs: if: matrix.build_type == 'system' && matrix.target == 'chat' env: CHECKOUT_TIMEOUT: 10 - run: LOAD_PLUGINS=1 RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --use-runtime-info --profile=50 --verbose plugins/chat/spec/system + run: LOAD_PLUGINS=1 RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --use-runtime-info --profile=50 --verbose --format documentation plugins/chat/spec/system timeout-minutes: 30 - name: Theme System Tests @@ -270,7 +270,7 @@ jobs: env: CHECKOUT_TIMEOUT: 10 run: | - RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --profile=50 --verbose tmp/themes/*/spec/system + RAILS_ENABLE_TEST_LOG=1 RAILS_TEST_LOG_LEVEL=error PARALLEL_TEST_PROCESSORS=4 bin/turbo_rspec --profile=50 --verbose --format documentation tmp/themes/*/spec/system shell: bash timeout-minutes: 30 diff --git a/lib/turbo_tests/documentation_formatter.rb b/lib/turbo_tests/documentation_formatter.rb index 10d9b5630c3..a9ded17108e 100644 --- a/lib/turbo_tests/documentation_formatter.rb +++ b/lib/turbo_tests/documentation_formatter.rb @@ -3,7 +3,22 @@ module TurboTests # An RSpec formatter that prepends the process id to all messages class DocumentationFormatter < ::TurboTests::BaseFormatter - RSpec::Core::Formatters.register(self, :example_failed, :example_passed, :example_pending) + RSpec::Core::Formatters.register( + self, + :example_failed, + :example_passed, + :example_pending, + :start, + :stop, + ) + + def start(*args) + output.puts "::group:: Verbose turbo_spec output" if ENV["GITHUB_ACTIONS"] + end + + def stop(*args) + output.puts "::endgroup::" if ENV["GITHUB_ACTIONS"] + end def example_passed(notification) output.puts RSpec::Core::Formatters::ConsoleCodes.wrap( diff --git a/lib/turbo_tests/reporter.rb b/lib/turbo_tests/reporter.rb index e58630b78a2..5204ff0e0ce 100644 --- a/lib/turbo_tests/reporter.rb +++ b/lib/turbo_tests/reporter.rb @@ -48,6 +48,10 @@ module TurboTests end end + def start + delegate_to_formatters(:start, RSpec::Core::Notifications::NullNotification) + end + def example_passed(example) delegate_to_formatters(:example_passed, example.notification) @@ -83,6 +87,8 @@ module TurboTests def finish end_time = Time.now + delegate_to_formatters(:stop, RSpec::Core::Notifications::NullNotification) + delegate_to_formatters(:start_dump, RSpec::Core::Notifications::NullNotification) delegate_to_formatters( diff --git a/lib/turbo_tests/runner.rb b/lib/turbo_tests/runner.rb index b4de43eed84..29485156c15 100644 --- a/lib/turbo_tests/runner.rb +++ b/lib/turbo_tests/runner.rb @@ -89,6 +89,8 @@ module TurboTests start_regular_subprocess(tests, process_id + 1, **subprocess_opts) end + @reporter.start + handle_messages @reporter.finish