Fix silenced Style/OpenStructUse offenses
Goal
Fix all silenced offenses of the Style/OpenStructUse
cop added in !73373 (merged)
Supersedes #325744 (closed).
Recommendations
- Replace
OpenStruct
in tests withdouble
s, or test-specificStruct
s orHash
es- OpenStruct and hash differ slightly in API, ensure good integration coverage and be mindful that keys should not have the name of any hash method or built-in method
- Replace
OpenStruct
outside of tests with customStruct
s orHash
es - Delegate method calls via
method_missing
when keys are unknown or configurable by users - Use
ActiveSupport::InheritableOptions
in cases where both method call (object.foo
) and Hash syntax (object['foo']
) is used deliberately - for example, !75993 (merged)- Please beware when using it with keys like
default
,keys
, and all predefinedHash
andObject
methods. - See !75993 (comment 895124425)
- Please beware when using it with keys like
Gotchas
- RSpec would reject using
double
inlet_it_be
(e.g !74192 (comment 732802890)). Consider iflet_it_be
can be changed to a plainlet
without slowing down the test, for example if thelet_it_be
block is not hitting ActiveRecord.
Offenses
Style/OpenStructUse
configuration in .rubocop_todo/style/open_struct_use.yml
in this same MR.
-
'Guardfile' - !65386 (merged) -
'app/finders/snippets_finder.rb' - !73398 (merged) -
'app/helpers/application_settings_helper.rb' !75286 (closed) -
'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb' - !73935 (merged) -
'ee/spec/db/production/license_spec.rb' - !74266 (merged) -
'ee/spec/features/projects/new_project_spec.rb' - !74974 (closed) -
'ee/spec/finders/template_finder_spec.rb' -
'ee/spec/graphql/ee/resolvers/board_lists_resolver_spec.rb' - !74975 (merged) -
'ee/spec/graphql/mutations/merge_requests/accept_spec.rb' - !74192 (merged) -
'ee/spec/graphql/resolvers/board_groupings/epics_resolvers_spec.rb' - !74976 (merged) -
'ee/spec/helpers/billing_plans_helper_spec.rb' - !74415 (merged) -
'ee/spec/helpers/ee/blob_helper_spec.rb' -
'ee/spec/lib/gitlab/auth/group_saml/failure_handler_spec.rb' -
'ee/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb' - !74957 (merged) !89434 (merged) -
'ee/spec/requests/api/ldap_spec.rb' - !74190 (merged) -
'lib/api/wikis.rb' -
'lib/gitlab/git/diff_collection.rb' -
'lib/gitlab/import_export/after_export_strategies/base_after_export_strategy.rb' -
'lib/gitlab/testing/request_inspector_middleware.rb' -
'lib/mattermost/session.rb' - !70902 (merged) -
'spec/bin/feature_flag_spec.rb' - !75186 (merged) -
'spec/controllers/admin/clusters_controller_spec.rb' - !75188 (merged) -
'spec/controllers/concerns/import_url_params_spec.rb' - !74403 (merged) -
'spec/controllers/groups/clusters_controller_spec.rb' - !75190 (merged) -
'spec/controllers/import/fogbugz_controller_spec.rb' - !75192 (merged) -
'spec/controllers/import/gitlab_controller_spec.rb' - !75194 (merged) -
'spec/controllers/projects/clusters_controller_spec.rb' - !75214 (merged) -
'spec/dependencies/omniauth_saml_spec.rb' - !75215 (merged) -
'spec/factories/go_module_versions.rb' - !75217 (merged) -
'spec/factories/wiki_pages.rb' - !75218 (merged) -
'spec/features/projects/clusters/gcp_spec.rb' - !75222 (merged) -
'spec/features/projects/clusters_spec.rb' - !75224 (merged) -
'spec/finders/template_finder_spec.rb' - !75226 (merged) -
'spec/graphql/mutations/branches/create_spec.rb' - !75233 (merged) -
'spec/graphql/mutations/clusters/agent_tokens/create_spec.rb' - !75233 (merged) -
'spec/graphql/mutations/clusters/agents/create_spec.rb' - !75233 (merged) -
'spec/graphql/mutations/clusters/agents/delete_spec.rb' - !75233 (merged) -
'spec/graphql/mutations/commits/create_spec.rb' - !75233 (merged) -
'spec/graphql/mutations/merge_requests/accept_spec.rb' - !75281 (merged) -
'spec/graphql/mutations/merge_requests/create_spec.rb' - !75283 (merged) -
'spec/graphql/types/range_input_type_spec.rb' - !75077 (merged) -
'spec/helpers/application_settings_helper_spec.rb' - !75286 (closed) -
'spec/helpers/profiles_helper_spec.rb' - !75288 (closed) -
'spec/initializers/doorkeeper_spec.rb' - !75289 (merged) -
'spec/lib/gitlab/auth/o_auth/provider_spec.rb' - !75277 (merged) -
'spec/lib/gitlab/cleanup/orphan_lfs_file_references_spec.rb' - !75322 (merged) -
'spec/lib/gitlab/database/migrations/runner_spec.rb' - !75323 (merged) -
'spec/lib/gitlab/gitaly_client/blobs_stitcher_spec.rb' - !75324 (closed) -
'spec/lib/gitlab/gitaly_client/diff_stitcher_spec.rb' - !75324 (closed) -
'spec/lib/gitlab/grape_logging/loggers/exception_logger_spec.rb' - !74421 (merged) -
'spec/lib/gitlab/grape_logging/loggers/perf_logger_spec.rb' - !74420 (merged) -
'spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb' - !74419 (merged) -
'spec/lib/gitlab/graphql/pagination/keyset/connection_generic_keyset_spec.rb' - !75075 (merged) -
'spec/lib/gitlab/graphql/pagination/keyset/connection_spec.rb' - !75076 (merged) -
'spec/lib/gitlab/legacy_github_import/project_creator_spec.rb' - !75238 (merged) -
'spec/lib/gitlab/quick_actions/command_definition_spec.rb' - !75238 (merged) -
'spec/lib/gitlab/quick_actions/dsl_spec.rb' - !74702 (merged) -
'spec/lib/gitlab/relative_positioning/range_spec.rb' - !74412 (merged) -
'spec/lib/gitlab/usage_data_spec.rb' - !74405 (merged) -
'spec/models/design_management/design_action_spec.rb' - !74408 (merged) -
'spec/models/design_management/design_at_version_spec.rb' - !74408 (merged) -
'spec/models/user_spec.rb' - !75240 (merged) -
'spec/presenters/packages/nuget/search_results_presenter_spec.rb' - !75240 (merged) -
'spec/requests/api/graphql/mutations/design_management/delete_spec.rb' - !74620 (merged) -
'spec/requests/api/import_github_spec.rb' - !74618 (merged) -
'spec/requests/api/internal/base_spec.rb' - !73932 (merged) -
'spec/services/packages/nuget/metadata_extraction_service_spec.rb' - !74271 (merged) -
'spec/services/projects/import_service_spec.rb' - !75280 (merged) -
'spec/services/system_note_service_spec.rb' - !75280 (merged) -
'spec/support/helpers/import_spec_helper.rb' - !75280 (merged) -
'spec/support/helpers/login_helpers.rb' - !75280 (merged) -
'spec/support/helpers/repo_helpers.rb' - !80951 (closed) -
'spec/support/shared_examples/controllers/githubish_import_controller_shared_examples.rb' - !74957 (merged) -
'spec/support/shared_examples/requests/api/nuget_packages_shared_examples.rb' - !74203 (merged) -
'spec/support/shared_examples/requests/api/pypi_packages_shared_examples.rb' - !74197 (merged) -
'spec/support_specs/helpers/stub_feature_flags_spec.rb' - !74201 (merged) -
'spec/tooling/rspec_flaky/flaky_example_spec.rb' - !76357 (merged) -
'spec/workers/packages/maven/metadata/sync_worker_spec.rb' - !74141 (merged) -
'tooling/rspec_flaky/flaky_example.rb' - !76357 (merged)
Edited by Peter Leitzen