Commit 2e59bea3 authored by Rémy Coutable's avatar Rémy Coutable Committed by Stan Hu

Add migration tests detection to Quality::TestLevel

Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent ab6daccf
...@@ -36,6 +36,10 @@ module Quality ...@@ -36,6 +36,10 @@ module Quality
workers workers
elastic_integration elastic_integration
], ],
migration: %w[
migrations
lib/gitlab/background_migration
],
integration: %w[ integration: %w[
controllers controllers
mailers mailers
...@@ -62,6 +66,10 @@ module Quality ...@@ -62,6 +66,10 @@ module Quality
def level_for(file_path) def level_for(file_path)
case file_path case file_path
# Detect migration first since some background migration tests are under
# spec/lib/gitlab/background_migration and tests under spec/lib are unit by default
when regexp(:migration)
:migration
when regexp(:unit) when regexp(:unit)
:unit :unit
when regexp(:integration) when regexp(:integration)
......
...@@ -25,6 +25,13 @@ RSpec.describe Quality::TestLevel do ...@@ -25,6 +25,13 @@ RSpec.describe Quality::TestLevel do
end end
end end
context 'when level is migration' do
it 'returns a pattern' do
expect(subject.pattern(:migration))
.to eq("spec/{migrations,lib/gitlab/background_migration}{,/**/}*_spec.rb")
end
end
context 'when level is integration' do context 'when level is integration' do
it 'returns a pattern' do it 'returns a pattern' do
expect(subject.pattern(:integration)) expect(subject.pattern(:integration))
...@@ -79,6 +86,13 @@ RSpec.describe Quality::TestLevel do ...@@ -79,6 +86,13 @@ RSpec.describe Quality::TestLevel do
end end
end end
context 'when level is migration' do
it 'returns a regexp' do
expect(subject.regexp(:migration))
.to eq(%r{spec/(migrations|lib/gitlab/background_migration)})
end
end
context 'when level is integration' do context 'when level is integration' do
it 'returns a regexp' do it 'returns a regexp' do
expect(subject.regexp(:integration)) expect(subject.regexp(:integration))
...@@ -116,6 +130,18 @@ RSpec.describe Quality::TestLevel do ...@@ -116,6 +130,18 @@ RSpec.describe Quality::TestLevel do
expect(subject.level_for('spec/models/abuse_report_spec.rb')).to eq(:unit) expect(subject.level_for('spec/models/abuse_report_spec.rb')).to eq(:unit)
end end
it 'returns the correct level for a migration test' do
expect(subject.level_for('spec/migrations/add_default_and_free_plans_spec.rb')).to eq(:migration)
end
it 'returns the correct level for a background_migration test' do
expect(subject.level_for('spec/lib/gitlab/background_migration/archive_legacy_traces_spec.rb')).to eq(:migration)
end
it 'returns the correct level for a geo migration test' do
expect(described_class.new('ee/').level_for('ee/spec/migrations/geo/migrate_ci_job_artifacts_to_separate_registry_spec.rb')).to eq(:migration)
end
it 'returns the correct level for an integration test' do it 'returns the correct level for an integration test' do
expect(subject.level_for('spec/mailers/abuse_report_mailer_spec.rb')).to eq(:integration) expect(subject.level_for('spec/mailers/abuse_report_mailer_spec.rb')).to eq(:integration)
end end
......
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