Skip to content

Set unlimited_max_formatted_output_length per RSpec example

Peter Leitzen requested to merge pl-unlimited_max_formatted_output_length into master

What does this MR do and why?

Set unlimited_max_formatted_output_length per RSpec example

Previously, the value for max_formatted_output_length = nil was not reset after :unlimited_max_formatted_output_length was used which that setting global.

This MR resets this very setting after every example.

This MR also removes a global RSpec configuration from a spec file.

Refs !131257 (comment 1556790880) and !110366 (diffs, comment 1556817706).

How to set up and validate locally

  1. See !131627 (comment 1556927294)

  2. Break a spec with loong strings

diff --git a/spec/rubocop/cop_todo_spec.rb b/spec/rubocop/cop_todo_spec.rb
index 49206d76d5a0..90f95336f1a8 100644
--- a/spec/rubocop/cop_todo_spec.rb
+++ b/spec/rubocop/cop_todo_spec.rb
@@ -8,6 +8,13 @@
 
   subject(:cop_todo) { described_class.new(cop_name) }
 
+  it 'breaks' do
+    a = 'a' * 1024
+    b = 'b' * 1024
+
+    expect(a).to eq(b)
+  end
+
   describe '#initialize' do
     it 'initializes a cop todo' do
       expect(cop_todo).to have_attributes(
  1. Run bin/rspec spec/rubocop/cop_todo_spec.rb -e breaks:
Run options: include {:full_description=>/breaks/}

RuboCop::CopTodo
  # order random
  breaks (FAILED - 1)

Failures:

  1) RuboCop::CopTodo breaks
     Failure/Error: expect(a).to eq(b)

       expected: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
            got: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

       (compared using ==)
     # ./spec/rubocop/cop_todo_spec.rb:15:in `block (2 levels) in <top (required)>'
     # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <top (required)>'

Finished in 0.02492 seconds (files took 3.07 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/rubocop/cop_todo_spec.rb:11 # RuboCop::CopTodo breaks

Randomized with seed 30504

diff is truncated - as expected.

  1. Run bin/rspec spec/lib/backup/database_spec.rb spec/rubocop/cop_todo_spec.rb -e breaks

Load spec/lib/backup/database_spec.rb.

Run options: include {:full_description=>/breaks/}

Test environment set up in 4.994579138 seconds

RuboCop::CopTodo
  # order random
  breaks (FAILED - 1)

Failures:

  1) RuboCop::CopTodo breaks
     Failure/Error: expect(a).to eq(b)

       expected: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
            got: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

       (compared using ==)
     # ./spec/rubocop/cop_todo_spec.rb:15:in `block (2 levels) in <main>'
     # ./spec/spec_helper.rb:452:in `block (3 levels) in <top (required)>'
     # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'
     # ./spec/spec_helper.rb:443:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:439:in `block (3 levels) in <top (required)>'
     # ./lib/gitlab/application_context.rb:66:in `with_raw_context'
     # ./spec/spec_helper.rb:439:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:270:in `block (2 levels) in <top (required)>'
     # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <main>'

Finished in 5.99 seconds (files took 12.12 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/rubocop/cop_todo_spec.rb:11 # RuboCop::CopTodo breaks

Randomized with seed 27022

[TEST PROF INFO] Time spent in factories: 00:00.012 (0.13% of total time)

  1. On master, bin/rspec spec/lib/backup/database_spec.rb spec/rubocop/cop_todo_spec.rb -e breaks
Run options: include {:full_description=>/breaks/}
==> GitLab Workhorse set up in 10.01470608 seconds...

Test environment set up in 15.600857837 seconds

RuboCop::CopTodo
  # order random
  breaks (FAILED - 1)

Failures:

  1) RuboCop::CopTodo breaks
     Failure/Error: expect(a).to eq(b)

       expected: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
            got: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

       (compared using ==)
     # ./spec/rubocop/cop_todo_spec.rb:15:in `block (2 levels) in <main>'
     # ./spec/spec_helper.rb:451:in `block (3 levels) in <top (required)>'
     # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'
     # ./spec/spec_helper.rb:442:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:438:in `block (3 levels) in <top (required)>'
     # ./lib/gitlab/application_context.rb:66:in `with_raw_context'
     # ./spec/spec_helper.rb:438:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:269:in `block (2 levels) in <top (required)>'
     # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <main>'

Finished in 16.67 seconds (files took 25.4 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/rubocop/cop_todo_spec.rb:11 # RuboCop::CopTodo breaks

Randomized with seed 34611

[TEST PROF INFO] Time spent in factories: 00:00.013 (0.04% of total time)

String diff is not truncated 💥

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Peter Leitzen

Merge request reports