summaryrefslogtreecommitdiff
path: root/spec/support/shared_contexts/rubocop_default_rspec_language_config_context.rb
diff options
context:
space:
mode:
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.rb32
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