diff --git a/lib/rubocop/rspec/config_formatter.rb b/lib/rubocop/rspec/config_formatter.rb index 11447917a..e6110e9bb 100644 --- a/lib/rubocop/rspec/config_formatter.rb +++ b/lib/rubocop/rspec/config_formatter.rb @@ -8,7 +8,7 @@ module RSpec class ConfigFormatter EXTENSION_ROOT_DEPARTMENT = %r{^(RSpec/)}.freeze SUBDEPARTMENTS = %(RSpec/Capybara RSpec/FactoryBot RSpec/Rails) - STYLE_GUIDE_BASE_URL = 'https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/' + COP_DOC_BASE_URL = 'https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/' def initialize(config, descriptions) @config = config @@ -27,9 +27,10 @@ def unified_config cops.each_with_object(config.dup) do |cop, unified| next if SUBDEPARTMENTS.include?(cop) - unified[cop] = config.fetch(cop) - .merge(descriptions.fetch(cop)) - .merge('StyleGuide' => STYLE_GUIDE_BASE_URL + cop.sub('RSpec/', '')) + unified[cop].merge!(descriptions.fetch(cop)) + unless unified[cop]['StyleGuide'] + unified[cop].merge!('StyleGuide' => cop_doc_url(cop)) + end end end @@ -37,6 +38,10 @@ def cops (descriptions.keys | config.keys).grep(EXTENSION_ROOT_DEPARTMENT) end + def cop_doc_url(cop) + COP_DOC_BASE_URL + cop.sub('RSpec/', '') + end + attr_reader :config, :descriptions end end diff --git a/spec/rubocop/rspec/config_formatter_spec.rb b/spec/rubocop/rspec/config_formatter_spec.rb index 8b7f163d9..a019c9c48 100644 --- a/spec/rubocop/rspec/config_formatter_spec.rb +++ b/spec/rubocop/rspec/config_formatter_spec.rb @@ -14,6 +14,10 @@ }, 'RSpec/Bar' => { 'Enabled' => true + }, + 'RSpec/Baz' => { + 'Enabled' => true, + 'StyleGuide' => '#buzz' } } end @@ -25,6 +29,9 @@ }, 'RSpec/Bar' => { 'Description' => 'Wow' + }, + 'RSpec/Baz' => { + 'Description' => 'Woof' } } end @@ -47,6 +54,11 @@ | Enabled: true | Description: Wow | StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Bar + | + |RSpec/Baz: + | Enabled: true + | StyleGuide: "#buzz" + | Description: Woof YAML end end