Skip to content

Commit 02bf234

Browse files
kbukum1Copilot
andcommitted
Align dry-run.rb blocked_versions with version-requirement rename
Update bin/dry-run.rb (from merged PR #14916) to use 'version-requirement' instead of 'version' in the blocked_versions data structure, matching the rename done in job.rb and the API contract. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent ca8424d commit 02bf234

3 files changed

Lines changed: 23 additions & 5 deletions

File tree

bin/dry-run.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@
228228

229229
unless ENV["BLOCKED_VERSIONS"].to_s.strip.empty?
230230
# For example:
231-
# [{"dependency-name":"event-stream","version":"= 3.3.6","reason":"malware"}]
231+
# [{"dependency-name":"event-stream","version-requirement":"= 3.3.6","reason":"malware"}]
232232
$options[:blocked_versions] = JSON.parse(ENV.fetch("BLOCKED_VERSIONS", nil))
233233
end
234234

@@ -730,9 +730,9 @@ def ignored_versions_for(dep)
730730

731731
def blocked_versions_for(dep)
732732
$options[:blocked_versions]
733-
.select { |bv| bv["dependency-name"] && bv["version"] }
733+
.select { |bv| bv["dependency-name"] && bv["version-requirement"] }
734734
.select { |bv| bv["dependency-name"].casecmp(dep.name).zero? }
735-
.map { |bv| bv["version"] }
735+
.map { |bv| bv["version-requirement"] }
736736
end
737737

738738
def security_advisories
@@ -794,7 +794,7 @@ def security_fix?(dependency)
794794
if $options[:blocked_versions].any?
795795
puts "=> blocked versions active:"
796796
$options[:blocked_versions].each do |bv|
797-
msg = " #{bv['dependency-name']} #{bv['version']}"
797+
msg = " #{bv['dependency-name']} #{bv['version-requirement']}"
798798
msg += " (#{bv['reason']})" if bv["reason"]
799799
puts msg
800800
end

updater/lib/dependabot/api_client.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ def fetch_blocked_versions(package_manager)
408408
return []
409409
end
410410
data = parsed.fetch("data", [])
411-
unless data.is_a?(Array)
411+
unless data.is_a?(Array) && data.all?(Hash)
412412
Dependabot.logger.warn("Unexpected blocked versions format, continuing without them")
413413
return []
414414
end

updater/spec/dependabot/api_client_spec.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -921,5 +921,23 @@
921921
expect(result).to eq([])
922922
end
923923
end
924+
925+
context "when the API returns data entries that are not hashes" do
926+
before do
927+
stub_request(:get, blocked_versions_url)
928+
.with(query: { "package-manager": "npm_and_yarn" })
929+
.to_return(
930+
status: 200,
931+
body: { data: [1, "not-a-hash"] }.to_json,
932+
headers: headers
933+
)
934+
end
935+
936+
it "returns an empty array and logs a warning" do
937+
expect(Dependabot.logger).to receive(:warn).with(/Unexpected blocked versions format/)
938+
result = client.fetch_blocked_versions("npm_and_yarn")
939+
expect(result).to eq([])
940+
end
941+
end
924942
end
925943
end

0 commit comments

Comments
 (0)