deps: don't display recursive test dependencies.

You only care about the test dependencies for the specific formula you
are testing right now.
This commit is contained in:
Mike McQuaid 2018-03-14 15:41:18 +00:00
parent c933247a77
commit 1dfeff7274
5 changed files with 15 additions and 10 deletions

View File

@ -18,7 +18,7 @@
#: By default, `deps` shows required and recommended dependencies for #: By default, `deps` shows required and recommended dependencies for
#: <formulae>. To include the `:build` type dependencies, pass `--include-build`. #: <formulae>. To include the `:build` type dependencies, pass `--include-build`.
#: Similarly, pass `--include-optional` to include `:optional` dependencies or #: Similarly, pass `--include-optional` to include `:optional` dependencies or
#: `--include-test` to include `:test` dependencies. #: `--include-test` to include (non-recursive) `:test` dependencies.
#: To skip `:recommended` type dependencies, pass `--skip-recommended`. #: To skip `:recommended` type dependencies, pass `--skip-recommended`.
#: To include requirements in addition to dependencies, pass `--include-requirements`. #: To include requirements in addition to dependencies, pass `--include-requirements`.
#: #:
@ -145,8 +145,11 @@ module Homebrew
if dep.recommended? if dep.recommended?
Dependency.prune if ignores.include?("recommended?") || dependent.build.without?(dep) Dependency.prune if ignores.include?("recommended?") || dependent.build.without?(dep)
elsif dep.test? elsif dep.test?
next if includes.include?("test?") if includes.include?("test?")
Dependency.prune Dependency.keep_but_prune_recursive_deps
else
Dependency.prune
end
elsif dep.optional? elsif dep.optional?
Dependency.prune if !includes.include?("optional?") && !dependent.build.with?(dep) Dependency.prune if !includes.include?("optional?") && !dependent.build.with?(dep)
elsif dep.build? elsif dep.build?
@ -157,8 +160,7 @@ module Homebrew
if req.recommended? if req.recommended?
Requirement.prune if ignores.include?("recommended?") || dependent.build.without?(req) Requirement.prune if ignores.include?("recommended?") || dependent.build.without?(req)
elsif req.test? elsif req.test?
next if includes.include?("test?") Requirement.prune unless includes.include?("test?")
Requirement.prune
elsif req.optional? elsif req.optional?
Requirement.prune if !includes.include?("optional?") && !dependent.build.with?(req) Requirement.prune if !includes.include?("optional?") && !dependent.build.with?(req)
elsif req.build? elsif req.build?

View File

@ -83,6 +83,9 @@ class Dependency
deps.each do |dep| deps.each do |dep|
next if dependent.name == dep.name next if dependent.name == dep.name
# we only care about one level of test dependencies.
next if dep.test? && @expand_stack.length > 1
case action(dependent, dep, &block) case action(dependent, dep, &block)
when :prune when :prune
next next

View File

@ -102,12 +102,12 @@ describe Dependency do
end end
it "keeps dependency but prunes recursive dependencies with ::keep_but_prune_recursive_deps" do it "keeps dependency but prunes recursive dependencies with ::keep_but_prune_recursive_deps" do
foo = build_dep(:foo, [:build], bar) foo = build_dep(:foo, [:test], bar)
baz = build_dep(:baz, [:build]) baz = build_dep(:baz, [:test])
f = double(name: "f", deps: [foo, baz]) f = double(name: "f", deps: [foo, baz])
deps = described_class.expand(f) do |_dependent, dep| deps = described_class.expand(f) do |_dependent, dep|
described_class.keep_but_prune_recursive_deps if dep.build? described_class.keep_but_prune_recursive_deps if dep.test?
end end
expect(deps).to eq([foo, baz]) expect(deps).to eq([foo, baz])

View File

@ -97,7 +97,7 @@ With `--verbose` or `-v`, many commands print extra debugging information. Note
By default, `deps` shows required and recommended dependencies for By default, `deps` shows required and recommended dependencies for
`formulae`. To include the `:build` type dependencies, pass `--include-build`. `formulae`. To include the `:build` type dependencies, pass `--include-build`.
Similarly, pass `--include-optional` to include `:optional` dependencies or Similarly, pass `--include-optional` to include `:optional` dependencies or
`--include-test` to include `:test` dependencies. `--include-test` to include (non-recursive) `:test` dependencies.
To skip `:recommended` type dependencies, pass `--skip-recommended`. To skip `:recommended` type dependencies, pass `--skip-recommended`.
To include requirements in addition to dependencies, pass `--include-requirements`. To include requirements in addition to dependencies, pass `--include-requirements`.

View File

@ -107,7 +107,7 @@ If \fB\-\-full\-name\fR is passed, list dependencies by their full name\.
If \fB\-\-installed\fR is passed, only list those dependencies that are currently installed\. If \fB\-\-installed\fR is passed, only list those dependencies that are currently installed\.
. .
.IP .IP
By default, \fBdeps\fR shows required and recommended dependencies for \fIformulae\fR\. To include the \fB:build\fR type dependencies, pass \fB\-\-include\-build\fR\. Similarly, pass \fB\-\-include\-optional\fR to include \fB:optional\fR dependencies or \fB\-\-include\-test\fR to include \fB:test\fR dependencies\. To skip \fB:recommended\fR type dependencies, pass \fB\-\-skip\-recommended\fR\. To include requirements in addition to dependencies, pass \fB\-\-include\-requirements\fR\. By default, \fBdeps\fR shows required and recommended dependencies for \fIformulae\fR\. To include the \fB:build\fR type dependencies, pass \fB\-\-include\-build\fR\. Similarly, pass \fB\-\-include\-optional\fR to include \fB:optional\fR dependencies or \fB\-\-include\-test\fR to include (non\-recursive) \fB:test\fR dependencies\. To skip \fB:recommended\fR type dependencies, pass \fB\-\-skip\-recommended\fR\. To include requirements in addition to dependencies, pass \fB\-\-include\-requirements\fR\.
. .
.TP .TP
\fBdeps\fR \fB\-\-tree\fR [\fB\-\-1\fR] [\fIfilters\fR] [\fB\-\-annotate\fR] (\fIformulae\fR|\fB\-\-installed\fR) \fBdeps\fR \fB\-\-tree\fR [\fB\-\-1\fR] [\fIfilters\fR] [\fB\-\-annotate\fR] (\fIformulae\fR|\fB\-\-installed\fR)