diff --git a/changelog/fix_autogenconfig_bug_for_HashSyntax.md b/changelog/fix_autogenconfig_bug_for_HashSyntax.md new file mode 100644 index 00000000000..b1ee3866321 --- /dev/null +++ b/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][]) diff --git a/lib/rubocop/cop/style/hash_syntax.rb b/lib/rubocop/cop/style/hash_syntax.rb index 031b1c619ed..2d7c2e63022 100644 --- a/lib/rubocop/cop/style/hash_syntax.rb +++ b/lib/rubocop/cop/style/hash_syntax.rb @@ -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 diff --git a/spec/rubocop/cli/auto_gen_config_spec.rb b/spec/rubocop/cli/auto_gen_config_spec.rb index c41c63c4924..de5ba8238b0 100644 --- a/spec/rubocop/cli/auto_gen_config_spec.rb +++ b/spec/rubocop/cli/auto_gen_config_spec.rb @@ -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