Skip to content

Commit 6557697

Browse files
authored
Merge pull request #23004 from Homebrew/bump-formula-pr-avoid-double-resource-update
dev-cmd/bump-formula-pr: avoid attempting same resource update
2 parents 2d00b30 + be8d5f5 commit 6557697

2 files changed

Lines changed: 45 additions & 10 deletions

File tree

Library/Homebrew/dev-cmd/bump-formula-pr.rb

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -330,11 +330,13 @@ def run
330330
quiet: args.quiet?,
331331
ignore_non_pypi_packages: true
332332

333+
resource_versions = parse_resource_versions_arg
333334
resource_update_results.merge!(
334-
update_matching_version_resources!(commit_formula, version: new_formula_version.to_s),
335+
update_matching_version_resources!(commit_formula,
336+
version: new_formula_version.to_s,
337+
resource_versions:),
335338
)
336339

337-
resource_versions = parse_resource_versions_arg
338340
if resource_versions.present?
339341
resource_update_results.merge!(
340342
update_resources!(commit_formula, resource_versions:),
@@ -733,16 +735,16 @@ def update_resource_block!(formula, resource, new_version)
733735

734736
sig {
735737
params(
736-
formula: Formula,
737-
version: String,
738+
formula: Formula,
739+
version: String,
740+
resource_versions: T.nilable(T::Hash[String, T::Hash[Symbol, T.nilable(String)]]),
738741
).returns(T::Hash[String, Symbol])
739742
}
740-
def update_matching_version_resources!(formula, version:)
741-
results = {}
742-
formula.resources.select { |r| r.livecheck.formula == :parent }.each do |resource|
743-
results[resource.name] = update_resource_block!(formula, resource, version)
744-
end
745-
results
743+
def update_matching_version_resources!(formula, version:, resource_versions: nil)
744+
resource_versions ||= {}
745+
formula.resources
746+
.select { |r| r.livecheck.formula == :parent && resource_versions[r.name].blank? }
747+
.to_h { |resource| [resource.name, update_resource_block!(formula, resource, version)] }
746748
end
747749

748750
sig {

Library/Homebrew/test/dev-cmd/bump-formula-pr_spec.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,37 @@ class Couchdb < Formula
186186
end
187187
end
188188
end
189+
190+
describe "::update_matching_version_resources!" do
191+
let(:f) do
192+
formula("test") do
193+
T.bind(self, T.class_of(Formula))
194+
url "https://brew.sh/test-1.2.3.tgz"
195+
196+
resource "parent" do
197+
url "https://brew.sh/parent-1.2.3.tar.gz"
198+
livecheck do
199+
formula :parent
200+
end
201+
end
202+
203+
resource "no-parent" do
204+
url "https://brew.sh/no-parent-1.2.3.tar.gz"
205+
end
206+
end
207+
end
208+
let(:resource) { f.resource("parent") }
209+
let(:version) { "1.2.4" }
210+
211+
it "only updates `:parent` resource" do
212+
expect(bump_formula_pr).to receive(:update_resource_block!).with(f, resource, version).and_return(:success)
213+
expect(bump_formula_pr.send(:update_matching_version_resources!, f, version:)).to eq({ "parent" => :success })
214+
end
215+
216+
it "does not update `:parent` resource if set in `--resource-versions`" do
217+
resource_versions = { "parent" => { current_version: "1.2.3", latest_version: version } }
218+
expect(bump_formula_pr).not_to receive(:update_resource_block!)
219+
expect(bump_formula_pr.send(:update_matching_version_resources!, f, version:, resource_versions:)).to eq({})
220+
end
221+
end
189222
end

0 commit comments

Comments
 (0)