Skip to content

Commit 0c26945

Browse files
committed
cargo: AllVersionsIgnored
1 parent 8473ed1 commit 0c26945

4 files changed

Lines changed: 38 additions & 4 deletions

File tree

cargo/lib/dependabot/cargo/update_checker.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ def latest_version_finder
109109
dependency_files: dependency_files,
110110
credentials: credentials,
111111
ignored_versions: ignored_versions,
112+
raise_on_ignored: raise_on_ignored,
112113
security_advisories: security_advisories
113114
)
114115
end

cargo/lib/dependabot/cargo/update_checker/latest_version_finder.rb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ module Cargo
88
class UpdateChecker
99
class LatestVersionFinder
1010
def initialize(dependency:, dependency_files:, credentials:,
11-
ignored_versions:, security_advisories:)
11+
ignored_versions:, raise_on_ignored: false,
12+
security_advisories:)
1213
@dependency = dependency
1314
@dependency_files = dependency_files
1415
@credentials = credentials
1516
@ignored_versions = ignored_versions
17+
@raise_on_ignored = raise_on_ignored
1618
@security_advisories = security_advisories
1719
end
1820

@@ -39,8 +41,8 @@ def fetch_latest_version
3941
def fetch_lowest_security_fix_version
4042
versions = available_versions
4143
versions = filter_prerelease_versions(versions)
42-
versions = filter_ignored_versions(versions)
4344
versions = filter_vulnerable_versions(versions)
45+
versions = filter_ignored_versions(versions)
4446
versions = filter_lower_versions(versions)
4547
versions.min
4648
end
@@ -52,8 +54,13 @@ def filter_prerelease_versions(versions_array)
5254
end
5355

5456
def filter_ignored_versions(versions_array)
55-
versions_array.
56-
reject { |v| ignore_reqs.any? { |r| r.satisfied_by?(v) } }
57+
filtered = versions_array.
58+
reject { |v| ignore_reqs.any? { |r| r.satisfied_by?(v) } }
59+
if @raise_on_ignored && filtered.empty? && versions_array.any?
60+
raise Dependabot::AllVersionsIgnored
61+
end
62+
63+
filtered
5764
end
5865

5966
def filter_vulnerable_versions(versions_array)

cargo/spec/dependabot/cargo/update_checker/latest_version_finder_spec.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@
1919
dependency_files: dependency_files,
2020
credentials: credentials,
2121
ignored_versions: ignored_versions,
22+
raise_on_ignored: raise_on_ignored,
2223
security_advisories: security_advisories
2324
)
2425
end
2526

2627
let(:ignored_versions) { [] }
28+
let(:raise_on_ignored) { false }
2729
let(:security_advisories) { [] }
2830
let(:credentials) do
2931
[{
@@ -150,6 +152,20 @@
150152
it { is_expected.to eq(Gem::Version.new("0.1.20")) }
151153
end
152154

155+
context "when all versions are being ignored" do
156+
let(:ignored_versions) { [">= 0"] }
157+
it "returns nil" do
158+
expect(subject).to be_nil
159+
end
160+
161+
context "raise_on_ignored" do
162+
let(:raise_on_ignored) { true }
163+
it "raises an error" do
164+
expect { subject }.to raise_error(Dependabot::AllVersionsIgnored)
165+
end
166+
end
167+
end
168+
153169
context "when the lowest fixed version is a pre-release" do
154170
let(:dependency_name) { "xdg" }
155171
let(:dependency_version) { "1.0.0" }

cargo/spec/dependabot/cargo/update_checker_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@
2222
dependency_files: dependency_files,
2323
credentials: credentials,
2424
ignored_versions: ignored_versions,
25+
raise_on_ignored: raise_on_ignored,
2526
security_advisories: security_advisories
2627
)
2728
end
2829

2930
let(:ignored_versions) { [] }
31+
let(:raise_on_ignored) { false }
3032
let(:security_advisories) { [] }
3133
let(:credentials) do
3234
[{
@@ -201,6 +203,14 @@
201203
it { is_expected.to eq(Gem::Version.new("0.1.39")) }
202204
end
203205

206+
context "when all versions are being ignored" do
207+
let(:ignored_versions) { [">= 0"] }
208+
let(:raise_on_ignored) { true }
209+
it "raises an error" do
210+
expect { subject }.to raise_error(Dependabot::AllVersionsIgnored)
211+
end
212+
end
213+
204214
context "with a git dependency" do
205215
before do
206216
git_url = "https://github.com/BurntSushi/utf8-ranges.git"

0 commit comments

Comments
 (0)