aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/test')
-rw-r--r--Library/Homebrew/test/cleanup_spec.rb130
-rw-r--r--Library/Homebrew/test/cleanup_test.rb96
-rw-r--r--Library/Homebrew/test/formula_support_spec.rb29
-rw-r--r--Library/Homebrew/test/formula_support_test.rb28
-rw-r--r--Library/Homebrew/test/os/mac/x11_requirement_test.rb13
-rw-r--r--Library/Homebrew/test/sandbox_spec.rb78
-rw-r--r--Library/Homebrew/test/sandbox_test.rb73
-rw-r--r--Library/Homebrew/test/x11_requirement_spec.rb13
8 files changed, 250 insertions, 210 deletions
diff --git a/Library/Homebrew/test/cleanup_spec.rb b/Library/Homebrew/test/cleanup_spec.rb
new file mode 100644
index 000000000..b0e824767
--- /dev/null
+++ b/Library/Homebrew/test/cleanup_spec.rb
@@ -0,0 +1,130 @@
+require "test/support/fixtures/testball"
+require "cleanup"
+require "fileutils"
+require "pathname"
+
+describe Homebrew::Cleanup do
+ let(:ds_store) { Pathname.new("#{HOMEBREW_PREFIX}/Library/.DS_Store") }
+
+ around(:each) do |example|
+ begin
+ FileUtils.touch ds_store
+
+ example.run
+ ensure
+ FileUtils.rm_f ds_store
+ end
+ end
+
+ describe "::cleanup" do
+ it "removes .DS_Store files" do
+ shutup do
+ described_class.cleanup
+ end
+
+ expect(ds_store).not_to exist
+ end
+
+ it "doesn't remove anything if `--dry-run` is specified" do
+ ARGV << "--dry-run"
+
+ shutup do
+ described_class.cleanup
+ end
+
+ expect(ds_store).to exist
+ end
+ end
+
+ specify "::cleanup_formula" do
+ f1 = Class.new(Testball) do
+ version "1.0"
+ end.new
+
+ f2 = Class.new(Testball) do
+ version "0.2"
+ version_scheme 1
+ end.new
+
+ f3 = Class.new(Testball) do
+ version "0.3"
+ version_scheme 1
+ end.new
+
+ f4 = Class.new(Testball) do
+ version "0.1"
+ version_scheme 2
+ end.new
+
+ shutup do
+ [f1, f2, f3, f4].each do |f|
+ f.brew do
+ f.install
+ end
+
+ Tab.create(f, DevelopmentTools.default_compiler, :libcxx).write
+ end
+ end
+
+ expect(f1).to be_installed
+ expect(f2).to be_installed
+ expect(f3).to be_installed
+ expect(f4).to be_installed
+
+ shutup do
+ described_class.cleanup_formula f3
+ end
+
+ expect(f1).not_to be_installed
+ expect(f2).not_to be_installed
+ expect(f3).to be_installed
+ expect(f4).to be_installed
+ end
+
+ specify "::cleanup_logs" do
+ path = (HOMEBREW_LOGS/"delete_me")
+ path.mkpath
+ ARGV << "--prune=all"
+
+ shutup do
+ described_class.cleanup_logs
+ end
+
+ expect(path).not_to exist
+ end
+
+ describe "::cleanup_cache" do
+ it "cleans up incomplete downloads" do
+ incomplete = (HOMEBREW_CACHE/"something.incomplete")
+ incomplete.mkpath
+
+ shutup do
+ described_class.cleanup_cache
+ end
+
+ expect(incomplete).not_to exist
+ end
+
+ it "cleans up 'java_cache'" do
+ java_cache = (HOMEBREW_CACHE/"java_cache")
+ java_cache.mkpath
+
+ shutup do
+ described_class.cleanup_cache
+ end
+
+ expect(java_cache).not_to exist
+ end
+
+ it "cleans up 'npm_cache'" do
+ npm_cache = (HOMEBREW_CACHE/"npm_cache")
+ npm_cache.mkpath
+
+ shutup do
+ described_class.cleanup_cache
+ end
+
+ expect(npm_cache).not_to exist
+ end
+ end
+end
diff --git a/Library/Homebrew/test/cleanup_test.rb b/Library/Homebrew/test/cleanup_test.rb
deleted file mode 100644
index bc7a6713c..000000000
--- a/Library/Homebrew/test/cleanup_test.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-require "testing_env"
-require "test/support/fixtures/testball"
-require "cleanup"
-require "fileutils"
-require "pathname"
-require "testing_env"
-
-class CleanupTests < Homebrew::TestCase
- def setup
- super
- @ds_store = Pathname.new "#{HOMEBREW_PREFIX}/Library/.DS_Store"
- FileUtils.touch @ds_store
- end
-
- def teardown
- FileUtils.rm_f @ds_store
- super
- end
-
- def test_cleanup
- shutup { Homebrew::Cleanup.cleanup }
- refute_predicate @ds_store, :exist?
- end
-
- def test_cleanup_dry_run
- ARGV << "--dry-run"
- shutup { Homebrew::Cleanup.cleanup }
- assert_predicate @ds_store, :exist?
- end
-
- def test_cleanup_formula
- f1 = Class.new(Testball) do
- version "1.0"
- end.new
- f2 = Class.new(Testball) do
- version "0.2"
- version_scheme 1
- end.new
- f3 = Class.new(Testball) do
- version "0.3"
- version_scheme 1
- end.new
- f4 = Class.new(Testball) do
- version "0.1"
- version_scheme 2
- end.new
-
- shutup do
- [f1, f2, f3, f4].each do |f|
- f.brew { f.install }
- Tab.create(f, DevelopmentTools.default_compiler, :libcxx).write
- end
- end
-
- assert_predicate f1, :installed?
- assert_predicate f2, :installed?
- assert_predicate f3, :installed?
- assert_predicate f4, :installed?
-
- shutup { Homebrew::Cleanup.cleanup_formula f3 }
-
- refute_predicate f1, :installed?
- refute_predicate f2, :installed?
- assert_predicate f3, :installed?
- assert_predicate f4, :installed?
- end
-
- def test_cleanup_logs
- path = (HOMEBREW_LOGS/"delete_me")
- path.mkpath
- ARGV << "--prune=all"
- shutup { Homebrew::Cleanup.cleanup_logs }
- refute_predicate path, :exist?
- end
-
- def test_cleanup_cache_incomplete_downloads
- incomplete = (HOMEBREW_CACHE/"something.incomplete")
- incomplete.mkpath
- shutup { Homebrew::Cleanup.cleanup_cache }
- refute_predicate incomplete, :exist?
- end
-
- def test_cleanup_cache_java_cache
- java_cache = (HOMEBREW_CACHE/"java_cache")
- java_cache.mkpath
- shutup { Homebrew::Cleanup.cleanup_cache }
- refute_predicate java_cache, :exist?
- end
-
- def test_cleanup_cache_npm_cache
- npm_cache = (HOMEBREW_CACHE/"npm_cache")
- npm_cache.mkpath
- shutup { Homebrew::Cleanup.cleanup_cache }
- refute_predicate npm_cache, :exist?
- end
-end
diff --git a/Library/Homebrew/test/formula_support_spec.rb b/Library/Homebrew/test/formula_support_spec.rb
new file mode 100644
index 000000000..f42d61ba9
--- /dev/null
+++ b/Library/Homebrew/test/formula_support_spec.rb
@@ -0,0 +1,29 @@
+require "formula_support"
+
+describe KegOnlyReason do
+ describe "#to_s" do
+ it "returns the reason provided" do
+ r = KegOnlyReason.new :provided_by_osx, "test"
+ expect(r.to_s).to eq("test")
+ end
+
+ it "returns a default message when no reason is provided" do
+ r = KegOnlyReason.new :provided_by_macos, ""
+ expect(r.to_s).to match(/^macOS already provides/)
+ end
+ end
+end
+
+describe BottleDisableReason do
+ specify ":unneeded" do
+ bottle_disable_reason = BottleDisableReason.new :unneeded, nil
+ expect(bottle_disable_reason).to be_unneeded
+ expect(bottle_disable_reason.to_s).to eq("This formula doesn't require compiling.")
+ end
+
+ specify ":disabled" do
+ bottle_disable_reason = BottleDisableReason.new :disable, "reason"
+ expect(bottle_disable_reason).not_to be_unneeded
+ expect(bottle_disable_reason.to_s).to eq("reason")
+ end
+end
diff --git a/Library/Homebrew/test/formula_support_test.rb b/Library/Homebrew/test/formula_support_test.rb
deleted file mode 100644
index c0a79f950..000000000
--- a/Library/Homebrew/test/formula_support_test.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-require "testing_env"
-require "formula_support"
-
-class KegOnlyReasonTests < Homebrew::TestCase
- def test_to_s_explanation
- r = KegOnlyReason.new :provided_by_osx, "test"
- assert_equal "test", r.to_s
- end
-
- def test_to_s_no_explanation
- r = KegOnlyReason.new :provided_by_macos, ""
- assert_match(/^macOS already provides/, r.to_s)
- end
-end
-
-class BottleDisableReasonTests < Homebrew::TestCase
- def test_bottle_unneeded
- bottle_disable_reason = BottleDisableReason.new :unneeded, nil
- assert_predicate bottle_disable_reason, :unneeded?
- assert_equal "This formula doesn't require compiling.", bottle_disable_reason.to_s
- end
-
- def test_bottle_disabled
- bottle_disable_reason = BottleDisableReason.new :disable, "reason"
- refute_predicate bottle_disable_reason, :unneeded?
- assert_equal "reason", bottle_disable_reason.to_s
- end
-end
diff --git a/Library/Homebrew/test/os/mac/x11_requirement_test.rb b/Library/Homebrew/test/os/mac/x11_requirement_test.rb
deleted file mode 100644
index 102937cb5..000000000
--- a/Library/Homebrew/test/os/mac/x11_requirement_test.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require "testing_env"
-require "requirements/x11_requirement"
-
-class OSMacX11RequirementTests < Homebrew::TestCase
- def test_satisfied
- MacOS::XQuartz.stubs(:version).returns("2.7.5")
- MacOS::XQuartz.stubs(:installed?).returns(true)
- assert_predicate X11Requirement.new, :satisfied?
-
- MacOS::XQuartz.stubs(:installed?).returns(false)
- refute_predicate X11Requirement.new, :satisfied?
- end
-end
diff --git a/Library/Homebrew/test/sandbox_spec.rb b/Library/Homebrew/test/sandbox_spec.rb
new file mode 100644
index 000000000..98634bf3c
--- /dev/null
+++ b/Library/Homebrew/test/sandbox_spec.rb
@@ -0,0 +1,78 @@
+require "sandbox"
+
+RSpec::Matchers.define_negated_matcher :not_matching, :matching
+
+describe Sandbox do
+ let(:dir) { @dir = Pathname.new(Dir.mktmpdir) }
+ let(:file) { dir/"foo" }
+
+ before(:each) do
+ skip "Sandbox not implemented." unless described_class.available?
+ end
+
+ after(:each) do
+ dir.rmtree unless @dir.nil?
+ end
+
+ specify "#formula?" do
+ f = formula { url "foo-1.0" }
+ f2 = formula { url "bar-1.0" }
+ allow(f2).to receive(:tap).and_return(Tap.fetch("test/tap"))
+
+ ENV["HOMEBREW_SANDBOX"] = "1"
+ expect(described_class).to be_formula(f), "Formulae should be sandboxed if --sandbox was passed."
+
+ ENV.delete("HOMEBREW_SANDBOX")
+ expect(described_class).to be_formula(f), "Formulae should be sandboxed if in a sandboxed tap."
+ expect(described_class).not_to be_formula(f2), "Formulae should not be sandboxed if not in a sandboxed tap."
+ end
+
+ specify "#test?" do
+ ENV.delete("HOMEBREW_NO_SANDBOX")
+ expect(described_class).to be_test, "Tests should be sandboxed unless --no-sandbox was passed."
+ end
+
+ specify "#allow_write" do
+ subject.allow_write file
+ subject.exec "touch", file
+
+ expect(file).to exist
+ end
+
+ describe "#exec" do
+ it "fails when writing to file not specified with ##allow_write" do
+ shutup do
+ expect {
+ subject.exec "touch", file
+ }.to raise_error(ErrorDuringExecution)
+ end
+
+ expect(file).not_to exist
+ end
+
+ it "complains on failure" do
+ ENV["HOMEBREW_VERBOSE"] = "1"
+
+ expect(Utils).to receive(:popen_read).and_return("foo")
+
+ expect { subject.exec "false" }
+ .to raise_error(ErrorDuringExecution)
+ .and output(/foo/).to_stdout
+ end
+
+ it "ignores bogus Python error" do
+ ENV["HOMEBREW_VERBOSE"] = "1"
+
+ with_bogus_error = <<-EOS.undent
+ foo
+ Mar 17 02:55:06 sandboxd[342]: Python(49765) deny file-write-unlink /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/errors.pyc
+ bar
+ EOS
+ expect(Utils).to receive(:popen_read).and_return(with_bogus_error)
+
+ expect { subject.exec "false" }
+ .to raise_error(ErrorDuringExecution)
+ .and output(a_string_matching(/foo/).and(matching(/bar/).and(not_matching(/Python/)))).to_stdout
+ end
+ end
+end
diff --git a/Library/Homebrew/test/sandbox_test.rb b/Library/Homebrew/test/sandbox_test.rb
deleted file mode 100644
index a633defce..000000000
--- a/Library/Homebrew/test/sandbox_test.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-require "testing_env"
-require "sandbox"
-
-class SandboxTest < Homebrew::TestCase
- def setup
- super
- skip "sandbox not implemented" unless Sandbox.available?
- @sandbox = Sandbox.new
- @dir = Pathname.new(mktmpdir)
- @file = @dir/"foo"
- end
-
- def test_formula?
- f = formula { url "foo-1.0" }
- f2 = formula { url "bar-1.0" }
- f2.stubs(:tap).returns(Tap.fetch("test/tap"))
-
- ENV["HOMEBREW_SANDBOX"] = "1"
- assert Sandbox.formula?(f),
- "Formulae should be sandboxed if --sandbox was passed."
-
- ENV.delete("HOMEBREW_SANDBOX")
- assert Sandbox.formula?(f),
- "Formulae should be sandboxed if in a sandboxed tap."
- refute Sandbox.formula?(f2),
- "Formulae should not be sandboxed if not in a sandboxed tap."
- end
-
- def test_test?
- ENV.delete("HOMEBREW_NO_SANDBOX")
- assert Sandbox.test?,
- "Tests should be sandboxed unless --no-sandbox was passed."
- end
-
- def test_allow_write
- @sandbox.allow_write @file
- @sandbox.exec "touch", @file
- assert_predicate @file, :exist?
- end
-
- def test_deny_write
- shutup do
- assert_raises(ErrorDuringExecution) { @sandbox.exec "touch", @file }
- end
- refute_predicate @file, :exist?
- end
-
- def test_complains_on_failure
- Utils.expects(popen_read: "foo")
- ENV["HOMEBREW_VERBOSE"] = "1"
- out, _err = capture_io do
- assert_raises(ErrorDuringExecution) { @sandbox.exec "false" }
- end
- assert_match "foo", out
- end
-
- def test_ignores_bogus_python_error
- with_bogus_error = <<-EOS.undent
- foo
- Mar 17 02:55:06 sandboxd[342]: Python(49765) deny file-write-unlink /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/errors.pyc
- bar
- EOS
- Utils.expects(popen_read: with_bogus_error)
- ENV["HOMEBREW_VERBOSE"] = "1"
- out, _err = capture_io do
- assert_raises(ErrorDuringExecution) { @sandbox.exec "false" }
- end
- refute_predicate out, :empty?
- assert_match "foo", out
- assert_match "bar", out
- refute_match "Python", out
- end
-end
diff --git a/Library/Homebrew/test/x11_requirement_spec.rb b/Library/Homebrew/test/x11_requirement_spec.rb
index f60c8bffe..bc02dc75a 100644
--- a/Library/Homebrew/test/x11_requirement_spec.rb
+++ b/Library/Homebrew/test/x11_requirement_spec.rb
@@ -33,4 +33,17 @@ describe X11Requirement do
subject.modify_build_environment
end
end
+
+ describe "#satisfied?", :needs_macos do
+ it "returns true if X11 is installed" do
+ expect(MacOS::XQuartz).to receive(:version).and_return("2.7.5")
+ expect(MacOS::XQuartz).to receive(:installed?).and_return(true)
+ expect(subject).to be_satisfied
+ end
+
+ it "returns false if X11 is not installed" do
+ expect(MacOS::XQuartz).to receive(:installed?).and_return(false)
+ expect(subject).not_to be_satisfied
+ end
+ end
end