Skip to content

EE spec locations are inconsistent

Background

@dstull noticed in !26296 (comment 298966967) that we have specs for the same class in two locations ee/spec/lib/gitlab/usage_data_spec.rb and ee/spec/lib/ee/gitlab/usage_data_spec.rb with different contents...

Proposal

We should establish this pattern:

If a spec is describe Gitlab::UsageData, then it should go into ee/spec/lib/gitlab/usage_data_spec.rb.

Conversely if a spec is describe EE::Gitlab::UsageData, then it should go into ee/spec/lib/ee/gitlab/usage_data_spec.rb.

Further details

This is currently half-enforced by RSpec/FilePath, in that describe EE::Gitlab::UsageData inside ee/spec/lib/gitlab/usage_data_spec.rb is caught but not describe Gitlab::UsageData inside ee/spec/lib/ee/gitlab/usage_data_spec.rb. (see https://github.com/rubocop-hq/rubocop-rspec/blob/7970b192bf55992b8d29f60d52a14ac32fcf5678/spec/rubocop/cop/rspec/file_path_spec.rb#L81-L85, thanks @smcgivern!)

We should also have a cop to enforce that the pattern of describe Gitlab::UsageData is not allowed in ee/spec/lib/ee/gitlab/usage_data_spec.rb.

Links

Edited by Thong Kuah