RSpec/UselessDynamicDefinition: Fix current offenses
Problem
In gitlab-org/ruby/gems/gitlab-styles!172 (merged) we enabled a RSpec/UselessDynamicDefinition
and created a TODO list of pending offenses.
Proposed solution
Resolve the offenses by introducing a context
, shared_examples
, or with_them
(from RSpec::Parameterized
).
⚠ Failing tests
While addressing these Rubocop violations, you might encounter failing tests. These failures require careful attention as they might be hidden bugs that were not tested before, due to the repeated let
statements. Please work with the domain experts that owns the feature category to determine the path forward with respect to these failures.
Here is how you can find the team that owns the feature category.
- Look for
feature_category:
tag in the top of specs- Use https://about.gitlab.com/handbook/product/categories/ to determine the group and ping the engineering manager or the individual directly
- If not found, try to find feature category by path names
- Use https://about.gitlab.com/handbook/product/categories/ to determine the group and ping the engineering manager or the individual directly
- If not easily possible, use
git log -p <spec file>
to ping previous authors directly
List
-
spec/workers/packages/nuget/extraction_worker_spec.rb
(2 offenses) - !118630 (merged) -
spec/services/packages/nuget/update_package_from_metadata_service_spec.rb
(2 offenses) - !118444 (merged) -
spec/models/namespace/package_setting_spec.rb
(2 offenses) - !118131 (merged) -
spec/models/ci/job_token/allowlist_spec.rb
(2 offenses) - !117517 (merged) -
spec/haml_lint/linter/no_plain_nodes_spec.rb
(2 offenses) - !117385 (merged) -
spec/features/users/signup_spec.rb
(2 offenses) - !117758 (merged) -
spec/controllers/import/bulk_imports_controller_spec.rb
(2 offenses) - !117759 (merged) -
ee/spec/services/package_metadata/data_object_spec.rb
(2 offenses) - !118445 (merged) -
spec/views/devise/sessions/new.html.haml_spec.rb
(1 offense) - !117760 (merged) -
spec/support/cycle_analytics_helpers/test_generation.rb
(1 offense) - !117762 (merged) -
spec/services/users/update_canonical_email_service_spec.rb
(1 offense) - !117763 (merged) -
spec/services/spam/spam_verdict_service_spec.rb
(1 offense) - !117765 (merged) -
spec/services/projects/update_service_spec.rb
(1 offense) - !117766 (merged) -
spec/services/packages/npm/generate_metadata_service_spec.rb
(1 offense) - !117767 (merged) -
spec/services/metrics/dashboard/panel_preview_service_spec.rb
(1 offense) - !118446 (merged) -
spec/services/git/wiki_push_service/change_spec.rb
(1 offense) - !117783 (merged) -
spec/services/clusters/cleanup/service_account_service_spec.rb
(1 offense) - !118132 (merged) -
spec/rubocop/cop/migration/create_table_with_foreign_keys_spec.rb
(1 offense) - !118133 (merged) -
spec/requests/api/graphql/project/environments_spec.rb
(1 offense) - !118618 (merged) -
spec/requests/api/badges_spec.rb
(1 offense) - !118153 (merged) -
spec/models/note_spec.rb
(1 offense) - !117448 (merged) -
spec/models/merge_request_spec.rb
(1 offense) - !118014 (merged) -
spec/models/concerns/has_user_type_spec.rb
(1 offense) - !118168 (merged) -
spec/models/concerns/ci/has_status_spec.rb
(1 offense) - !118515 (merged) -
spec/models/ci/resource_group_spec.rb
(1 offense) - !118608 (merged) -
spec/models/ci/job_token/scope_spec.rb
(1 offense) - !117517 (merged) -
spec/models/ci/job_artifact_spec.rb
(1 offense) - !118609 (diffs) -
spec/models/award_emoji_spec.rb
(1 offense) - !118615 (merged) -
spec/lib/gitlab/utils/strong_memoize_spec.rb
(1 offense) - !118004 (merged) -
spec/lib/gitlab/slug/environment_spec.rb
(1 offense) - !117433 (merged) -
spec/lib/gitlab/error_tracking_spec.rb
(1 offense) - !117404 (merged) -
spec/lib/gitlab/diff/formatters/image_formatter_spec.rb
(1 offense) - !118170 (merged) -
spec/lib/gitlab/consul/internal_spec.rb
(1 offense) - !118175 (merged) -
spec/helpers/page_layout_helper_spec.rb
(1 offense) - !118181 (merged) -
spec/finders/packages/group_packages_finder_spec.rb
(1 offense) - !118188 (merged) -
spec/features/admin/admin_mode/login_spec.rb
(1 offense) - !118427 (merged) -
spec/features/admin/admin_appearance_spec.rb
(1 offense) - !118428 (merged) -
spec/controllers/import/gitea_controller_spec.rb
(1 offense) - !118430 (merged) -
ee/spec/workers/elastic_namespace_rollout_worker_spec.rb
(1 offense) - !118431 (merged) -
ee/spec/workers/audit_events/audit_event_streaming_worker_spec.rb
(1 offense) - !118432 (merged) -
ee/spec/support/shared_examples/lib/gitlab/elastic/search_results_shared_examples.rb
(1 offense) - !118433 (merged) -
ee/spec/support/shared_examples/features/protected_branches_access_control_shared_examples.rb
(1 offense) - !118006 (merged) -
ee/spec/services/ee/protected_branches/create_service_spec.rb
(1 offense) - !118001 (merged) -
ee/spec/models/gitlab_subscription_spec.rb
(1 offense) - !118434 (diffs) -
ee/spec/models/elasticsearch_indexed_namespace_spec.rb
(1 offense) - !118435 (merged) -
ee/spec/lib/gitlab/graphql/loaders/bulk_epic_aggregate_loader_spec.rb
(1 offense) - !118621 (merged) -
ee/spec/lib/audit/project_changes_auditor_spec.rb
(1 offense) - !118629 (merged) -
ee/spec/helpers/push_rules_helper_spec.rb
(1 offense) - !117814 (merged) -
ee/spec/helpers/nav_helper_spec.rb
(1 offense) - !117640 (merged)
Offenses
Click to expand
Offenses:
ee/spec/helpers/nav_helper_spec.rb:19:35: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w[your_work project group].each do |context_nav|
^^^^
ee/spec/helpers/push_rules_helper_spec.rb:51:44: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
PushRule::SETTINGS_WITH_GLOBAL_DEFAULT.each do |rule_attr|
^^^^
ee/spec/lib/audit/project_changes_auditor_spec.rb:249:17: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
columns.each do |column|
^^^^
ee/spec/lib/gitlab/graphql/loaders/bulk_epic_aggregate_loader_spec.rb:150:19: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[nil, [], ""].each do |empty_arg|
^^^^
ee/spec/models/elasticsearch_indexed_namespace_spec.rb:38:29: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
Plan::PAID_HOSTED_PLANS.each do |plan|
^^^^
ee/spec/models/gitlab_subscription_spec.rb:8:56: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%i[free_plan bronze_plan premium_plan ultimate_plan].each do |plan|
^^^^
ee/spec/services/ee/protected_branches/create_service_spec.rb:128:33: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w(*ture *eatur* feat*).each do |wildcard|
^^^^
ee/spec/services/package_metadata/data_object_spec.rb:31:50: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
['foo,v1,""', '"",v1,MIT', 'foo,"",MIT'].each do |t|
^^^^
ee/spec/services/package_metadata/data_object_spec.rb:39:44: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
['foo,v1,', ',v1,MIT', 'foo,,MIT'].each do |t|
^^^^
ee/spec/support/shared_examples/features/protected_branches_access_control_shared_examples.rb:6:18: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w[merge push].each do |git_operation|
^^^^
ee/spec/support/shared_examples/lib/gitlab/elastic/search_results_shared_examples.rb:26:10: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
scopes.each do |scope|
^^^^
ee/spec/workers/audit_events/audit_event_streaming_worker_spec.rb:230:33: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
Gitlab::HTTP::HTTP_ERRORS.each do |error_klass|
^^^^
ee/spec/workers/elastic_namespace_rollout_worker_spec.rb:13:27: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
Plan::PAID_HOSTED_PLANS.each do |plan|
^^^^
spec/controllers/import/bulk_imports_controller_spec.rb:217:71: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w[https://localhost:3000 http://192.168.0.1 ftp://testing].each do |url|
^^^^
spec/controllers/import/bulk_imports_controller_spec.rb:234:59: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w[https://localhost:3000 http://192.168.0.1].each do |url|
^^^^
spec/controllers/import/gitea_controller_spec.rb:46:69: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w[https://localhost:3000 http://192.168.0.1 ftp://testing].each do |url|
^^^^
spec/features/admin/admin_appearance_spec.rb:10:15: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
flag_values.each do |val|
^^^^
spec/features/admin/admin_mode/login_spec.rb:17:17: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
flag_values.each do |val|
^^^^
spec/features/users/signup_spec.rb:7:15: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
flag_values.each do |val|
^^^^
spec/features/users/signup_spec.rb:67:15: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
flag_values.each do |val|
^^^^
spec/finders/packages/group_packages_finder_spec.rb:206:21: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
package_types.each { |pt| let_it_be("package_#{pt}") { create("#{pt}_package", project: project) } }
^^^^
spec/haml_lint/linter/no_plain_nodes_spec.rb:71:37: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w( > © »).each do |elem|
^^^^
spec/haml_lint/linter/no_plain_nodes_spec.rb:84:62: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w( Test Test> ©Hello Hello»).each do |elem|
^^^^
spec/helpers/page_layout_helper_spec.rb:58:28: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w(project user group).each do |type|
^^^^
spec/lib/gitlab/consul/internal_spec.rb:79:15: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[nil, ''].each do |value|
^^^^
spec/lib/gitlab/diff/formatters/image_formatter_spec.rb:28:31: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[:width, :height, :x, :y].each do |attr|
^^^^
spec/lib/gitlab/error_tracking_spec.rb:403:71: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
['Gitlab::SidekiqMiddleware::RetryError', 'SubclassRetryError'].each do |ex|
^^^^
spec/lib/gitlab/slug/environment_spec.rb:25:7: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
}.each do |name, matcher|
^^^^
spec/lib/gitlab/utils/strong_memoize_spec.rb:264:41: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[nil, false, true, 'value', 0, [0]].each do |value|
^^^^
spec/models/award_emoji_spec.rb:71:53: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%i[issue merge_request note_on_issue snippet].each do |awardable_type|
^^^^
spec/models/ci/job_artifact_spec.rb:485:65: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
described_class.file_formats.except(file_format).values.each do |other_format|
^^^^
spec/models/ci/job_token/allowlist_spec.rb:18:29: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[:inbound, :outbound].each do |d|
^^^^
spec/models/ci/job_token/allowlist_spec.rb:49:27: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[:inbound, :outbound].each do |d|
^^^^
spec/models/ci/job_token/scope_spec.rb:65:27: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[:inbound, :outbound].each do |d|
^^^^
spec/models/ci/resource_group_spec.rb:121:39: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
Ci::HasStatus::STATUSES_ENUM.keys.each do |status|
^^^^
spec/models/concerns/ci/has_status_spec.rb:395:61: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w[ci_pipeline ci_stage ci_build generic_commit_status].each do |type|
^^^^
spec/models/concerns/has_user_type_spec.rb:17:27: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
User::USER_TYPES.keys.each do |type|
^^^^
spec/models/merge_request_spec.rb:4726:26: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[:closed, :merged].each do |state|
^^^^
spec/models/namespace/package_setting_spec.rb:49:42: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[:maven_package, :generic_package].each do |format|
^^^^
spec/models/namespace/package_setting_spec.rb:78:122: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[:npm_package, :conan_package, :nuget_package, :pypi_package, :composer_package, :golang_package, :debian_package].each do |format|
^^^^
spec/models/note_spec.rb:808:52: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
SystemNoteMetadata.new.cross_reference_types.each do |type|
^^^^
spec/requests/api/badges_spec.rb:74:60: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%i[maintainer developer access_requester stranger].each do |type|
^^^^
spec/requests/api/graphql/project/environments_spec.rb:105:27: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
::Deployment.statuses.each do |status, _|
^^^^
spec/rubocop/cop/migration/create_table_with_foreign_keys_spec.rb:150:13: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
].each do |table|
^^^^
spec/services/clusters/cleanup/service_account_service_spec.rb:57:66: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
['Unauthorized', 'forbidden', 'Certificate verify Failed'].each do |message|
^^^^
spec/services/git/wiki_push_service/change_spec.rb:62:34: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%i[added renamed modified].each do |op|
^^^^
spec/services/metrics/dashboard/panel_preview_service_spec.rb:66:9: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
].each do |error_class|
^^^^
spec/services/packages/npm/generate_metadata_service_spec.rb:47:53: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
::Packages::DependencyLink.dependency_types.each_key do |dependency_type|
^^^^^^^^
spec/services/packages/nuget/update_package_from_metadata_service_spec.rb:261:21: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
invalid_names.each do |invalid_name|
^^^^
spec/services/packages/nuget/update_package_from_metadata_service_spec.rb:280:24: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
invalid_versions.each do |invalid_version|
^^^^
spec/services/projects/update_service_spec.rb:359:31: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
%w[issues wiki forking].each do |feature_name|
^^^^
spec/services/spam/spam_verdict_service_spec.rb:320:47: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
::Spam::SpamConstants::BLOCK_USER].each do |verdict_value|
^^^^
spec/services/users/update_canonical_email_service_spec.rb:94:25: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
[nil, 'nonsense'].each do |invalid_address|
^^^^
spec/support/cycle_analytics_helpers/test_generation.rb:29:17: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
scenarios.each do |start_time_conditions, end_time_conditions|
^^^^
spec/views/devise/sessions/new.html.haml_spec.rb:33:15: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
flag_values.each do |val|
^^^^
spec/workers/packages/nuget/extraction_worker_spec.rb:75:21: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
invalid_names.each do |invalid_name|
^^^^
spec/workers/packages/nuget/extraction_worker_spec.rb:96:24: C: RSpec/UselessDynamicDefinition: Avoid useless dynamic definitions without context.
invalid_versions.each do |invalid_version|
^^^^
30708 files inspected, 57 offenses detected
Edited by Ashutosh Gupta