Skip to content
Snippets Groups Projects
Commit 11c8a6f9 authored by Steve Abrams's avatar Steve Abrams
Browse files

Adjust Danger logic for stable branches

Danger only considers the current stable version
when checking if it is within the maintenance policy.
parent 35cbb0be
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -59,6 +59,8 @@
end
 
context 'when not applicable' do
let(:current_stable_branch) { '15-1-stable-ee' }
where(:stable_branch?, :security_mr?) do
true | true
false | true
Loading
Loading
@@ -67,7 +69,7 @@
 
with_them do
before do
allow(fake_helper).to receive(:mr_target_branch).and_return(stable_branch? ? '15-1-stable-ee' : 'main')
allow(fake_helper).to receive(:mr_target_branch).and_return(stable_branch? ? current_stable_branch : 'main')
allow(fake_helper).to receive(:security_mr?).and_return(security_mr?)
end
 
Loading
Loading
@@ -239,7 +241,7 @@
end
 
context 'when not an applicable version' do
let(:target_branch) { '14-9-stable-ee' }
let(:target_branch) { '15-0-stable-ee' }
 
it 'warns about the package-and-test pipeline and the version' do
expect(stable_branch).to receive(:warn).with(described_class::WARN_PACKAGE_AND_TEST_MESSAGE)
Loading
Loading
@@ -297,18 +299,6 @@
 
it_behaves_like 'without a failure'
end
context 'when too many version API requests are made' do
let(:parsed_response) { [{ 'version' => '15.0.0' }] }
it 'adds a warning' do
expect(HTTParty).to receive(:get).and_return(version_response).at_least(10).times
expect(stable_branch).to receive(:warn).with(described_class::WARN_PACKAGE_AND_TEST_MESSAGE)
expect(stable_branch).to receive(:warn).with(described_class::FAILED_VERSION_REQUEST_MESSAGE)
subject
end
end
end
end
 
Loading
Loading
Loading
Loading
@@ -146,26 +146,20 @@ def has_only_documentation_changes?
end
 
def targeting_patchable_version?
raise VersionApiError if last_three_minor_versions.empty?
raise VersionApiError if current_stable_version.empty?
 
last_three_minor_versions.include?(targeted_version)
current_stable_version == targeted_version
rescue VersionApiError
warn FAILED_VERSION_REQUEST_MESSAGE
true
end
 
def last_three_minor_versions
return [] unless versions
def current_stable_version
return unless versions
 
current_version = versions.first.match(VERSION_REGEX)
version_1 = previous_minor_version(current_version)
version_2 = previous_minor_version(version_1)
 
[
version_to_minor_string(current_version),
version_to_minor_string(version_1),
version_to_minor_string(version_2)
]
version_to_minor_string(current_version)
end
 
def targeted_version
Loading
Loading
@@ -173,7 +167,7 @@ def targeted_version
end
 
def versions(page = 1)
version_api_endpoint = "https://version.gitlab.com/api/v1/versions?per_page=50&page=#{page}"
version_api_endpoint = "https://version.gitlab.com/api/v1/versions?per_page=20&page=#{page}"
response = HTTParty.get(version_api_endpoint) # rubocop:disable Gitlab/HTTParty
 
raise VersionApiError unless response.success?
Loading
Loading
@@ -183,33 +177,6 @@ def versions(page = 1)
version_list.sort_by { |v| Gem::Version.new(v) }.reverse
end
 
def previous_minor_version(version)
previous_minor = version[:minor].to_i - 1
return "#{version[:major]}.#{previous_minor}".match(VERSION_REGEX) if previous_minor >= 0
fetch_last_minor_version_for_major(version[:major].to_i - 1)
end
def fetch_last_minor_version_for_major(major)
page = 1
last_minor_version = nil
while last_minor_version.nil?
last_minor_version = versions(page).find do |version|
version.split('.').first.to_i == major
end
break if page > 10
page += 1
end
raise VersionApiError if last_minor_version.nil?
last_minor_version.match(VERSION_REGEX)
end
def version_to_minor_string(version)
"#{version[:major]}.#{version[:minor]}"
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment