diff --git a/Library/Homebrew/extend/os/mac/formula.rb b/Library/Homebrew/extend/os/mac/formula.rb new file mode 100644 index 0000000000000000000000000000000000000000..0954e8587202bced6688b80587d4ec41a82cb895 --- /dev/null +++ b/Library/Homebrew/extend/os/mac/formula.rb @@ -0,0 +1,16 @@ +require "os/mac/linkage_checker" + +class Formula + def undeclared_runtime_dependencies + if optlinked? + keg = Keg.new(opt_prefix) + elsif prefix.directory? + keg = Keg.new(prefix) + else + return [] + end + + linkage_checker = LinkageChecker.new(keg, self) + linkage_checker.undeclared_deps.map { |n| Dependency.new(n) } + end +end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index f6fa558b99f33be82a5811b6b81ae5edfc118b6a..72d9b14e5f23ccc44d3e7acc2fb01e0122c1aaca 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -13,7 +13,6 @@ require "pkg_version" require "tap" require "keg" require "migrator" -require "os/mac/linkage_checker" require "extend/ENV" require "language/python" @@ -1841,16 +1840,7 @@ class Formula end def undeclared_runtime_dependencies - if optlinked? - keg = Keg.new(opt_prefix) - elsif prefix.directory? - keg = Keg.new(prefix) - else - return [] - end - - linkage_checker = LinkageChecker.new(keg, self) - linkage_checker.undeclared_deps.map { |n| Dependency.new(n) } + [] end # Returns the prefix for a given formula version number. diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index 865ea38361ae6657106f36f62648be74aee17dc7..a9d09cb00b70b454b13b2bec7fa806f2e764336e 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -685,44 +685,26 @@ describe Formula do expect(f5.runtime_dependencies.map(&:name)).to eq(["f1", "f4"]) end - describe "#runtime_dependencies" do - specify "runtime dependencies with optional deps from tap" do - tap_loader = double + specify "runtime dependencies with optional deps from tap" do + tap_loader = double - allow(tap_loader).to receive(:get_formula).and_raise(RuntimeError, "tried resolving tap formula") - allow(Formulary).to receive(:loader_for).with("foo/bar/f1", from: nil).and_return(tap_loader) - stub_formula_loader(formula("f2") { url("f2-1.0") }, "baz/qux/f2") + allow(tap_loader).to receive(:get_formula).and_raise(RuntimeError, "tried resolving tap formula") + allow(Formulary).to receive(:loader_for).with("foo/bar/f1", from: nil).and_return(tap_loader) + stub_formula_loader(formula("f2") { url("f2-1.0") }, "baz/qux/f2") - f3 = formula "f3" do - url "f3-1.0" - - depends_on "foo/bar/f1" => :optional - depends_on "baz/qux/f2" - end - - expect(f3.runtime_dependencies.map(&:name)).to eq(["baz/qux/f2"]) - - stub_formula_loader(formula("f1") { url("f1-1.0") }, "foo/bar/f1") - f3.build = BuildOptions.new(Options.create(["--with-f1"]), f3.options) + f3 = formula "f3" do + url "f3-1.0" - expect(f3.runtime_dependencies.map(&:name)).to eq(["foo/bar/f1", "baz/qux/f2"]) + depends_on "foo/bar/f1" => :optional + depends_on "baz/qux/f2" end - it "includes non-declared direct dependencies" do - formula = Class.new(Testball).new - dependency = formula("dependency") { url "f-1.0" } + expect(f3.runtime_dependencies.map(&:name)).to eq(["baz/qux/f2"]) - formula.brew { formula.install } - keg = Keg.for(formula.prefix) - keg.link + stub_formula_loader(formula("f1") { url("f1-1.0") }, "foo/bar/f1") + f3.build = BuildOptions.new(Options.create(["--with-f1"]), f3.options) - brewed_dylibs = { dependency.name => Set["some.dylib"] } - linkage_checker = double("linkage checker", brewed_dylibs: brewed_dylibs) - allow(LinkageChecker).to receive(:new).with(keg, any_args) - .and_return(linkage_checker) - - expect(formula.runtime_dependencies).to include an_object_having_attributes(name: dependency.name) - end + expect(f3.runtime_dependencies.map(&:name)).to eq(["foo/bar/f1", "baz/qux/f2"]) end specify "requirements" do diff --git a/Library/Homebrew/test/os/mac/formula_spec.rb b/Library/Homebrew/test/os/mac/formula_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..21920238b4ca35174741703d104cc1307a02d11e --- /dev/null +++ b/Library/Homebrew/test/os/mac/formula_spec.rb @@ -0,0 +1,19 @@ +RSpec.describe Formula do + describe "#runtime_dependencies" do + it "includes non-declared direct dependencies" do + formula = Class.new(Testball).new + dependency = formula("dependency") { url "f-1.0" } + + formula.brew { formula.install } + keg = Keg.for(formula.prefix) + keg.link + + brewed_dylibs = { dependency.name => Set["some.dylib"] } + linkage_checker = double("linkage checker", brewed_dylibs: brewed_dylibs) + allow(LinkageChecker).to receive(:new).with(keg, any_args) + .and_return(linkage_checker) + + expect(formula.runtime_dependencies).to include an_object_having_attributes(name: dependency.name) + end + end +end