Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
fb73ca3398
commit
41c9fff024
|
|
@ -11,7 +11,10 @@
|
|||
stage: review
|
||||
dependencies: []
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
# We're cloning the repo instead of downloading the script for now
|
||||
# because some repos are private and CI_JOB_TOKEN cannot access files.
|
||||
# See https://gitlab.com/gitlab-org/gitlab/issues/191273
|
||||
GIT_DEPTH: 1
|
||||
environment:
|
||||
name: review-docs/$DOCS_GITLAB_REPO_SUFFIX-$CI_MERGE_REQUEST_IID
|
||||
# DOCS_REVIEW_APPS_DOMAIN and DOCS_GITLAB_REPO_SUFFIX are CI variables
|
||||
|
|
@ -19,11 +22,7 @@
|
|||
url: http://docs-preview-$DOCS_GITLAB_REPO_SUFFIX-$CI_MERGE_REQUEST_IID.$DOCS_REVIEW_APPS_DOMAIN/$DOCS_GITLAB_REPO_SUFFIX
|
||||
on_stop: review-docs-cleanup
|
||||
before_script:
|
||||
# We don't clone the repo by using GIT_STRATEGY: none and only download the
|
||||
# single script we need here so it's much faster than cloning.
|
||||
- apk add --update openssl
|
||||
- wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/trigger-build-docs
|
||||
- chmod 755 trigger-build-docs
|
||||
- gem install httparty --no-document --version 0.17.3
|
||||
- gem install gitlab --no-document --version 4.13.0
|
||||
|
||||
|
|
@ -32,7 +31,7 @@
|
|||
review-docs-deploy:
|
||||
extends: .review-docs
|
||||
script:
|
||||
- ./trigger-build-docs deploy
|
||||
- ./scripts/trigger-build-docs deploy
|
||||
when: manual
|
||||
|
||||
# Cleanup remote environment of gitlab-docs
|
||||
|
|
@ -42,7 +41,7 @@ review-docs-cleanup:
|
|||
name: review-docs/$DOCS_GITLAB_REPO_SUFFIX-$CI_MERGE_REQUEST_IID
|
||||
action: stop
|
||||
script:
|
||||
- ./trigger-build-docs cleanup
|
||||
- ./scripts/trigger-build-docs cleanup
|
||||
when: manual
|
||||
|
||||
docs lint:
|
||||
|
|
|
|||
|
|
@ -171,15 +171,14 @@ schedule:review-deploy:
|
|||
environment:
|
||||
action: stop
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
# We're cloning the repo instead of downloading the script for now
|
||||
# because some repos are private and CI_JOB_TOKEN cannot access files.
|
||||
# See https://gitlab.com/gitlab-org/gitlab/issues/191273
|
||||
GIT_DEPTH: 1
|
||||
before_script:
|
||||
# We don't clone the repo by using GIT_STRATEGY: none and only download the
|
||||
# single script we need here so it's much faster than cloning.
|
||||
- apk add --update openssl
|
||||
- wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/review_apps/review-apps.sh
|
||||
- wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/utils.sh
|
||||
- source utils.sh
|
||||
- source review-apps.sh
|
||||
- source ./scripts/utils.sh
|
||||
- source ./scripts/review_apps/review-apps.sh
|
||||
|
||||
review-stop-failed-deployment:
|
||||
extends: .base-review-stop
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix RefreshMergeRequestsService raises an exception and unnecessary sidekiq retry
|
||||
merge_request: 22262
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
begin
|
||||
current_runtime = Gitlab::Runtime.identify
|
||||
Gitlab::AppLogger.info("Process #{Process.pid} (#{$0}) identified as: #{current_runtime}")
|
||||
rescue => e
|
||||
Gitlab::Runtime.identify
|
||||
rescue Gitlab::Runtime::IdentificationError => e
|
||||
message = <<-NOTICE
|
||||
\n!! RUNTIME IDENTIFICATION FAILED: #{e}
|
||||
Runtime based configuration settings may not work properly.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddCommonToPrometheusMetrics < ActiveRecord::Migration[4.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:prometheus_metrics, :common, :boolean, default: false)
|
||||
add_column_with_default(:prometheus_metrics, :common, :boolean, default: false) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddLegacyAbacToClusterProvidersGcp < ActiveRecord::Migration[4.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:cluster_providers_gcp, :legacy_abac, :boolean, default: true)
|
||||
add_column_with_default(:cluster_providers_gcp, :legacy_abac, :boolean, default: true) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class AddClusterTypeToClusters < ActiveRecord::Migration[4.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:clusters, :cluster_type, :smallint, default: PROJECT_CLUSTER_TYPE)
|
||||
add_column_with_default(:clusters, :cluster_type, :smallint, default: PROJECT_CLUSTER_TYPE) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddEmailHeaderAndFooterEnabledFlagToAppearancesTable < ActiveRecord::Migra
|
|||
DOWNTIME = false
|
||||
|
||||
def up
|
||||
add_column_with_default(:appearances, :email_header_and_footer_enabled, :boolean, default: false)
|
||||
add_column_with_default(:appearances, :email_header_and_footer_enabled, :boolean, default: false) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddAutoSslEnabledToPagesDomain < ActiveRecord::Migration[5.0]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default :pages_domains, :auto_ssl_enabled, :boolean, default: false
|
||||
add_column_with_default :pages_domains, :auto_ssl_enabled, :boolean, default: false # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddManagedToCluster < ActiveRecord::Migration[5.0]
|
|||
DOWNTIME = false
|
||||
|
||||
def up
|
||||
add_column_with_default(:clusters, :managed, :boolean, default: true)
|
||||
add_column_with_default(:clusters, :managed, :boolean, default: true) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddVariableTypeToCiVariables < ActiveRecord::Migration[5.0]
|
|||
ENV_VAR_VARIABLE_TYPE = 1
|
||||
|
||||
def up
|
||||
add_column_with_default(:ci_variables, :variable_type, :smallint, default: ENV_VAR_VARIABLE_TYPE)
|
||||
add_column_with_default(:ci_variables, :variable_type, :smallint, default: ENV_VAR_VARIABLE_TYPE) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddVariableTypeToCiGroupVariables < ActiveRecord::Migration[5.0]
|
|||
ENV_VAR_VARIABLE_TYPE = 1
|
||||
|
||||
def up
|
||||
add_column_with_default(:ci_group_variables, :variable_type, :smallint, default: ENV_VAR_VARIABLE_TYPE)
|
||||
add_column_with_default(:ci_group_variables, :variable_type, :smallint, default: ENV_VAR_VARIABLE_TYPE) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddVariableTypeToCiPipelineVariables < ActiveRecord::Migration[5.0]
|
|||
ENV_VAR_VARIABLE_TYPE = 1
|
||||
|
||||
def up
|
||||
add_column_with_default(:ci_pipeline_variables, :variable_type, :smallint, default: ENV_VAR_VARIABLE_TYPE)
|
||||
add_column_with_default(:ci_pipeline_variables, :variable_type, :smallint, default: ENV_VAR_VARIABLE_TYPE) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddVariableTypeToCiPipelineScheduleVariables < ActiveRecord::Migration[5.0
|
|||
ENV_VAR_VARIABLE_TYPE = 1
|
||||
|
||||
def up
|
||||
add_column_with_default(:ci_pipeline_schedule_variables, :variable_type, :smallint, default: ENV_VAR_VARIABLE_TYPE)
|
||||
add_column_with_default(:ci_pipeline_schedule_variables, :variable_type, :smallint, default: ENV_VAR_VARIABLE_TYPE) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ class AddRuleTypeToApprovalMergeRequestApprovalRules < ActiveRecord::Migration[5
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:approval_merge_request_rules, :rule_type, :integer, limit: 2, default: 1)
|
||||
add_column_with_default(:approval_merge_request_rules, :rule_type, :integer, limit: 2, default: 1) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ class AddSourceToPagesDomains < ActiveRecord::Migration[5.1]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:pages_domains, :certificate_source, :smallint, default: 0)
|
||||
add_column_with_default(:pages_domains, :certificate_source, :smallint, default: 0) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddStrategiesToOperationsFeatureFlagScopes < ActiveRecord::Migration[5.1]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default :operations_feature_flag_scopes, :strategies, :jsonb, default: [{ name: "default", parameters: {} }]
|
||||
add_column_with_default :operations_feature_flag_scopes, :strategies, :jsonb, default: [{ name: "default", parameters: {} }] # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class AddNamespacePerEnvironmentFlagToClusters < ActiveRecord::Migration[5.1]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default :clusters, :namespace_per_environment, :boolean, default: false
|
||||
add_column_with_default :clusters, :namespace_per_environment, :boolean, default: false # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ class AddObjectStorageFlagToGeoNode < ActiveRecord::Migration[5.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default :geo_nodes, :sync_object_storage, :boolean, default: false
|
||||
add_column_with_default :geo_nodes, :sync_object_storage, :boolean, default: false # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class AddMergeRequestsRequireCodeOwnerApprovalToProtectedBranches < ActiveRecord
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(
|
||||
add_column_with_default( # rubocop:disable Migration/AddColumnWithDefault
|
||||
:protected_branches,
|
||||
:code_owner_approval_required,
|
||||
:boolean,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddActiveJobsLimitToPlans < ActiveRecord::Migration[5.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default :plans, :active_jobs_limit, :integer, default: 0
|
||||
add_column_with_default :plans, :active_jobs_limit, :integer, default: 0 # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ class AddMaxIssueCountToList < ActiveRecord::Migration[4.2]
|
|||
DOWNTIME = false
|
||||
|
||||
def up
|
||||
add_column_with_default :lists, :max_issue_count, :integer, default: 0
|
||||
add_column_with_default :lists, :max_issue_count, :integer, default: 0 # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddCloudRunToClustersProvidersGcp < ActiveRecord::Migration[5.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:cluster_providers_gcp, :cloud_run, :boolean, default: false)
|
||||
add_column_with_default(:cluster_providers_gcp, :cloud_run, :boolean, default: false) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddExpireNotificationDeliveredToPersonalAccessTokens < ActiveRecord::Migra
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default :personal_access_tokens, :expire_notification_delivered, :boolean, default: false
|
||||
add_column_with_default :personal_access_tokens, :expire_notification_delivered, :boolean, default: false # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddCommentActionsToServices < ActiveRecord::Migration[5.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:services, :comment_on_event_enabled, :boolean, default: true)
|
||||
add_column_with_default(:services, :comment_on_event_enabled, :boolean, default: true) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddMaxIssueWeightToList < ActiveRecord::Migration[5.2]
|
|||
DOWNTIME = false
|
||||
|
||||
def up
|
||||
add_column_with_default :lists, :max_issue_weight, :integer, default: 0
|
||||
add_column_with_default :lists, :max_issue_weight, :integer, default: 0 # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class AddSecretToSnippet < ActiveRecord::Migration[5.2]
|
|||
|
||||
def up
|
||||
unless column_exists?(:snippets, :secret)
|
||||
add_column_with_default :snippets, :secret, :boolean, default: false
|
||||
add_column_with_default :snippets, :secret, :boolean, default: false # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
add_concurrent_index :snippets, [:visibility_level, :secret]
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class AddStateToMergeTrains < ActiveRecord::Migration[5.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default :merge_trains, :status, :integer, limit: 2, default: MERGE_TRAIN_STATUS_CREATED
|
||||
add_column_with_default :merge_trains, :status, :integer, limit: 2, default: MERGE_TRAIN_STATUS_CREATED # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ class AddIssueLinksType < ActiveRecord::Migration[5.1]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default :issue_links, :link_type, :integer, default: 0, limit: 2
|
||||
add_column_with_default :issue_links, :link_type, :integer, default: 0, limit: 2 # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -9,8 +9,10 @@ class AddWildcardAndDomainTypeToPagesDomains < ActiveRecord::Migration[5.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
# rubocop:disable Migration/AddColumnWithDefault
|
||||
add_column_with_default :pages_domains, :wildcard, :boolean, default: false
|
||||
add_column_with_default :pages_domains, :domain_type, :integer, limit: 2, default: PROJECT_TYPE
|
||||
# rubocop:enable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ class AddBroadcastTypeToBroadcastMessage < ActiveRecord::Migration[5.2]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_column_with_default(:broadcast_messages, :broadcast_type, :smallint, default: BROADCAST_MESSAGE_BANNER_TYPE)
|
||||
add_column_with_default(:broadcast_messages, :broadcast_type, :smallint, default: BROADCAST_MESSAGE_BANNER_TYPE) # rubocop:disable Migration/AddColumnWithDefault
|
||||
end
|
||||
|
||||
def down
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@ module Gitlab
|
|||
# Provides routines to identify the current runtime as which the application
|
||||
# executes, such as whether it is an application server and which one.
|
||||
module Runtime
|
||||
AmbiguousProcessError = Class.new(StandardError)
|
||||
UnknownProcessError = Class.new(StandardError)
|
||||
IdentificationError = Class.new(RuntimeError)
|
||||
AmbiguousProcessError = Class.new(IdentificationError)
|
||||
UnknownProcessError = Class.new(IdentificationError)
|
||||
|
||||
class << self
|
||||
def identify
|
||||
|
|
@ -14,6 +15,8 @@ module Gitlab
|
|||
matches << :unicorn if unicorn?
|
||||
matches << :console if console?
|
||||
matches << :sidekiq if sidekiq?
|
||||
matches << :rake if rake?
|
||||
matches << :rspec if rspec?
|
||||
|
||||
if matches.one?
|
||||
matches.first
|
||||
|
|
@ -41,6 +44,14 @@ module Gitlab
|
|||
!!(defined?(::Sidekiq) && Sidekiq.server?)
|
||||
end
|
||||
|
||||
def rake?
|
||||
!!(defined?(::Rake) && Rake.application.top_level_tasks.any?)
|
||||
end
|
||||
|
||||
def rspec?
|
||||
Rails.env.test? && process_name == 'rspec'
|
||||
end
|
||||
|
||||
def console?
|
||||
!!defined?(::Rails::Console)
|
||||
end
|
||||
|
|
@ -52,6 +63,10 @@ module Gitlab
|
|||
def multi_threaded?
|
||||
puma? || sidekiq?
|
||||
end
|
||||
|
||||
def process_name
|
||||
File.basename($0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -12,52 +12,33 @@ module RuboCop
|
|||
|
||||
WHITELISTED_TABLES = [:application_settings].freeze
|
||||
|
||||
MSG = '`add_column_with_default` with `allow_null: false` may cause prolonged lock situations and downtime, ' \
|
||||
MSG = '`add_column_with_default` without `allow_null: true` may cause prolonged lock situations and downtime, ' \
|
||||
'see https://gitlab.com/gitlab-org/gitlab/issues/38060'.freeze
|
||||
|
||||
def_node_matcher :add_column_with_default?, <<~PATTERN
|
||||
(send _ :add_column_with_default $_ ... (hash $...))
|
||||
PATTERN
|
||||
|
||||
def on_send(node)
|
||||
return unless in_migration?(node)
|
||||
|
||||
name = node.children[1]
|
||||
add_column_with_default?(node) do |table, options|
|
||||
break if table_whitelisted?(table) || nulls_allowed?(options)
|
||||
|
||||
return unless name == :add_column_with_default
|
||||
|
||||
# Ignore whitelisted tables.
|
||||
return if table_whitelisted?(node.children[2])
|
||||
|
||||
opts = node.children.last
|
||||
|
||||
return unless opts && opts.type == :hash
|
||||
|
||||
opts.each_node(:pair) do |pair|
|
||||
if disallows_null_values?(pair)
|
||||
add_offense(node, location: :selector)
|
||||
end
|
||||
add_offense(node, location: :selector)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def nulls_allowed?(options)
|
||||
options.find { |opt| opt.key.value == :allow_null && opt.value.true_type? }
|
||||
end
|
||||
|
||||
def table_whitelisted?(symbol)
|
||||
symbol && symbol.type == :sym &&
|
||||
WHITELISTED_TABLES.include?(symbol.children[0])
|
||||
end
|
||||
|
||||
def disallows_null_values?(pair)
|
||||
options = [hash_key_type(pair), hash_key_name(pair), hash_value(pair)]
|
||||
|
||||
options == [:sym, :allow_null, :false] # rubocop:disable Lint/BooleanSymbol
|
||||
end
|
||||
|
||||
def hash_key_type(pair)
|
||||
pair.children[0].type
|
||||
end
|
||||
|
||||
def hash_key_name(pair)
|
||||
pair.children[0].children[0]
|
||||
end
|
||||
|
||||
def hash_value(pair)
|
||||
pair.children[1].type
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::Runtime do
|
||||
before do
|
||||
allow(described_class).to receive(:process_name).and_return('ruby')
|
||||
end
|
||||
|
||||
context "when unknown" do
|
||||
it "raises an exception when trying to identify" do
|
||||
expect { subject.identify }.to raise_error(subject::UnknownProcessError)
|
||||
|
|
@ -36,6 +40,8 @@ describe Gitlab::Runtime do
|
|||
expect(subject.unicorn?).to be(false)
|
||||
expect(subject.sidekiq?).to be(false)
|
||||
expect(subject.console?).to be(false)
|
||||
expect(subject.rake?).to be(false)
|
||||
expect(subject.rspec?).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -57,6 +63,8 @@ describe Gitlab::Runtime do
|
|||
expect(subject.puma?).to be(false)
|
||||
expect(subject.sidekiq?).to be(false)
|
||||
expect(subject.console?).to be(false)
|
||||
expect(subject.rake?).to be(false)
|
||||
expect(subject.rspec?).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -77,6 +85,8 @@ describe Gitlab::Runtime do
|
|||
expect(subject.unicorn?).to be(false)
|
||||
expect(subject.puma?).to be(false)
|
||||
expect(subject.console?).to be(false)
|
||||
expect(subject.rake?).to be(false)
|
||||
expect(subject.rspec?).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -96,6 +106,26 @@ describe Gitlab::Runtime do
|
|||
expect(subject.unicorn?).to be(false)
|
||||
expect(subject.sidekiq?).to be(false)
|
||||
expect(subject.puma?).to be(false)
|
||||
expect(subject.rake?).to be(false)
|
||||
expect(subject.rspec?).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
context "rspec" do
|
||||
before do
|
||||
allow(described_class).to receive(:process_name).and_return('rspec')
|
||||
end
|
||||
|
||||
it "identifies itself" do
|
||||
expect(subject.identify).to eq(:rspec)
|
||||
expect(subject.rspec?).to be(true)
|
||||
end
|
||||
|
||||
it "does not identify as others" do
|
||||
expect(subject.unicorn?).to be(false)
|
||||
expect(subject.sidekiq?).to be(false)
|
||||
expect(subject.rake?).to be(false)
|
||||
expect(subject.puma?).to be(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ describe RuboCop::Cop::Migration::AddColumnWithDefault do
|
|||
allow(cop).to receive(:in_migration?).and_return(true)
|
||||
end
|
||||
|
||||
let(:offense) { '`add_column_with_default` with `allow_null: false` may cause prolonged lock situations and downtime, see https://gitlab.com/gitlab-org/gitlab/issues/38060' }
|
||||
let(:offense) { '`add_column_with_default` without `allow_null: true` may cause prolonged lock situations and downtime, see https://gitlab.com/gitlab-org/gitlab/issues/38060' }
|
||||
|
||||
it 'registers an offense when specifying allow_null: false' do
|
||||
expect_offense(<<~RUBY)
|
||||
|
|
@ -46,10 +46,11 @@ describe RuboCop::Cop::Migration::AddColumnWithDefault do
|
|||
RUBY
|
||||
end
|
||||
|
||||
it 'registers no offense when allow_null is not specified' do
|
||||
expect_no_offenses(<<~RUBY)
|
||||
it 'registers an offense when allow_null is not specified' do
|
||||
expect_offense(<<~RUBY)
|
||||
def up
|
||||
add_column_with_default(:ci_build_needs, :artifacts, :boolean, default: true)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^ #{offense}
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue