Commit e43a5ec6 authored by Peter Leitzen's avatar Peter Leitzen

Merge branch 'leaky-constant-fix-34' into 'master'

Fix leaky constant in test coverage spec

See merge request gitlab-org/gitlab!32134
parents fbe6441f 626a9277
...@@ -351,7 +351,6 @@ RSpec/LeakyConstantDeclaration: ...@@ -351,7 +351,6 @@ RSpec/LeakyConstantDeclaration:
- 'spec/db/schema_spec.rb' - 'spec/db/schema_spec.rb'
- 'spec/lib/feature_spec.rb' - 'spec/lib/feature_spec.rb'
- 'spec/lib/gitlab/config/entry/simplifiable_spec.rb' - 'spec/lib/gitlab/config/entry/simplifiable_spec.rb'
- 'spec/lib/gitlab/import_export/import_test_coverage_spec.rb'
- 'spec/lib/gitlab/quick_actions/dsl_spec.rb' - 'spec/lib/gitlab/quick_actions/dsl_spec.rb'
- 'spec/lib/marginalia_spec.rb' - 'spec/lib/marginalia_spec.rb'
- 'spec/mailers/notify_spec.rb' - 'spec/mailers/notify_spec.rb'
......
---
title: Fix leaky constant issue in test coverage spec
merge_request: 32134
author: Rajendra Kadam
type: fixed
...@@ -10,61 +10,65 @@ require 'spec_helper' ...@@ -10,61 +10,65 @@ require 'spec_helper'
describe 'Test coverage of the Project Import' do describe 'Test coverage of the Project Import' do
include ConfigurationHelper include ConfigurationHelper
# `MUTED_RELATIONS` is a technical debt. # `muted_relations` is a technical debt.
# This list expected to be empty or used as a workround # This list expected to be empty or used as a workround
# in case this spec blocks an important urgent MR. # in case this spec blocks an important urgent MR.
# It is also expected that adding a relation in the list should lead to # It is also expected that adding a relation in the list should lead to
# opening a follow-up issue to fix this. # opening a follow-up issue to fix this.
MUTED_RELATIONS = %w[ let(:muted_relations) do
project.milestones.events.push_event_payload %w[
project.issues.events project.milestones.events.push_event_payload
project.issues.events.push_event_payload project.issues.events
project.issues.notes.events project.issues.events.push_event_payload
project.issues.notes.events.push_event_payload project.issues.notes.events
project.issues.milestone.events.push_event_payload project.issues.notes.events.push_event_payload
project.issues.issue_milestones project.issues.milestone.events.push_event_payload
project.issues.issue_milestones.milestone project.issues.issue_milestones
project.issues.resource_label_events.label.priorities project.issues.issue_milestones.milestone
project.issues.designs.notes project.issues.resource_label_events.label.priorities
project.issues.designs.notes.author project.issues.designs.notes
project.issues.designs.notes.events project.issues.designs.notes.author
project.issues.designs.notes.events.push_event_payload project.issues.designs.notes.events
project.merge_requests.metrics project.issues.designs.notes.events.push_event_payload
project.merge_requests.notes.events.push_event_payload project.merge_requests.metrics
project.merge_requests.events.push_event_payload project.merge_requests.notes.events.push_event_payload
project.merge_requests.timelogs project.merge_requests.events.push_event_payload
project.merge_requests.label_links project.merge_requests.timelogs
project.merge_requests.label_links.label project.merge_requests.label_links
project.merge_requests.label_links.label.priorities project.merge_requests.label_links.label
project.merge_requests.milestone project.merge_requests.label_links.label.priorities
project.merge_requests.milestone.events project.merge_requests.milestone
project.merge_requests.milestone.events.push_event_payload project.merge_requests.milestone.events
project.merge_requests.merge_request_milestones project.merge_requests.milestone.events.push_event_payload
project.merge_requests.merge_request_milestones.milestone project.merge_requests.merge_request_milestones
project.merge_requests.resource_label_events.label project.merge_requests.merge_request_milestones.milestone
project.merge_requests.resource_label_events.label.priorities project.merge_requests.resource_label_events.label
project.ci_pipelines.notes.events project.merge_requests.resource_label_events.label.priorities
project.ci_pipelines.notes.events.push_event_payload project.ci_pipelines.notes.events
project.protected_branches.unprotect_access_levels project.ci_pipelines.notes.events.push_event_payload
project.prometheus_metrics project.protected_branches.unprotect_access_levels
project.metrics_setting project.prometheus_metrics
project.boards.lists.label.priorities project.metrics_setting
project.service_desk_setting project.boards.lists.label.priorities
].freeze project.service_desk_setting
].freeze
end
# A list of JSON fixture files we use to test Import. # A list of JSON fixture files we use to test Import.
# Most of the relations are present in `complex/project.json` # Most of the relations are present in `complex/project.json`
# which is our main fixture. # which is our main fixture.
PROJECT_JSON_FIXTURES = [ let(:project_json_fixtures) do
'spec/fixtures/lib/gitlab/import_export/complex/project.json', [
'spec/fixtures/lib/gitlab/import_export/group/project.json', 'spec/fixtures/lib/gitlab/import_export/complex/project.json',
'spec/fixtures/lib/gitlab/import_export/light/project.json', 'spec/fixtures/lib/gitlab/import_export/group/project.json',
'spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json', 'spec/fixtures/lib/gitlab/import_export/light/project.json',
'spec/fixtures/lib/gitlab/import_export/designs/project.json' 'spec/fixtures/lib/gitlab/import_export/milestone-iid/project.json',
].freeze 'spec/fixtures/lib/gitlab/import_export/designs/project.json'
].freeze
end
it 'ensures that all imported/exported relations are present in test JSONs' do it 'ensures that all imported/exported relations are present in test JSONs' do
not_tested_relations = (relations_from_config - tested_relations) - MUTED_RELATIONS not_tested_relations = (relations_from_config - tested_relations) - muted_relations
expect(not_tested_relations).to be_empty, failure_message(not_tested_relations) expect(not_tested_relations).to be_empty, failure_message(not_tested_relations)
end end
...@@ -76,7 +80,7 @@ describe 'Test coverage of the Project Import' do ...@@ -76,7 +80,7 @@ describe 'Test coverage of the Project Import' do
end end
def tested_relations def tested_relations
PROJECT_JSON_FIXTURES.flat_map(&method(:relations_from_json)).to_set project_json_fixtures.flat_map(&method(:relations_from_json)).to_set
end end
def relations_from_json(json_file) def relations_from_json(json_file)
...@@ -106,7 +110,7 @@ describe 'Test coverage of the Project Import' do ...@@ -106,7 +110,7 @@ describe 'Test coverage of the Project Import' do
These relations seem to be added recenty and These relations seem to be added recenty and
they expected to be covered in our Import specs: #{not_tested_relations}. they expected to be covered in our Import specs: #{not_tested_relations}.
To do that, expand one of the files listed in `PROJECT_JSON_FIXTURES` To do that, expand one of the files listed in `project_json_fixtures`
(or expand the list if you consider adding a new fixture file). (or expand the list if you consider adding a new fixture file).
After that, add a new spec into After that, add a new spec into
...@@ -114,7 +118,7 @@ describe 'Test coverage of the Project Import' do ...@@ -114,7 +118,7 @@ describe 'Test coverage of the Project Import' do
to check that the relation is being imported correctly. to check that the relation is being imported correctly.
In case the spec breaks the master or there is a sense of urgency, In case the spec breaks the master or there is a sense of urgency,
you could include the relations into the `MUTED_RELATIONS` list. you could include the relations into the `muted_relations` list.
Muting relations is considered to be a temporary solution, so please Muting relations is considered to be a temporary solution, so please
open a follow-up issue and try to fix that when it is possible. open a follow-up issue and try to fix that when it is possible.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment