rspec / rspec-core

RSpec runner and formatters
http://rspec.info
MIT License
1.23k stars 765 forks source link

Test failure with Ruby 3.1 #3001

Closed kzkn closed 1 year ago

kzkn commented 1 year ago

Subject of the issue

spec/integration/spec_file_load_errors_spec.rb fails when run on Ruby 3.1.

Your environment

Steps to reproduce

Expected behavior

Actual behavior

Failures:

  1) Spec file load errors nicely handles load-time errors in user spec files
     Failure/Error:
           expect(output).to eq unindent(<<-EOS)

             An error occurred while loading ./1_spec.rb.
             Failure/Error: boom

             NameError:
               undefined local variable or method `boom' for main:Object
             # ./1_spec.rb:1#{spec_line_suffix}

             An error occurred while loading ./3_spec.rb.

       expected: "\nAn error occurred while loading ./1_spec.rb.\nFailure/Error: boom\n\nNameError:\n  undefined local variable or method `boom' for main:Object\n# ./1_spec.rb:1:in `<top (required)>'\n\nAn error occurred while loading ./3_spec.rb.\nFailure/Error: boom\n\nNameError:\n  undefined local variable or method `boom' for main:Object\n# ./3_spec.rb:1:in `<top (required)>'\n\n\nFinished in n.nnnn seconds (files took n.nnnn seconds to load)\n0 examples, 0 failures, 2 errors occurred outside of examples\n\n"
            got: "\nAn error occurred while loading ./1_spec.rb.\nFailure/Error: boom\n\nNameError:\n  undefined local variable or method `boom' for main:Object\n\n  boom\n  ^^^^\n# ./1_spec.rb:1:in `<top (required)>'\n\nAn error occurred while loading ./3_spec.rb.\nFailure/Error: boom\n\nNameError:\n  undefined local variable or method `boom' for main:Object\n\n  boom\n  ^^^^\n# ./3_spec.rb:1:in `<top (required)>'\n\n\nFinished in n.nnnn seconds (files took n.nnnn seconds to load)\n0 examples, 0 failures, 2 errors occurred outside of examples\n\n"

       (compared using ==)

       Diff:
       @@ -4,6 +4,9 @@

        NameError:
          undefined local variable or method `boom' for main:Object
       +
       +  boom
       +  ^^^^
        # ./1_spec.rb:1:in `<top (required)>'

        An error occurred while loading ./3_spec.rb.
       @@ -11,6 +14,9 @@

        NameError:
          undefined local variable or method `boom' for main:Object
       +
       +  boom
       +  ^^^^
        # ./3_spec.rb:1:in `<top (required)>'

     # ./spec/integration/spec_file_load_errors_spec.rb:150:in `block (2 levels) in <top (required)>'
     # ./spec/support/sandboxing.rb:16:in `block (3 levels) in <top (required)>'
     # ./spec/support/sandboxing.rb:7:in `block (2 levels) in <top (required)>'

Finished in 15.42 seconds (files took 0.86247 seconds to load)
2217 examples, 1 failure, 3 pending

Failed examples:

rspec ./spec/integration/spec_file_load_errors_spec.rb:118 # Spec file load errors nicely handles load-time errors in user spec files

Notes

I think that the behavior may have changed depending on whether or not error_highlight gem is installed. But as I know the gem is a built-in gem in Ruby 3.1...? :thinking:

pirj commented 1 year ago

I wonder why it doesn't fail on ci?

JonRowe commented 1 year ago

This failed on my machine and I sorta ignored it because I've always had a few random spec failures due to asdf, so thank you for fixing this.

Presumedly it doesn't fails on CI because it doesn't have the gem installed