Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-11-03 06:10:20 +00:00
parent 6f0447dba0
commit 14c866bb2f
12 changed files with 55 additions and 20 deletions

View File

@ -4,7 +4,7 @@ source 'https://rubygems.org'
gem 'rails', '~> 6.1.4.1'
gem 'bootsnap', '~> 1.4.6'
gem 'bootsnap', '~> 1.9.1', require: false
# Responders respond_to and respond_with
gem 'responders', '~> 3.0'

View File

@ -148,7 +148,7 @@ GEM
rack (>= 0.9.0)
bindata (2.4.10)
binding_ninja (0.2.3)
bootsnap (1.4.6)
bootsnap (1.9.1)
msgpack (~> 1.0)
bootstrap_form (4.2.0)
actionpack (>= 5.0)
@ -1403,7 +1403,7 @@ DEPENDENCIES
benchmark-ips (~> 2.3.0)
benchmark-memory (~> 0.1)
better_errors (~> 2.9.0)
bootsnap (~> 1.4.6)
bootsnap (~> 1.9.1)
bootstrap_form (~> 4.2.0)
browser (~> 4.2)
bullet (~> 6.1.3)

View File

@ -13,5 +13,13 @@ module MergeRequestReviewerState
validates :state,
presence: true,
inclusion: { in: self.states.keys }
after_initialize :set_state, unless: :persisted?
def set_state
if Feature.enabled?(:mr_attention_requests, self.merge_request&.project, default_enabled: :yaml)
self.state = :attention_required
end
end
end
end

View File

@ -1,4 +1,6 @@
# frozen_string_literal: true
require_relative 'bundler_setup'
require 'bootsnap/setup' if ENV['RAILS_ENV'] != 'production' || %w(1 yes true).include?(ENV['ENABLE_BOOTSNAP'])
enable_bootsnap_default_value = ENV['RAILS_ENV'] != 'production' ? '1' : '0'
require 'bootsnap/setup' if %w(1 yes true).include?(ENV.fetch('ENABLE_BOOTSNAP', enable_bootsnap_default_value))

View File

@ -20,7 +20,7 @@ You can use the following environment variables to override certain values:
| Variable | Type | Description |
|--------------------------------------------|---------|---------------------------------------------------------------------------------------------------------|
| `DATABASE_URL` | string | The database URL; is of the form: `postgresql://localhost/blog_development`. |
| `ENABLE_BOOTSNAP` | string | Enables Bootsnap for speeding up initial Rails boot (`1` to enable). |
| `ENABLE_BOOTSNAP` | string | Toggles [Bootsnap](https://github.com/Shopify/bootsnap) for speeding up initial Rails boot. Enabled by default for non-production environments. Set to `0` to disable. |
| `EXTERNAL_URL` | string | Specify the external URL at the [time of installation](https://docs.gitlab.com/omnibus/settings/configuration.html#specifying-the-external-url-at-the-time-of-installation). |
| `EXTERNAL_VALIDATION_SERVICE_TIMEOUT` | integer | Timeout, in seconds, for an [external CI/CD pipeline validation service](external_pipeline_validation.md). Default is `5`. |
| `EXTERNAL_VALIDATION_SERVICE_URL` | string | URL to an [external CI/CD pipeline validation service](external_pipeline_validation.md). |

View File

@ -16,9 +16,15 @@ module QA
end
before do
praefect_manager.start_all_nodes
praefect_manager.wait_for_replication(project.id)
end
after do
# Leave the cluster in a suitable state for subsequent tests
praefect_manager.start_all_nodes
end
it 'reads from each node', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/1264' do
pre_read_data = praefect_manager.query_read_distribution
@ -42,9 +48,7 @@ module QA
after do
# Leave the cluster in a suitable state for subsequent tests
praefect_manager.start_secondary_node
praefect_manager.wait_for_health_check_all_nodes
praefect_manager.wait_for_reliable_connection
praefect_manager.start_all_nodes
end
it 'does not read from the unhealthy node', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/1263' do

View File

@ -78,7 +78,7 @@ RSpec.describe GitlabSchema.types['UserMergeRequestInteraction'] do
merge_request.reviewers << user
end
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['UNREVIEWED'].value) }
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['ATTENTION_REQUIRED'].value) }
it 'implies not reviewed' do
expect(resolve(:reviewed)).to be false
@ -87,7 +87,8 @@ RSpec.describe GitlabSchema.types['UserMergeRequestInteraction'] do
context 'when the user has provided a review' do
before do
merge_request.merge_request_reviewers.create!(reviewer: user, state: MergeRequestReviewer.states['reviewed'])
reviewer = merge_request.merge_request_reviewers.create!(reviewer: user)
reviewer.update!(state: MergeRequestReviewer.states['reviewed'])
end
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['REVIEWED'].value) }

View File

@ -39,4 +39,6 @@ RSpec.describe MergeRequestAssignee do
end
it_behaves_like 'having unique enum values'
it_behaves_like 'having reviewer state'
end

View File

@ -9,6 +9,8 @@ RSpec.describe MergeRequestReviewer do
it_behaves_like 'having unique enum values'
it_behaves_like 'having reviewer state'
describe 'associations' do
it { is_expected.to belong_to(:merge_request).class_name('MergeRequest') }
it { is_expected.to belong_to(:reviewer).class_name('User').inverse_of(:merge_request_reviewers) }

View File

@ -61,7 +61,7 @@ RSpec.describe ::Users::MergeRequestInteraction do
merge_request.reviewers << user
end
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['UNREVIEWED'].value) }
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['ATTENTION_REQUIRED'].value) }
it 'implies not reviewed' do
expect(interaction).not_to be_reviewed
@ -70,7 +70,8 @@ RSpec.describe ::Users::MergeRequestInteraction do
context 'when the user has provided a review' do
before do
merge_request.merge_request_reviewers.create!(reviewer: user, state: MergeRequestReviewer.states['reviewed'])
reviewer = merge_request.merge_request_reviewers.create!(reviewer: user)
reviewer.update!(state: MergeRequestReviewer.states['reviewed'])
end
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['REVIEWED'].value) }

View File

@ -347,7 +347,7 @@ RSpec.describe 'getting merge request information nested in a project' do
expect(interaction_data).to contain_exactly a_hash_including(
'canMerge' => false,
'canUpdate' => can_update,
'reviewState' => unreviewed,
'reviewState' => attention_required,
'reviewed' => false,
'approved' => false
)
@ -380,8 +380,8 @@ RSpec.describe 'getting merge request information nested in a project' do
describe 'scalability' do
let_it_be(:other_users) { create_list(:user, 3) }
let(:unreviewed) do
{ 'reviewState' => 'UNREVIEWED' }
let(:attention_required) do
{ 'reviewState' => 'ATTENTION_REQUIRED' }
end
let(:reviewed) do
@ -413,9 +413,9 @@ RSpec.describe 'getting merge request information nested in a project' do
expect { post_graphql(query) }.not_to exceed_query_limit(baseline)
expect(interaction_data).to contain_exactly(
include(unreviewed),
include(unreviewed),
include(unreviewed),
include(attention_required),
include(attention_required),
include(attention_required),
include(reviewed)
)
end
@ -444,7 +444,7 @@ RSpec.describe 'getting merge request information nested in a project' do
it_behaves_like 'when requesting information about MR interactions' do
let(:field) { :reviewers }
let(:unreviewed) { 'UNREVIEWED' }
let(:attention_required) { 'ATTENTION_REQUIRED' }
let(:can_update) { false }
def assign_user(user)
@ -454,7 +454,7 @@ RSpec.describe 'getting merge request information nested in a project' do
it_behaves_like 'when requesting information about MR interactions' do
let(:field) { :assignees }
let(:unreviewed) { nil }
let(:attention_required) { nil }
let(:can_update) { true } # assignees can update MRs
def assign_user(user)

View File

@ -0,0 +1,15 @@
# frozen_string_literal: true
RSpec.shared_examples 'having reviewer state' do
describe 'mr_attention_requests feature flag is disabled' do
before do
stub_feature_flags(mr_attention_requests: false)
end
it { is_expected.to have_attributes(state: 'unreviewed') }
end
describe 'mr_attention_requests feature flag is enabled' do
it { is_expected.to have_attributes(state: 'attention_required') }
end
end