Skip to content

Commit 8afbd08

Browse files
authored
Add lowest_prerelease_suffix method (#10832)
* Add lowest_prerelease_suffix method * Apply change to python
1 parent eb77cb3 commit 8afbd08

File tree

6 files changed

+45
-6
lines changed

6 files changed

+45
-6
lines changed

common/lib/dependabot/version.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def ignored_patch_versions
5252
def ignored_minor_versions
5353
parts = to_semver.split(".")
5454
version_parts = parts.fill("0", parts.length...2)
55-
lower_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + ["a"]
55+
lower_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + [lowest_prerelease_suffix]
5656
upper_parts = version_parts.first(0) + [version_parts[0].to_i + 1]
5757
lower_bound = ">= #{lower_parts.join('.')}"
5858
upper_bound = "< #{upper_parts.join('.')}"
@@ -63,10 +63,15 @@ def ignored_minor_versions
6363
sig { overridable.returns(T::Array[String]) }
6464
def ignored_major_versions
6565
version_parts = to_semver.split(".")
66-
lower_parts = [version_parts[0].to_i + 1] + ["a"]
66+
lower_parts = [version_parts[0].to_i + 1] + [lowest_prerelease_suffix]
6767
lower_bound = ">= #{lower_parts.join('.')}"
6868

6969
[lower_bound]
7070
end
71+
72+
sig { returns(String) }
73+
def lowest_prerelease_suffix
74+
"a"
75+
end
7176
end
7277
end

common/spec/dependabot/version_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@
77
RSpec.describe Dependabot::Version do
88
subject(:version) { described_class.new(version_string) }
99

10+
describe "#lowest_prerelease_suffix" do
11+
subject(:ignored_versions) { version.lowest_prerelease_suffix }
12+
13+
let(:version_string) { "1.2.3-alpha.1" }
14+
15+
it { is_expected.to eq "a" }
16+
end
17+
1018
describe "#ignored_major_versions" do
1119
subject(:ignored_versions) { version.ignored_major_versions }
1220

maven/lib/dependabot/maven/version.rb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ def prerelease?
6565
end
6666
end
6767

68+
sig { returns(String) }
69+
def lowest_prerelease_suffix
70+
"a0"
71+
end
72+
6873
sig { params(other: VersionParameter).returns(Integer) }
6974
def <=>(other)
7075
other = Dependabot::Maven::Version.new(other.to_s) unless other.is_a? Dependabot::Maven::Version
@@ -78,7 +83,7 @@ def ignored_patch_versions
7883

7984
version_parts = parts.fill("0", parts.length...2)
8085
# the a0 is so we can get the next earliest prerelease patch version
81-
upper_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + ["a0"]
86+
upper_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + [lowest_prerelease_suffix]
8287
lower_bound = "> #{to_semver}"
8388
upper_bound = "< #{upper_parts.join('.')}"
8489

@@ -91,8 +96,8 @@ def ignored_minor_versions
9196
return [] if parts.empty? # for non-semver versions
9297

9398
version_parts = parts.fill("0", parts.length...2)
94-
lower_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + ["a0"]
95-
upper_parts = version_parts.first(0) + [version_parts[0].to_i + 1] + ["a0"]
99+
lower_parts = version_parts.first(1) + [version_parts[1].to_i + 1] + [lowest_prerelease_suffix]
100+
upper_parts = version_parts.first(0) + [version_parts[0].to_i + 1] + [lowest_prerelease_suffix]
96101
lower_bound = ">= #{lower_parts.join('.')}"
97102
upper_bound = "< #{upper_parts.join('.')}"
98103

@@ -104,7 +109,7 @@ def ignored_major_versions
104109
version_parts = token_bucket.tokens # e.g [1,2,3] if version is 1.2.3-alpha3
105110
return [] if version_parts.empty? # for non-semver versions
106111

107-
lower_parts = [version_parts[0].to_i + 1] + ["a0"] # earliest next major version prerelease
112+
lower_parts = [version_parts[0].to_i + 1] + [lowest_prerelease_suffix] # earliest next major version prerelease
108113
lower_bound = ">= #{lower_parts.join('.')}"
109114

110115
[lower_bound]

maven/spec/dependabot/maven/version_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,14 @@
559559
it { is_expected.to eq(["> #{version_string}, < 1.3.a0"]) }
560560
end
561561

562+
describe "#lowest_prerelease_suffix" do
563+
subject(:ignored_versions) { version.lowest_prerelease_suffix }
564+
565+
let(:version_string) { "1.2.3-alpha.1" }
566+
567+
it { is_expected.to eq "a0" }
568+
end
569+
562570
describe "compatibility with Gem::Requirement" do
563571
subject { requirement.satisfied_by?(version) }
564572

python/lib/dependabot/python/version.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,11 @@ def dev_cmp_key
254254
T.must(dev)
255255
end
256256

257+
sig { returns(String) }
258+
def lowest_prerelease_suffix
259+
"dev0"
260+
end
261+
257262
private
258263

259264
sig { params(other: Dependabot::Python::Version).returns(Integer) }

python/spec/dependabot/python/version_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,14 @@
342342
end
343343
end
344344

345+
describe "#lowest_prerelease_suffix" do
346+
subject { version.lowest_prerelease_suffix }
347+
348+
let(:version_string) { "1.2.3" }
349+
350+
it { is_expected.to eq "dev0" }
351+
end
352+
345353
describe "compatibility with Gem::Requirement" do
346354
subject { requirement.satisfied_by?(version) }
347355

0 commit comments

Comments
 (0)