From 37e4d6d991ac8e712ea99c621f98831955b6ebf5 Mon Sep 17 00:00:00 2001 From: Toon Claes Date: Thu, 4 Jul 2019 18:47:16 +0000 Subject: [PATCH] DRY up conditions for files require DB review Stop using two separate lists for the conditions which files require a database review. Related discussion: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/30156#note_187732053 --- danger/database/Dangerfile | 32 +-------------------------- lib/gitlab/danger/helper.rb | 6 ++++- spec/lib/gitlab/danger/helper_spec.rb | 21 ++++++++++++++---- 3 files changed, 23 insertions(+), 36 deletions(-) diff --git a/danger/database/Dangerfile b/danger/database/Dangerfile index 4dadf60ad24..083e95b8da7 100644 --- a/danger/database/Dangerfile +++ b/danger/database/Dangerfile @@ -1,21 +1,5 @@ # frozen_string_literal: true -# All the files/directories that should be reviewed by the DB team. -DB_FILES = [ - 'db/', - 'app/models/project_authorization.rb', - 'app/services/users/refresh_authorized_projects_service.rb', - 'lib/gitlab/background_migration.rb', - 'lib/gitlab/background_migration/', - 'lib/gitlab/database.rb', - 'lib/gitlab/database/', - 'lib/gitlab/github_import.rb', - 'lib/gitlab/github_import/', - 'lib/gitlab/sql/', - 'rubocop/cop/migration', - 'ee/lib/gitlab/database/' -].freeze - SCHEMA_NOT_UPDATED_MESSAGE = <<~MSG **New %s added but %s wasn't updated.** @@ -24,20 +8,6 @@ updated too (unless the migration isn't changing the DB schema and isn't the most recent one). MSG -def database_paths_requiring_review(files) - to_review = [] - - files.each do |file| - review = DB_FILES.any? do |pattern| - file.start_with?(pattern) - end - - to_review << file if review - end - - to_review -end - non_geo_db_schema_updated = !git.modified_files.grep(%r{\Adb/schema\.rb}).empty? geo_db_schema_updated = !git.modified_files.grep(%r{\Aee/db/geo/schema\.rb}).empty? @@ -52,7 +22,7 @@ if geo_migration_created && !geo_db_schema_updated warn format(SCHEMA_NOT_UPDATED_MESSAGE, migrations: 'Geo migrations', schema: gitlab.html_link("ee/db/geo/schema.rb")) end -db_paths_to_review = database_paths_requiring_review(helper.all_changed_files) +db_paths_to_review = helper.changes_by_category[:database] unless db_paths_to_review.empty? message 'This merge request adds or changes files that require a ' \ diff --git a/lib/gitlab/danger/helper.rb b/lib/gitlab/danger/helper.rb index 1ecf4a12db7..0fc145534bf 100644 --- a/lib/gitlab/danger/helper.rb +++ b/lib/gitlab/danger/helper.rb @@ -103,6 +103,11 @@ module Gitlab yarn\.lock )\z}x => :frontend, + %r{\A(ee/)?db/} => :database, + %r{\A(ee/)?lib/gitlab/(database|background_migration|sql|github_import)(/|\.rb)} => :database, + %r{\A(app/models/project_authorization|app/services/users/refresh_authorized_projects_service)(/|\.rb)} => :database, + %r{\Arubocop/cop/migration(/|\.rb)} => :database, + %r{\A(ee/)?app/(?!assets|views)[^/]+} => :backend, %r{\A(ee/)?(bin|config|danger|generator_templates|lib|rubocop|scripts)/} => :backend, %r{\A(ee/)?spec/features/} => :test, @@ -112,7 +117,6 @@ module Gitlab %r{\A(Dangerfile|Gemfile|Gemfile.lock|Procfile|Rakefile|\.gitlab-ci\.yml)\z} => :backend, %r{\A[A-Z_]+_VERSION\z} => :backend, - %r{\A(ee/)?db/} => :database, %r{\A(ee/)?qa/} => :qa, # Files that don't fit into any category are marked with :none diff --git a/spec/lib/gitlab/danger/helper_spec.rb b/spec/lib/gitlab/danger/helper_spec.rb index c8e65a3e59d..92d90ac2fef 100644 --- a/spec/lib/gitlab/danger/helper_spec.rb +++ b/spec/lib/gitlab/danger/helper_spec.rb @@ -87,13 +87,13 @@ describe Gitlab::Danger::Helper do describe '#changes_by_category' do it 'categorizes changed files' do - expect(fake_git).to receive(:added_files) { %w[foo foo.md foo.rb foo.js db/foo qa/foo ee/changelogs/foo.yml] } + expect(fake_git).to receive(:added_files) { %w[foo foo.md foo.rb foo.js db/foo lib/gitlab/database/foo.rb qa/foo ee/changelogs/foo.yml] } allow(fake_git).to receive(:modified_files) { [] } allow(fake_git).to receive(:renamed_files) { [] } expect(helper.changes_by_category).to eq( backend: %w[foo.rb], - database: %w[db/foo], + database: %w[db/foo lib/gitlab/database/foo.rb], frontend: %w[foo.js], none: %w[ee/changelogs/foo.yml foo.md], qa: %w[qa/foo], @@ -159,9 +159,22 @@ describe Gitlab::Danger::Helper do 'ee/FOO_VERSION' | :unknown - 'db/foo' | :database - 'qa/foo' | :qa + 'db/foo' | :database + 'ee/db/foo' | :database + 'app/models/project_authorization.rb' | :database + 'app/services/users/refresh_authorized_projects_service.rb' | :database + 'lib/gitlab/background_migration.rb' | :database + 'lib/gitlab/background_migration/foo' | :database + 'ee/lib/gitlab/background_migration/foo' | :database + 'lib/gitlab/database.rb' | :database + 'lib/gitlab/database/foo' | :database + 'ee/lib/gitlab/database/foo' | :database + 'lib/gitlab/github_import.rb' | :database + 'lib/gitlab/github_import/foo' | :database + 'lib/gitlab/sql/foo' | :database + 'rubocop/cop/migration/foo' | :database + 'qa/foo' | :qa 'ee/qa/foo' | :qa 'changelogs/foo' | :none