Fix Configuration.with_options merge direction #922
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Without this change,
factory.new(@configuration.with_options(out_stream: out_stream))
in Cucumber::Runtime#create_formatter doesn't actually changed theout_stream
from STDOUT in the default configuration because the merge order wasnew_options.merge(@options)
, so any keys in bothnew_options
and@options
, like:out_stream
, would have the value from@options
win.The specs weren't catching this problem because
with_options
was being called onConfiguration.new
, which had no keys set. I changed in spec in 63d4c37 to reveal the bug and fixed it in 067215c.This bug may have manifested by users unable to override the --out from STDOUT when using new formatters that have
initialize(configuration)
instead of the legacyinitialize/3