diff options
| author | Markus Reiter | 2016-11-13 22:00:15 +0100 |
|---|---|---|
| committer | Markus Reiter | 2016-11-16 23:52:38 +0100 |
| commit | 7457af2b231528e1287281f6cfe651600d5f3f5d (patch) | |
| tree | 0da872ad2906fad53f176e05056181e0c6ccceaa /Library/Homebrew/test/os/mac | |
| parent | 9dc1f8f3cd405bc299eb688075687f951afd3e13 (diff) | |
| download | brew-7457af2b231528e1287281f6cfe651600d5f3f5d.tar.bz2 | |
Move test files back directly to `test/`.
Diffstat (limited to 'Library/Homebrew/test/os/mac')
| -rw-r--r-- | Library/Homebrew/test/os/mac/blacklist_test.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/bottle_collector_test.rb | 26 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/bottle_tag_test.rb | 79 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/dependency_collector_test.rb | 57 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/diagnostic_test.rb | 49 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/keg_test.rb | 69 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/language_test.rb | 19 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/mach_test.rb | 208 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/version_test.rb | 53 | ||||
| -rw-r--r-- | Library/Homebrew/test/os/mac/x11_requirement_test.rb | 13 |
10 files changed, 585 insertions, 0 deletions
diff --git a/Library/Homebrew/test/os/mac/blacklist_test.rb b/Library/Homebrew/test/os/mac/blacklist_test.rb new file mode 100644 index 000000000..26dd84ed9 --- /dev/null +++ b/Library/Homebrew/test/os/mac/blacklist_test.rb @@ -0,0 +1,12 @@ +require "testing_env" +require "blacklist" + +class OSMacBlacklistTests < Homebrew::TestCase + def assert_blacklisted(s) + assert blacklisted?(s), "'#{s}' should be blacklisted" + end + + def test_xcode + %w[xcode Xcode].each { |s| assert_blacklisted s } + end +end diff --git a/Library/Homebrew/test/os/mac/bottle_collector_test.rb b/Library/Homebrew/test/os/mac/bottle_collector_test.rb new file mode 100644 index 000000000..2f88050ae --- /dev/null +++ b/Library/Homebrew/test/os/mac/bottle_collector_test.rb @@ -0,0 +1,26 @@ +require "testing_env" +require "utils/bottles" + +class OSMacBottleCollectorTests < Homebrew::TestCase + def setup + @collector = Utils::Bottles::Collector.new + end + + def checksum_for(tag) + @collector.fetch_checksum_for(tag) + end + + def test_collector_finds_or_later_tags + @collector[:lion_or_later] = "foo" + assert_equal ["foo", :lion_or_later], checksum_for(:mountain_lion) + assert_nil checksum_for(:snow_leopard) + end + + def test_collector_finds_altivec_tags + @collector[:tiger_altivec] = "foo" + assert_equal ["foo", :tiger_altivec], checksum_for(:tiger_g4) + assert_equal ["foo", :tiger_altivec], checksum_for(:tiger_g4e) + assert_equal ["foo", :tiger_altivec], checksum_for(:tiger_g5) + assert_nil checksum_for(:tiger_g3) + end +end diff --git a/Library/Homebrew/test/os/mac/bottle_tag_test.rb b/Library/Homebrew/test/os/mac/bottle_tag_test.rb new file mode 100644 index 000000000..996bd4d53 --- /dev/null +++ b/Library/Homebrew/test/os/mac/bottle_tag_test.rb @@ -0,0 +1,79 @@ +require "testing_env" +require "utils/bottles" + +class OSMacBottleTagTests < Homebrew::TestCase + def test_tag_tiger_ppc + MacOS.stubs(:version).returns(MacOS::Version.new("10.4")) + Hardware::CPU.stubs(:type).returns(:ppc) + Hardware::CPU.stubs(:family).returns(:foo) + MacOS.stubs(:prefer_64_bit?).returns(false) + assert_equal :tiger_foo, Utils::Bottles.tag + end + + def test_tag_tiger_intel + MacOS.stubs(:version).returns(MacOS::Version.new("10.4")) + Hardware::CPU.stubs(:type).returns(:intel) + MacOS.stubs(:prefer_64_bit?).returns(false) + assert_equal :tiger, Utils::Bottles.tag + end + + def test_tag_tiger_ppc_64 + MacOS.stubs(:version).returns(MacOS::Version.new("10.4")) + Hardware::CPU.stubs(:type).returns(:ppc) + Hardware::CPU.stubs(:family).returns(:g5) + MacOS.stubs(:prefer_64_bit?).returns(true) + assert_equal :tiger_g5_64, Utils::Bottles.tag + end + + # Note that this will probably never be used + def test_tag_tiger_intel_64 + MacOS.stubs(:version).returns(MacOS::Version.new("10.4")) + Hardware::CPU.stubs(:type).returns(:intel) + MacOS.stubs(:prefer_64_bit?).returns(true) + assert_equal :tiger_64, Utils::Bottles.tag + end + + def test_tag_leopard_intel + MacOS.stubs(:version).returns(MacOS::Version.new("10.5")) + Hardware::CPU.stubs(:type).returns(:intel) + MacOS.stubs(:prefer_64_bit?).returns(false) + assert_equal :leopard, Utils::Bottles.tag + end + + def test_tag_leopard_ppc_64 + MacOS.stubs(:version).returns(MacOS::Version.new("10.5")) + Hardware::CPU.stubs(:type).returns(:ppc) + Hardware::CPU.stubs(:family).returns(:g5) + MacOS.stubs(:prefer_64_bit?).returns(true) + assert_equal :leopard_g5_64, Utils::Bottles.tag + end + + def test_tag_leopard_intel_64 + MacOS.stubs(:version).returns(MacOS::Version.new("10.5")) + Hardware::CPU.stubs(:type).returns(:intel) + MacOS.stubs(:prefer_64_bit?).returns(true) + assert_equal :leopard_64, Utils::Bottles.tag + end + + def test_tag_snow_leopard_32 + MacOS.stubs(:version).returns(MacOS::Version.new("10.6")) + Hardware::CPU.stubs(:is_64_bit?).returns(false) + assert_equal :snow_leopard_32, Utils::Bottles.tag + end + + def test_tag_snow_leopard_64 + MacOS.stubs(:version).returns(MacOS::Version.new("10.6")) + Hardware::CPU.stubs(:is_64_bit?).returns(true) + assert_equal :snow_leopard, Utils::Bottles.tag + end + + def test_tag_lion + MacOS.stubs(:version).returns(MacOS::Version.new("10.7")) + assert_equal :lion, Utils::Bottles.tag + end + + def test_tag_mountain_lion + MacOS.stubs(:version).returns(MacOS::Version.new("10.8")) + assert_equal :mountain_lion, Utils::Bottles.tag + end +end diff --git a/Library/Homebrew/test/os/mac/dependency_collector_test.rb b/Library/Homebrew/test/os/mac/dependency_collector_test.rb new file mode 100644 index 000000000..4fdf3ebe4 --- /dev/null +++ b/Library/Homebrew/test/os/mac/dependency_collector_test.rb @@ -0,0 +1,57 @@ +require "testing_env" +require "dependency_collector" + +class OSMacDependencyCollectorTests < Homebrew::TestCase + def find_dependency(name) + @d.deps.find { |dep| dep.name == name } + end + + def setup + @d = DependencyCollector.new + end + + def teardown + DependencyCollector.clear_cache + end + + def test_tar_needs_xz_dependency + MacOS.stubs(:version).returns(MacOS::Version.new("10.9")) + refute DependencyCollector.tar_needs_xz_dependency? + end + + def test_ld64_dep_pre_leopard + MacOS.stubs(:version).returns(MacOS::Version.new("10.4")) + assert_equal LD64Dependency.new, @d.build(:ld64) + end + + def test_ld64_dep_leopard_or_newer + MacOS.stubs(:version).returns(MacOS::Version.new("10.5")) + assert_nil @d.build(:ld64) + end + + def test_ant_dep_mavericks_or_newer + MacOS.stubs(:version).returns(MacOS::Version.new("10.9")) + @d.add ant: :build + assert_equal find_dependency("ant"), Dependency.new("ant", [:build]) + end + + def test_ant_dep_pre_mavericks + MacOS.stubs(:version).returns(MacOS::Version.new("10.7")) + @d.add ant: :build + assert_nil find_dependency("ant") + end + + def test_resource_dep_xz_pre_mavericks + MacOS.stubs(:version).returns(MacOS::Version.new("10.8")) + resource = Resource.new + resource.url("http://example.com/foo.tar.xz") + assert_equal Dependency.new("xz", [:build]), @d.add(resource) + end + + def test_resource_dep_xz_mavericks_or_newer + MacOS.stubs(:version).returns(MacOS::Version.new("10.9")) + resource = Resource.new + resource.url("http://example.com/foo.tar.xz") + assert_nil @d.add(resource) + end +end diff --git a/Library/Homebrew/test/os/mac/diagnostic_test.rb b/Library/Homebrew/test/os/mac/diagnostic_test.rb new file mode 100644 index 000000000..655aa1d46 --- /dev/null +++ b/Library/Homebrew/test/os/mac/diagnostic_test.rb @@ -0,0 +1,49 @@ +require "testing_env" +require "fileutils" +require "pathname" +require "diagnostic" + +class OSMacDiagnosticChecksTest < Homebrew::TestCase + def setup + @env = ENV.to_hash + @checks = Homebrew::Diagnostic::Checks.new + end + + def teardown + ENV.replace(@env) + end + + def test_check_for_other_package_managers + MacOS.stubs(:macports_or_fink).returns ["fink"] + assert_match "You have MacPorts or Fink installed:", + @checks.check_for_other_package_managers + end + + def test_check_for_unsupported_macos + ARGV.stubs(:homebrew_developer?).returns false + OS::Mac.stubs(:prerelease?).returns true + assert_match "We do not provide support for this pre-release version.", + @checks.check_for_unsupported_macos + end + + def test_check_for_unsupported_curl_vars + MacOS.stubs(:version).returns OS::Mac::Version.new("10.10") + ENV["SSL_CERT_DIR"] = "/some/path" + + assert_match "SSL_CERT_DIR support was removed from Apple's curl.", + @checks.check_for_unsupported_curl_vars + end + + def test_check_for_beta_xquartz + MacOS::XQuartz.stubs(:version).returns("2.7.10_beta2") + assert_match "The following beta release of XQuartz is installed: 2.7.10_beta2", @checks.check_for_beta_xquartz + end + + def test_check_xcode_8_without_clt_on_el_capitan + MacOS.stubs(:version).returns OS::Mac::Version.new("10.11") + MacOS::Xcode.stubs(:installed?).returns true + MacOS::Xcode.stubs(:version).returns "8.0" + MacOS::Xcode.stubs(:without_clt?).returns true + assert_match "You have Xcode 8 installed without the CLT", @checks.check_xcode_8_without_clt_on_el_capitan + end +end diff --git a/Library/Homebrew/test/os/mac/keg_test.rb b/Library/Homebrew/test/os/mac/keg_test.rb new file mode 100644 index 000000000..e79cbc921 --- /dev/null +++ b/Library/Homebrew/test/os/mac/keg_test.rb @@ -0,0 +1,69 @@ +require "testing_env" +require "keg" +require "stringio" + +class OSMacLinkTests < Homebrew::TestCase + include FileUtils + + def setup + keg = HOMEBREW_CELLAR.join("foo", "1.0") + keg.join("bin").mkpath + + %w[hiworld helloworld goodbye_cruel_world].each do |file| + touch keg.join("bin", file) + end + + @keg = Keg.new(keg) + @dst = HOMEBREW_PREFIX.join("bin", "helloworld") + @nonexistent = Pathname.new("/some/nonexistent/path") + + @mode = OpenStruct.new + + @old_stdout = $stdout + $stdout = StringIO.new + + mkpath HOMEBREW_PREFIX/"bin" + mkpath HOMEBREW_PREFIX/"lib" + end + + def teardown + @keg.unlink + @keg.uninstall + + $stdout = @old_stdout + + rmtree HOMEBREW_PREFIX/"bin" + rmtree HOMEBREW_PREFIX/"lib" + end + + def test_mach_o_files_skips_hardlinks + a = HOMEBREW_CELLAR/"a/1.0" + (a/"lib").mkpath + FileUtils.cp dylib_path("i386"), a/"lib/i386.dylib" + FileUtils.ln a/"lib/i386.dylib", a/"lib/i386_link.dylib" + + keg = Keg.new(a) + keg.link + + assert_equal 1, keg.mach_o_files.size + ensure + keg.unlink + keg.uninstall + end + + def test_mach_o_files_isnt_confused_by_symlinks + a = HOMEBREW_CELLAR/"a/1.0" + (a/"lib").mkpath + FileUtils.cp dylib_path("i386"), a/"lib/i386.dylib" + FileUtils.ln a/"lib/i386.dylib", a/"lib/i386_link.dylib" + FileUtils.ln_s a/"lib/i386.dylib", a/"lib/1.dylib" + + keg = Keg.new(a) + keg.link + + assert_equal 1, keg.mach_o_files.size + ensure + keg.unlink + keg.uninstall + end +end diff --git a/Library/Homebrew/test/os/mac/language_test.rb b/Library/Homebrew/test/os/mac/language_test.rb new file mode 100644 index 000000000..e328db5e0 --- /dev/null +++ b/Library/Homebrew/test/os/mac/language_test.rb @@ -0,0 +1,19 @@ +require "testing_env" +require "locale" +require "os/mac" + +class OSMacLanguageTests < Homebrew::TestCase + def test_languages_format + OS::Mac.languages.each do |language| + assert_nothing_raised do + Locale.parse(language) + end + end + end + + def test_language_format + assert_nothing_raised do + Locale.parse(OS::Mac.language) + end + end +end diff --git a/Library/Homebrew/test/os/mac/mach_test.rb b/Library/Homebrew/test/os/mac/mach_test.rb new file mode 100644 index 000000000..a42f7316b --- /dev/null +++ b/Library/Homebrew/test/os/mac/mach_test.rb @@ -0,0 +1,208 @@ +require "testing_env" + +class MachOPathnameTests < Homebrew::TestCase + def test_fat_dylib + pn = dylib_path("fat") + assert_predicate pn, :universal? + refute_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + assert_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + assert_equal :universal, pn.arch + end + + def test_i386_dylib + pn = dylib_path("i386") + refute_predicate pn, :universal? + assert_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + assert_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + refute_predicate pn, :mach_o_bundle? + end + + def test_x86_64_dylib + pn = dylib_path("x86_64") + refute_predicate pn, :universal? + refute_predicate pn, :i386? + assert_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + assert_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + refute_predicate pn, :mach_o_bundle? + end + + def test_mach_o_executable + pn = Pathname.new("#{TEST_FIXTURE_DIR}/mach/a.out") + assert_predicate pn, :universal? + refute_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + refute_predicate pn, :dylib? + assert_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + refute_predicate pn, :mach_o_bundle? + end + + def test_fat_bundle + pn = bundle_path("fat") + assert_predicate pn, :universal? + refute_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + refute_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + assert_predicate pn, :mach_o_bundle? + end + + def test_i386_bundle + pn = bundle_path("i386") + refute_predicate pn, :universal? + assert_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + refute_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + assert_predicate pn, :mach_o_bundle? + end + + def test_x86_64_bundle + pn = bundle_path("x86_64") + refute_predicate pn, :universal? + refute_predicate pn, :i386? + assert_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + refute_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + assert_predicate pn, :mach_o_bundle? + end + + def test_non_mach_o + pn = Pathname.new("#{TEST_FIXTURE_DIR}/tarballs/testball-0.1.tbz") + refute_predicate pn, :universal? + refute_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + refute_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + refute_predicate pn, :mach_o_bundle? + assert_equal :dunno, pn.arch + end +end + +class ArchitectureListExtensionTests < MachOPathnameTests + def setup + @archs = [:i386, :x86_64, :ppc7400, :ppc64].extend(ArchitectureListExtension) + end + + def test_architecture_list_extension_universal_checks + assert_predicate @archs, :universal? + assert_predicate @archs, :intel_universal? + assert_predicate @archs, :ppc_universal? + assert_predicate @archs, :cross_universal? + assert_predicate @archs, :fat? + + non_universal = [:i386].extend ArchitectureListExtension + refute_predicate non_universal, :universal? + + intel_only = [:i386, :x86_64].extend ArchitectureListExtension + assert_predicate intel_only, :universal? + refute_predicate intel_only, :ppc_universal? + refute_predicate intel_only, :cross_universal? + + ppc_only = [:ppc970, :ppc64].extend ArchitectureListExtension + assert_predicate ppc_only, :universal? + refute_predicate ppc_only, :intel_universal? + refute_predicate ppc_only, :cross_universal? + + cross = [:ppc7400, :i386].extend ArchitectureListExtension + assert_predicate cross, :universal? + refute_predicate cross, :intel_universal? + refute_predicate cross, :ppc_universal? + end + + def test_architecture_list_extension_massaging_flags + @archs.remove_ppc! + assert_equal 2, @archs.length + assert_match(/-arch i386/, @archs.as_arch_flags) + assert_match(/-arch x86_64/, @archs.as_arch_flags) + end + + def test_architecture_list_arch_flags_methods + pn = dylib_path("fat") + assert_predicate pn.archs, :intel_universal? + assert_equal "-arch x86_64 -arch i386", pn.archs.as_arch_flags + assert_equal "x86_64;i386", pn.archs.as_cmake_arch_flags + end +end + +class TextExecutableTests < Homebrew::TestCase + attr_reader :pn + + def setup + @pn = HOMEBREW_PREFIX.join("an_executable") + end + + def teardown + HOMEBREW_PREFIX.join("an_executable").unlink + end + + def test_simple_shebang + pn.write "#!/bin/sh" + refute_predicate pn, :universal? + refute_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + refute_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + assert_predicate pn, :text_executable? + assert_equal [], pn.archs + assert_equal :dunno, pn.arch + end + + def test_shebang_with_options + pn.write "#! /usr/bin/perl -w" + refute_predicate pn, :universal? + refute_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + refute_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + assert_predicate pn, :text_executable? + assert_equal [], pn.archs + assert_equal :dunno, pn.arch + end + + def test_malformed_shebang + pn.write " #!" + refute_predicate pn, :universal? + refute_predicate pn, :i386? + refute_predicate pn, :x86_64? + refute_predicate pn, :ppc7400? + refute_predicate pn, :ppc64? + refute_predicate pn, :dylib? + refute_predicate pn, :mach_o_executable? + refute_predicate pn, :text_executable? + assert_equal [], pn.archs + assert_equal :dunno, pn.arch + end +end diff --git a/Library/Homebrew/test/os/mac/version_test.rb b/Library/Homebrew/test/os/mac/version_test.rb new file mode 100644 index 000000000..f702c7097 --- /dev/null +++ b/Library/Homebrew/test/os/mac/version_test.rb @@ -0,0 +1,53 @@ +require "testing_env" +require "version" +require "os/mac/version" + +class OSMacVersionTests < Homebrew::TestCase + def setup + @v = MacOS::Version.new("10.7") + end + + def test_compare_with_symbol + assert_operator @v, :>, :snow_leopard + assert_operator @v, :==, :lion + assert_operator @v, :===, :lion + assert_operator @v, :<, :mountain_lion + end + + def test_compare_with_fixnum + assert_operator @v, :>, 10 + assert_operator @v, :<, 11 + end + + def test_compare_with_float + assert_operator @v, :>, 10.6 + assert_operator @v, :==, 10.7 + assert_operator @v, :===, 10.7 + assert_operator @v, :<, 10.8 + end + + def test_compare_with_string + assert_operator @v, :>, "10.6" + assert_operator @v, :==, "10.7" + assert_operator @v, :===, "10.7" + assert_operator @v, :<, "10.8" + end + + def test_compare_with_version + assert_operator @v, :>, Version.create("10.6") + assert_operator @v, :==, Version.create("10.7") + assert_operator @v, :===, Version.create("10.7") + assert_operator @v, :<, Version.create("10.8") + end + + def test_from_symbol + assert_equal @v, MacOS::Version.from_symbol(:lion) + assert_raises(ArgumentError) { MacOS::Version.from_symbol(:foo) } + end + + def test_pretty_name + assert_equal "El Capitan", MacOS::Version.new("10.11").pretty_name + assert_equal "Mountain Lion", MacOS::Version.new("10.8").pretty_name + assert_equal "Yosemite", MacOS::Version.new("10.10").pretty_name + end +end diff --git a/Library/Homebrew/test/os/mac/x11_requirement_test.rb b/Library/Homebrew/test/os/mac/x11_requirement_test.rb new file mode 100644 index 000000000..102937cb5 --- /dev/null +++ b/Library/Homebrew/test/os/mac/x11_requirement_test.rb @@ -0,0 +1,13 @@ +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 |
