-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix error backtrace formatting on Ruby 3.4+ #1771
base: main
Are you sure you want to change the base?
Conversation
@@ -17,12 +17,15 @@ jobs: | |||
fail-fast: false | |||
matrix: | |||
os: [ubuntu-latest, macos-latest, windows-latest] | |||
ruby: ['3.0', '3.1', '3.2', '3.3'] | |||
ruby: ['3.0', '3.1', '3.2', '3.3', '3.4'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add Ruby 3.4 to the CI build matrix.
# This cop supports unsafe autocorrection (--autocorrect-all). | ||
# Configuration parameters: EnforcedStyle, AllowModifiersOnSymbols. | ||
# SupportedStyles: inline, group | ||
Style/AccessModifierDeclarations: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The CI build was failing on several violations of this cop (unrelated to the code changes proposed in this pull request).
Mark the violations as TODO, so the CI build can pass.
@@ -9,7 +9,7 @@ | |||
let(:cucumber_command) { 'bundle exec cucumber --publish-quiet --profile none --format message' } | |||
|
|||
CCK::Examples.gherkin.each do |example_name| | |||
describe "'#{example_name}' example" do | |||
describe "'#{example_name}' example", pending: example_name == 'empty' do # TODO: resolve the empty example. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some tests were failing on the main
branch. Specifically, the CCK specs on the empty
example.
Let's mark these specs as pending until someone has time to investigate and resolve the issue.
@io.print options.inspect | ||
@io.print options.to_json |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In Ruby 3.4 the Hash#inspect
method produces a different format:
Ruby 3.4:
irb:001> { a: 1 }.inspect
=> "{a: 1}"
irb:002> { 'a' => 1 }.inspect
=> "{\"a\" => 1}"
irb:003> { 2 => 1 }.inspect
=> "{2 => 1}"
Ruby 3.3
irb:001> { a: 1 }.inspect
=> "{:a=>1}"
irb:002> { 'a' => 1 }.inspect
=> "{\"a\"=>1}"
irb:003> { 2 => 1 }.inspect
=> "{2=>1}"
Let's change the test to use to_json
instead of inspect
. This way the test expectations will be consistent across all versions of Ruby in the CI build matrix.
Accomodate the new Ruby 3.4+ backtrace display format
79026d3
to
7559a86
Compare
7559a86
to
92684f6
Compare
Description
Context
Cucumber performs filtering and formatting on error backtraces before displaying them in terminal output.
When running on Ruby 3.4, the filtering and formatting is not working. This is defect is caused by the new backtrace format introduced in Ruby 3.4.
See:
Change
Update the
Cucumber::Glue:: InvokeInWorld
andCucumber::Formatter:: BacktraceFilter
to support both styles of bactraces.Fixes #1770
Type of change
Checklist:
Your PR is ready for review once the following checklist is
complete. You can also add some checks if you want to.
bundle exec rubocop
reports no offenses