Skip to content

Commit

Permalink
[Fix #9891] Fix --auto-gen-config bug for Style/HashSyntax
Browse files Browse the repository at this point in the history
We must call ruby19_check() even if there are no hash rockets in the
inspected node, to give it a chance to register that the correct style
has been detected. The generation of .rubocop_todo.yml depends on it.
  • Loading branch information
jonas054 committed Jul 1, 2021
1 parent 8333e8f commit 3d57dc5
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog/fix_autogenconfig_bug_for_HashSyntax.md
@@ -0,0 +1 @@
* [#9891](https://github.com/rubocop/rubocop/issues/9891): Fix `--auto-gen-config` bug for `Style/HashSyntax`. ([@jonas054][])
2 changes: 1 addition & 1 deletion lib/rubocop/cop/style/hash_syntax.rb
Expand Up @@ -74,7 +74,7 @@ def on_hash(node)
ruby19_no_mixed_keys_check(pairs)
elsif style == :no_mixed_keys
no_mixed_keys_check(pairs)
elsif node.source.include?('=>')
else
ruby19_check(pairs)
end
end
Expand Down
27 changes: 27 additions & 0 deletions spec/rubocop/cli/auto_gen_config_spec.rb
Expand Up @@ -1190,6 +1190,33 @@ def function(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
end
end

it 'generates EnforcedStyle parameter if it solves all offenses' do
create_file('example1.rb', ['# frozen_string_literal: true', '', 'h(:a => 1)'])

expect(cli.run(['--auto-gen-config'])).to eq(0)
expect(File.readlines('.rubocop_todo.yml')[10..-1].join)
.to eq(<<~YAML)
# Configuration parameters: UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
Style/HashSyntax:
EnforcedStyle: hash_rockets
YAML
end

it 'generates Exclude if no EnforcedStyle solves all offenses' do
create_file('example1.rb', ['# frozen_string_literal: true', '', 'h(:a => 1)', 'h(b: 2)'])

expect(cli.run(['--auto-gen-config'])).to eq(0)
expect(File.readlines('.rubocop_todo.yml')[10..-1].join)
.to eq(<<~YAML)
# Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
Style/HashSyntax:
Exclude:
- 'example1.rb'
YAML
end

it 'can be called when there are no files to inspection' do
expect(cli.run(['--auto-gen-config'])).to eq(0)
end
Expand Down

0 comments on commit 3d57dc5

Please sign in to comment.