From abd050b7827f0b53e126e57947a28a329ecb9c08 Mon Sep 17 00:00:00 2001 From: Leonardo da Rosa <ldarosa@gitlab.com> Date: Tue, 4 Jul 2023 14:53:45 +0000 Subject: [PATCH] Adds a new cop to check the use of finalize_background_migration method It prevents the usage of this deprecated method --- .rubocop.yml | 4 ++++ .../avoid_finalize_background_migration.yml | 7 ++++++ .../avoid_finalize_background_migration.rb | 23 +++++++++++++++++++ ...void_finalize_background_migration_spec.rb | 21 +++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 .rubocop_todo/migration/avoid_finalize_background_migration.yml create mode 100644 rubocop/cop/migration/avoid_finalize_background_migration.rb create mode 100644 spec/rubocop/cop/migration/avoid_finalize_background_migration_spec.rb diff --git a/.rubocop.yml b/.rubocop.yml index 2a2f6102dfef..8219ce78f03e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -935,6 +935,10 @@ Migration/BackgroundMigrationBaseClass: BackgroundMigration/AvoidSilentRescueExceptions: Enabled: false +Migration/AvoidFinalizeBackgroundMigration: + Include: + - 'db/post_migrate/*.rb' + Style/ClassAndModuleChildren: Enabled: true diff --git a/.rubocop_todo/migration/avoid_finalize_background_migration.yml b/.rubocop_todo/migration/avoid_finalize_background_migration.yml new file mode 100644 index 000000000000..bde85ce3e488 --- /dev/null +++ b/.rubocop_todo/migration/avoid_finalize_background_migration.yml @@ -0,0 +1,7 @@ +--- +Migration/AvoidFinalizeBackgroundMigration: + Details: grace period + Exclude: + - 'db/post_migrate/20220502015011_clean_up_fix_merge_request_diff_commit_users.rb' + - 'db/post_migrate/20220525131557_cleanup_backfill_integrations_enable_ssl_verification.rb' + - 'db/post_migrate/20220713133515_cleanup_backfill_draft_statuses_on_merge_requests.rb' diff --git a/rubocop/cop/migration/avoid_finalize_background_migration.rb b/rubocop/cop/migration/avoid_finalize_background_migration.rb new file mode 100644 index 000000000000..42e6e72a3303 --- /dev/null +++ b/rubocop/cop/migration/avoid_finalize_background_migration.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require_relative '../../migration_helpers' + +module RuboCop + module Cop + module Migration + class AvoidFinalizeBackgroundMigration < RuboCop::Cop::Base + include MigrationHelpers + + RESTRICT_ON_SEND = [:finalize_background_migration].freeze + + MSG = 'Prefer `ensure_batched_background_migration_is_finished` over ' \ + '`finalize_background_migration` in Batched Background Migrations. ' \ + 'See https://docs.gitlab.com/ee/development/database/batched_background_migrations.html' + + def on_send(node) + add_offense(node) + end + end + end + end +end diff --git a/spec/rubocop/cop/migration/avoid_finalize_background_migration_spec.rb b/spec/rubocop/cop/migration/avoid_finalize_background_migration_spec.rb new file mode 100644 index 000000000000..e4eec39e3ff5 --- /dev/null +++ b/spec/rubocop/cop/migration/avoid_finalize_background_migration_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rubocop_spec_helper' +require_relative '../../../../rubocop/cop/migration/avoid_finalize_background_migration' + +RSpec.describe RuboCop::Cop::Migration::AvoidFinalizeBackgroundMigration, feature_category: :database do + context 'when file is under db/post_migration' do + it "flags the use of 'finalize_background_migration' method" do + expect_offense(<<~RUBY) + class FinalizeMyMigration < Gitlab::Database::Migration[2.1] + MIGRATION = 'MyMigration' + + def up + finalize_background_migration(MIGRATION) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #{described_class::MSG} + end + end + RUBY + end + end +end -- GitLab