Skip to content

Draft: Add new RuboCop rule `RSpec/AggregateExamples` of test-prof

Peter Leitzen requested to merge pl-rubocop-test-prof into master

What does this MR do and why?

This MR introduces a new 👮 rule RSpec/AggregateExamples.

See https://test-prof.evilmartians.io/#/misc/rubocop?id=rspecaggregateexamples:

This cop encourages you to use one of the greatest features of the recent RSpec - aggregating failures within an example.

Draft?

TODO The question is why? Show-case some examples where apply this 👮 helped to reduce the runtime.

Screenshots or screen recordings

Top 50 offenders:

$ be rubocop -f worst --only RSpec/AggregateExamples --parallel

555   spec/lib/gitlab/regex_spec.rb
272   spec/features/security/project/internal_access_spec.rb
271   spec/features/security/project/public_access_spec.rb
248   spec/features/security/project/private_access_spec.rb
205   spec/models/application_setting_spec.rb
196   spec/models/packages/package_spec.rb
183   spec/models/project_spec.rb
158   spec/models/member_spec.rb
140   spec/models/user_spec.rb
115   ee/spec/models/application_setting_spec.rb
86    spec/policies/project_policy_spec.rb
72    spec/lib/gitlab/git/blob_spec.rb
71    spec/lib/gitlab/path_regex_spec.rb
66    ee/spec/policies/group_policy_spec.rb
64    spec/features/security/project/snippet/public_access_spec.rb
61    ee/spec/lib/gitlab/ci/parsers/license_compliance/license_scanning_spec.rb
60    ee/spec/policies/project_policy_spec.rb
56    spec/models/group_spec.rb
48    ee/spec/models/ee/vulnerability_spec.rb
48    spec/features/security/group/private_access_spec.rb
48    spec/features/security/project/snippet/internal_access_spec.rb
46    spec/models/ci/pipeline_spec.rb
42    ee/spec/models/project_spec.rb
40    spec/features/security/group/internal_access_spec.rb
40    spec/features/security/group/public_access_spec.rb
38    ee/spec/models/vulnerabilities/finding_spec.rb
38    spec/lib/gitlab/import_export/project/tree_restorer_spec.rb
37    spec/models/ci/build_spec.rb
37    spec/models/clusters/cluster_spec.rb
37    spec/models/hooks/web_hook_spec.rb
37    spec/models/namespace_spec.rb
35    spec/lib/gitlab/ci/status/build/factory_spec.rb
34    spec/lib/gitlab/ci/config/entry/rules/rule_spec.rb
31    spec/models/issue_spec.rb
30    ee/spec/models/ee/group_spec.rb
30    spec/mailers/emails/profile_spec.rb
29    spec/lib/gitlab/regex_requires_app_spec.rb
28    spec/models/merge_request_spec.rb
26    ee/spec/lib/gitlab/pagination_delegate_spec.rb
25    spec/lib/gitlab/git/tree_spec.rb
25    spec/models/packages/conan/metadatum_spec.rb
23    spec/lib/gitlab/git/commit_spec.rb
22    spec/graphql/types/project_type_spec.rb
22    spec/models/integrations/datadog_spec.rb
22    spec/support/shared_examples/models/packages/debian/distribution_shared_examples.rb
21    ee/spec/features/security/project/internal_access_spec.rb
21    ee/spec/features/security/project/private_access_spec.rb
21    ee/spec/features/security/project/public_access_spec.rb
21    ee/spec/models/epic_spec.rb

How to set up and validate locally

bin/rake rubocop:todo:generate[RSpec/AggregateExamples]

bundle exec rubocop --auto-correct --only RSpec/AggregateExamples spec/features/security/project/internal_access_spec.rb

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Peter Leitzen

Merge request reports

Loading