aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/diagnostic.rb4
-rw-r--r--Library/Homebrew/download_strategy.rb6
-rw-r--r--Library/Homebrew/manpages/brew.1.md.erb3
-rw-r--r--Library/Homebrew/test/cask/dsl_spec.rb1
-rw-r--r--Library/Homebrew/test/download_strategies_spec.rb13
-rw-r--r--Library/Homebrew/test/utils/tty_spec.rb14
-rw-r--r--Library/Homebrew/utils/tty.rb4
7 files changed, 40 insertions, 5 deletions
diff --git a/Library/Homebrew/diagnostic.rb b/Library/Homebrew/diagnostic.rb
index 8516f2b63..178758347 100644
--- a/Library/Homebrew/diagnostic.rb
+++ b/Library/Homebrew/diagnostic.rb
@@ -788,7 +788,7 @@ module Homebrew
EOS
end
- return if ENV["CI"] || ENV["JENKINS_HOME"]
+ return if ENV["CI"]
branch = coretap_path.git_branch
return if branch.nil? || branch =~ /master/
@@ -838,7 +838,7 @@ module Homebrew
def check_for_large_cache
return unless HOMEBREW_CACHE.exist?
# CI can be expected to have a large cache.
- return if ENV["CI"] || ENV["JENKINS_HOME"]
+ return if ENV["CI"]
cache_size = HOMEBREW_CACHE.disk_usage
return unless cache_size > 2_147_483_648
<<~EOS
diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb
index feb518057..e85661d76 100644
--- a/Library/Homebrew/download_strategy.rb
+++ b/Library/Homebrew/download_strategy.rb
@@ -303,7 +303,11 @@ class AbstractFileDownloadStrategy < AbstractDownloadStrategy
# We can't use basename_without_params, because given a URL like
# https://example.com/download.php?file=foo-1.0.tar.gz
# the extension we want is ".tar.gz", not ".php".
- Pathname.new(@url).extname[/[^?]+/]
+ Pathname.new(@url).ascend do |path|
+ ext = path.extname[/[^?]+/]
+ return ext if ext
+ end
+ nil
end
end
diff --git a/Library/Homebrew/manpages/brew.1.md.erb b/Library/Homebrew/manpages/brew.1.md.erb
index 508c90f2d..fbe6fca94 100644
--- a/Library/Homebrew/manpages/brew.1.md.erb
+++ b/Library/Homebrew/manpages/brew.1.md.erb
@@ -199,6 +199,9 @@ can take several different forms:
If set, Homebrew will not auto-update before running `brew install`,
`brew upgrade` or `brew tap`.
+ * `HOMEBREW_NO_COLOR`:
+ If set, Homebrew will not print text with color added.
+
* `HOMEBREW_NO_EMOJI`:
If set, Homebrew will not print the `HOMEBREW_INSTALL_BADGE` on a
successful build.
diff --git a/Library/Homebrew/test/cask/dsl_spec.rb b/Library/Homebrew/test/cask/dsl_spec.rb
index d3bb46264..993c03bac 100644
--- a/Library/Homebrew/test/cask/dsl_spec.rb
+++ b/Library/Homebrew/test/cask/dsl_spec.rb
@@ -75,6 +75,7 @@ describe Hbc::DSL, :cask do
it "may use deprecated DSL version hash syntax" do
allow(ENV).to receive(:[]).with("HOMEBREW_DEVELOPER").and_return(nil)
+ allow(ENV).to receive(:[]).with("HOMEBREW_NO_COLOR").and_return(nil)
expect(cask.token).to eq("with-dsl-version")
expect(cask.url.to_s).to eq("http://example.com/TestCask.dmg")
diff --git a/Library/Homebrew/test/download_strategies_spec.rb b/Library/Homebrew/test/download_strategies_spec.rb
index 06d6fa855..7ad070fc4 100644
--- a/Library/Homebrew/test/download_strategies_spec.rb
+++ b/Library/Homebrew/test/download_strategies_spec.rb
@@ -209,6 +209,19 @@ describe CurlDownloadStrategy do
it "parses the opts and sets the corresponding args" do
expect(subject.send(:_curl_opts)).to eq(["--user", "download:123456"])
end
+
+ describe "#tarball_path" do
+ subject { described_class.new(name, resource).tarball_path }
+
+ context "when URL ends with file" do
+ it { is_expected.to eq(HOMEBREW_CACHE/"foo-.tar.gz") }
+ end
+
+ context "when URL file is in middle" do
+ let(:url) { "http://example.com/foo.tar.gz/from/this/mirror" }
+ it { is_expected.to eq(HOMEBREW_CACHE/"foo-.tar.gz") }
+ end
+ end
end
describe DownloadStrategyDetector do
diff --git a/Library/Homebrew/test/utils/tty_spec.rb b/Library/Homebrew/test/utils/tty_spec.rb
index 3ba89b6fd..e6c9168f3 100644
--- a/Library/Homebrew/test/utils/tty_spec.rb
+++ b/Library/Homebrew/test/utils/tty_spec.rb
@@ -53,7 +53,7 @@ describe Tty do
allow($stdout).to receive(:tty?).and_return(true)
end
- it "returns an empty string for all colors" do
+ it "returns ANSI escape codes for colors" do
expect(subject.to_s).to eq("")
expect(subject.red.to_s).to eq("\033[31m")
expect(subject.green.to_s).to eq("\033[32m")
@@ -63,5 +63,17 @@ describe Tty do
expect(subject.cyan.to_s).to eq("\033[36m")
expect(subject.default.to_s).to eq("\033[39m")
end
+
+ it "returns an empty string for all colors when HOMEBREW_NO_COLOR is set" do
+ ENV["HOMEBREW_NO_COLOR"] = "1"
+ expect(subject.to_s).to eq("")
+ expect(subject.red.to_s).to eq("")
+ expect(subject.green.to_s).to eq("")
+ expect(subject.yellow.to_s).to eq("")
+ expect(subject.blue.to_s).to eq("")
+ expect(subject.magenta.to_s).to eq("")
+ expect(subject.cyan.to_s).to eq("")
+ expect(subject.default.to_s).to eq("")
+ end
end
end
diff --git a/Library/Homebrew/utils/tty.rb b/Library/Homebrew/utils/tty.rb
index e872e6460..81d5f00d7 100644
--- a/Library/Homebrew/utils/tty.rb
+++ b/Library/Homebrew/utils/tty.rb
@@ -59,7 +59,9 @@ module Tty
end
def to_s
- return "" unless $stdout.tty?
+ if ENV["HOMEBREW_NO_COLOR"] || !$stdout.tty?
+ return ""
+ end
current_escape_sequence
ensure
reset_escape_sequence!