From 51b27039be6dc4d856f86b542a12d29e28fb86d1 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Thu, 1 Mar 2018 17:30:42 +0000 Subject: [PATCH] Revert "Only check undeclared dependencies on macOS" This reverts commit fa5245f7adf38833b03e92e42aa5217ac5157773. --- Library/Homebrew/extend/os/mac/formula.rb | 16 ------- Library/Homebrew/formula.rb | 12 +++++- Library/Homebrew/test/formula_spec.rb | 44 ++++++++++++++------ Library/Homebrew/test/os/mac/formula_spec.rb | 19 --------- 4 files changed, 42 insertions(+), 49 deletions(-) delete mode 100644 Library/Homebrew/extend/os/mac/formula.rb delete mode 100644 Library/Homebrew/test/os/mac/formula_spec.rb diff --git a/Library/Homebrew/extend/os/mac/formula.rb b/Library/Homebrew/extend/os/mac/formula.rb deleted file mode 100644 index 0954e85872..0000000000 --- a/Library/Homebrew/extend/os/mac/formula.rb +++ /dev/null @@ -1,16 +0,0 @@ -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 72d9b14e5f..f6fa558b99 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -13,6 +13,7 @@ require "pkg_version" require "tap" require "keg" require "migrator" +require "os/mac/linkage_checker" require "extend/ENV" require "language/python" @@ -1840,7 +1841,16 @@ 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 a9d09cb00b..865ea38361 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -685,26 +685,44 @@ describe Formula do expect(f5.runtime_dependencies.map(&:name)).to eq(["f1", "f4"]) end - specify "runtime dependencies with optional deps from tap" do - tap_loader = double + describe "#runtime_dependencies" do + 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" + f3 = formula "f3" do + url "f3-1.0" - depends_on "foo/bar/f1" => :optional - depends_on "baz/qux/f2" + 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) + + expect(f3.runtime_dependencies.map(&:name)).to eq(["foo/bar/f1", "baz/qux/f2"]) end - expect(f3.runtime_dependencies.map(&:name)).to eq(["baz/qux/f2"]) + it "includes non-declared direct dependencies" do + formula = Class.new(Testball).new + dependency = formula("dependency") { url "f-1.0" } - stub_formula_loader(formula("f1") { url("f1-1.0") }, "foo/bar/f1") - f3.build = BuildOptions.new(Options.create(["--with-f1"]), f3.options) + formula.brew { formula.install } + keg = Keg.for(formula.prefix) + keg.link - expect(f3.runtime_dependencies.map(&:name)).to eq(["foo/bar/f1", "baz/qux/f2"]) + 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 specify "requirements" do diff --git a/Library/Homebrew/test/os/mac/formula_spec.rb b/Library/Homebrew/test/os/mac/formula_spec.rb deleted file mode 100644 index 21920238b4..0000000000 --- a/Library/Homebrew/test/os/mac/formula_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -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