Skip to content

Commit 9d39e03

Browse files
committed
Use BadRequirementError and reduce usage of nilable
1 parent a5cc6a8 commit 9d39e03

4 files changed

Lines changed: 44 additions & 25 deletions

File tree

maven/lib/dependabot/maven/new_version.rb

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,19 @@ class NewVersion
2424
sig { returns(Dependabot::Maven::TokenBucket) }
2525
attr_accessor :token_bucket
2626

27-
sig { params(version: T.nilable(String)).returns(T::Boolean) }
27+
sig { params(version: String).returns(T::Boolean) }
2828
def self.correct?(version)
29-
return false if version.nil? || version.empty?
29+
return false if version.empty?
3030

3131
Dependabot::Maven::VersionParser.parse(version.to_s).to_a.any?
32+
rescue Dependabot::BadRequirementError
33+
Dependabot.logger.info("Malformed version string - #{version}")
34+
false
3235
end
3336

34-
sig { params(version: T.nilable(String)).void }
37+
sig { params(version: String).void }
3538
def initialize(version)
36-
@version_string = T.let(version, T.nilable(String))
39+
@version_string = T.let(version, String)
3740
@token_bucket = T.let(Dependabot::Maven::VersionParser.parse(version), Dependabot::Maven::TokenBucket)
3841
end
3942

@@ -44,7 +47,7 @@ def inspect
4447

4548
sig { returns(String) }
4649
def to_s
47-
T.must(version_string)
50+
version_string
4851
end
4952

5053
sig { returns(T::Boolean) }
@@ -61,7 +64,7 @@ def <=>(other)
6164

6265
private
6366

64-
sig { returns(T.nilable(String)) }
67+
sig { returns(String) }
6568
attr_reader :version_string
6669
end
6770
end

maven/lib/dependabot/maven/version_parser.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ class VersionParser
2222

2323
sig { params(version: T.nilable(String)).returns(TokenBucket) }
2424
def self.parse(version)
25-
raise ArgumentError, "Malformed version string - string is nil" if version.nil?
26-
raise ArgumentError, "Malformed version string - string is empty" if version.empty?
25+
raise BadRequirementError, "Malformed version string - string is nil" if version.nil?
26+
raise BadRequirementError, "Malformed version string - string is empty" if version.empty?
2727

2828
new(version).parse
2929
end
@@ -40,7 +40,8 @@ def initialize(version)
4040
def parse
4141
parse_version(false)
4242

43-
raise ArgumentError, "Malformed version string #{version}" if parse_result.to_a.empty?
43+
# no tokens: version is just one of the tokens we split on e.g '.' or '-'
44+
raise BadRequirementError, "Malformed version string - #{version}" if parse_result.to_a.empty?
4445

4546
T.must(parse_result)
4647
end
@@ -129,7 +130,7 @@ def parse_version(number_begins_partition) # rubocop:disable Metrics/AbcSize,Met
129130
number_begins_partition = true
130131

131132
else
132-
raise ArgumentError, "Malformed version string - #{version}"
133+
raise BadRequirementError, "Malformed version string - #{version}"
133134
end
134135
end
135136
end

maven/spec/dependabot/maven/new_version_spec.rb

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,16 @@
3030
it { is_expected.to be(true) }
3131
end
3232

33-
context "with a nil version" do
34-
let(:version_string) { nil }
33+
context "with an empty string" do
34+
let(:version_string) { "" }
3535

3636
it { is_expected.to be(false) }
3737
end
3838

3939
context "with a malformed version string" do
4040
let(:version_string) { "-" }
41-
let(:err_msg) { "Malformed version string #{version_string}" }
4241

43-
it "raises an exception" do
44-
expect { version }.to raise_error(ArgumentError, err_msg)
45-
end
42+
it { is_expected.to be(false) }
4643
end
4744
end
4845

@@ -85,21 +82,30 @@
8582
it { is_expected.to eq("1.0.0_pre1") }
8683
end
8784

88-
context "with a null version" do
89-
let(:version_string) { nil }
90-
let(:err_msg) { "Malformed version string - string is nil" }
85+
context "with space as version" do
86+
let(:version_string) { "" }
87+
let(:err_msg) { "Malformed version string - string is empty" }
9188

9289
it "raises an exception" do
93-
expect { version }.to raise_error(ArgumentError, err_msg)
90+
expect { version }.to raise_error(Dependabot::BadRequirementError, err_msg)
9491
end
9592
end
9693

97-
context "with a malformed version string" do
94+
context "with a dot as version" do
95+
let(:version_string) { "." }
96+
let(:err_msg) { "Malformed version string - #{version_string}" }
97+
98+
it "raises an exception" do
99+
expect { version }.to raise_error(Dependabot::BadRequirementError, err_msg)
100+
end
101+
end
102+
103+
context "with a hyphen as a version" do
98104
let(:version_string) { "-" }
99-
let(:err_msg) { "Malformed version string #{version_string}" }
105+
let(:err_msg) { "Malformed version string - #{version_string}" }
100106

101107
it "raises an exception" do
102-
expect { version }.to raise_error(ArgumentError, err_msg)
108+
expect { version }.to raise_error(Dependabot::BadRequirementError, err_msg)
103109
end
104110
end
105111
end

maven/spec/dependabot/maven/version_parser_spec.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
let(:err_msg) { "Malformed version string - string is nil" }
4747

4848
it "raises an exception" do
49-
expect { described_class.parse(version) }.to raise_error(ArgumentError, err_msg)
49+
expect { described_class.parse(version) }.to raise_error(Dependabot::BadRequirementError, err_msg)
5050
end
5151
end
5252

@@ -56,7 +56,16 @@
5656
let(:err_msg) { "Malformed version string - string is empty" }
5757

5858
it "raises an exception" do
59-
expect { described_class.parse(version) }.to raise_error(ArgumentError, err_msg)
59+
expect { described_class.parse(version) }.to raise_error(Dependabot::BadRequirementError, err_msg)
60+
end
61+
end
62+
63+
context "with a malformed version" do
64+
let(:version) { "RELEASE&802" }
65+
let(:err_msg) { "Malformed version string - #{version}" }
66+
67+
it "raises an exception" do
68+
expect { described_class.parse(version) }.to raise_error(Dependabot::BadRequirementError, err_msg)
6069
end
6170
end
6271
end

0 commit comments

Comments
 (0)