diff options
Diffstat (limited to 'spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb')
-rw-r--r-- | spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb b/spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb new file mode 100644 index 00000000000..a207c6ae9d1 --- /dev/null +++ b/spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +# From https://github.com/rubocop/rubocop-rspec/blob/master/spec/shared/default_rspec_language_config_context.rb +# This can be removed once we have https://github.com/rubocop/rubocop-rspec/pull/1377 + +RSpec.shared_context 'with default RSpec/Language config' do + include_context 'config' + + # Deep duplication is needed to prevent config leakage between examples + let(:other_cops) do + default_language = RuboCop::ConfigLoader + .default_configuration['RSpec']['Language'] + default_include = RuboCop::ConfigLoader + .default_configuration['RSpec']['Include'] + { 'RSpec' => + { + 'Include' => default_include, + 'Language' => deep_dup(default_language) + } } + end + + def deep_dup(object) + case object + when Array + object.map { |item| deep_dup(item) } + when Hash + object.transform_values { |value| deep_dup(value) } + else + object # only collections undergo modifications and need duping + end + end +end |