Skip to content

Commit 5d96f6a

Browse files
Fix gradle wrapper guard (#14399)
Co-authored-by: Codex <noreply@openai.com>
1 parent 25b65fd commit 5d96f6a

2 files changed

Lines changed: 71 additions & 1 deletion

File tree

gradle/lib/dependabot/gradle/file_updater/wrapper_updater.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def target_file?(file)
120120
sig { params(requirements: T::Array[T::Hash[Symbol, T.untyped]], network_timeout: T.nilable(String)).returns(T::Array[String]) }
121121
def command_args(requirements, network_timeout)
122122
version = T.let(requirements[0]&.[](:requirement), String)
123-
checksum = T.let(requirements[1]&.[](:requirement), String) if dependency.requirements.size > 1
123+
checksum = T.let(requirements[1]&.[](:requirement), T.nilable(String)) if requirements.size > 1
124124
distribution_url = T.let(requirements[0]&.[](:source), T::Hash[Symbol, String])[:url]
125125
distribution_type = distribution_url&.match(/\b(bin|all)\b/)&.captures&.first
126126

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# typed: false
2+
# frozen_string_literal: true
3+
4+
require "spec_helper"
5+
require "dependabot/dependency"
6+
require "dependabot/gradle/file_updater"
7+
8+
RSpec.describe Dependabot::Gradle::FileUpdater::WrapperUpdater do
9+
subject(:command_args) { updater.send(:command_args, target_requirements, nil) }
10+
11+
let(:updater) do
12+
described_class.new(
13+
dependency_files: [],
14+
dependency: dependency
15+
)
16+
end
17+
18+
let(:dependency) do
19+
Dependabot::Dependency.new(
20+
name: "gradle-wrapper",
21+
version: "9.0.0",
22+
requirements: [
23+
{
24+
file: "gradle/wrapper/gradle-wrapper.properties",
25+
requirement: "9.0.0",
26+
groups: [],
27+
source: {
28+
type: "gradle-distribution",
29+
url: "https://services.gradle.org/distributions/gradle-9.0.0-bin.zip",
30+
property: "distributionUrl"
31+
}
32+
},
33+
{
34+
file: "subproject/gradle/wrapper/gradle-wrapper.properties",
35+
requirement: "9.0.0",
36+
groups: [],
37+
source: {
38+
type: "gradle-distribution",
39+
url: "https://services.gradle.org/distributions/gradle-9.0.0-all.zip",
40+
property: "distributionUrl"
41+
}
42+
},
43+
{
44+
file: "subproject/gradle/wrapper/gradle-wrapper.properties",
45+
requirement: "f759b8dd5204e2e3fa4ca3e73f452f087153cf81bac9561eeb854229cc2c5365",
46+
groups: [],
47+
source: {
48+
type: "gradle-distribution",
49+
url: "https://services.gradle.org/distributions/gradle-9.0.0-all.zip.sha256",
50+
property: "distributionSha256Sum"
51+
}
52+
}
53+
],
54+
package_manager: "gradle"
55+
)
56+
end
57+
58+
context "when the current wrapper file has no checksum requirement" do
59+
let(:target_requirements) do
60+
dependency.requirements.select do |req|
61+
req[:file] == "gradle/wrapper/gradle-wrapper.properties"
62+
end
63+
end
64+
65+
it "does not crash and does not include a checksum argument from another wrapper file" do
66+
expect(command_args).not_to include("--gradle-distribution-sha256-sum")
67+
expect(command_args).to include("--distribution-type", "bin")
68+
end
69+
end
70+
end

0 commit comments

Comments
 (0)