diff --git a/Library/Homebrew/dev-cmd/tests.rb b/Library/Homebrew/dev-cmd/tests.rb index c96b19a1d7..3edc12ed5b 100644 --- a/Library/Homebrew/dev-cmd/tests.rb +++ b/Library/Homebrew/dev-cmd/tests.rb @@ -113,6 +113,7 @@ module Homebrew end unless OS.linux? + args << "--tag" << "~needs_linux" files = files.reject { |p| p =~ %r{^test/os/linux(/.*|_spec\.rb)$} } end diff --git a/Library/Homebrew/extend/os/mac/requirements/non_binary_osxfuse_requirement.rb b/Library/Homebrew/extend/os/mac/requirements/non_binary_osxfuse_requirement.rb new file mode 100644 index 0000000000..39d638cf88 --- /dev/null +++ b/Library/Homebrew/extend/os/mac/requirements/non_binary_osxfuse_requirement.rb @@ -0,0 +1,15 @@ +require "requirement" + +class NonBinaryOsxfuseRequirement < Requirement + fatal true + satisfy(build_env: false) do + HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? + end + + def message + <<~EOS + osxfuse is already installed from the binary distribution and + conflicts with this formula. + EOS + end +end diff --git a/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb index 89c2b8786b..f6ca8cfc28 100644 --- a/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb +++ b/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb @@ -19,15 +19,3 @@ class OsxfuseRequirement < Requirement end end end - -class NonBinaryOsxfuseRequirement < Requirement - fatal true - satisfy(build_env: false) { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? } - - def message - <<~EOS - osxfuse is already installed from the binary distribution and - conflicts with this formula. - EOS - end -end diff --git a/Library/Homebrew/extend/os/requirements/non_binary_osxfuse_requirement.rb b/Library/Homebrew/extend/os/requirements/non_binary_osxfuse_requirement.rb new file mode 100644 index 0000000000..099f29382c --- /dev/null +++ b/Library/Homebrew/extend/os/requirements/non_binary_osxfuse_requirement.rb @@ -0,0 +1,3 @@ +if OS.mac? + require "extend/os/mac/requirements/non_binary_osxfuse_requirement" +end diff --git a/Library/Homebrew/requirements/non_binary_osxfuse_requirement.rb b/Library/Homebrew/requirements/non_binary_osxfuse_requirement.rb new file mode 100644 index 0000000000..bb7788f487 --- /dev/null +++ b/Library/Homebrew/requirements/non_binary_osxfuse_requirement.rb @@ -0,0 +1,7 @@ +require "requirement" + +class NonBinaryOsxfuseRequirement < Requirement + fatal false +end + +require "extend/os/requirements/non_binary_osxfuse_requirement" diff --git a/Library/Homebrew/requirements/osxfuse_requirement.rb b/Library/Homebrew/requirements/osxfuse_requirement.rb index 15da16c59c..2e67a4b050 100644 --- a/Library/Homebrew/requirements/osxfuse_requirement.rb +++ b/Library/Homebrew/requirements/osxfuse_requirement.rb @@ -5,8 +5,4 @@ class OsxfuseRequirement < Requirement fatal true end -class NonBinaryOsxfuseRequirement < Requirement - fatal false -end - require "extend/os/requirements/osxfuse_requirement" diff --git a/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb b/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb deleted file mode 100644 index c45af2fa79..0000000000 --- a/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require "requirements/osxfuse_requirement" - -describe OsxfuseRequirement do - subject { described_class.new([]) } - - describe "#message" do - its(:message) { is_expected.to match("libfuse is required to install this formula") } - end -end diff --git a/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb b/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb deleted file mode 100644 index 06d3d885e6..0000000000 --- a/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb +++ /dev/null @@ -1,36 +0,0 @@ -require "requirements/osxfuse_requirement" - -describe OsxfuseRequirement do - subject { described_class.new([]) } - - describe "::binary_osxfuse_installed?" do - it "returns false if fuse.h does not exist" do - allow(File).to receive(:exist?).and_return(false) - expect(described_class).not_to be_binary_osxfuse_installed - end - - it "returns false if osxfuse include directory is a symlink" do - allow(File).to receive(:exist?).and_return(true) - allow(File).to receive(:symlink?).and_return(true) - expect(described_class).not_to be_binary_osxfuse_installed - end - end - - describe "environment" do - it "adds the fuse directories to the appropriate paths" do - expect(ENV).to receive(:append_path).with("PKG_CONFIG_PATH", any_args) - expect(ENV).to receive(:append_path).with("HOMEBREW_LIBRARY_PATHS", any_args) - expect(ENV).to receive(:append_path).with("HOMEBREW_INCLUDE_PATHS", any_args) - subject.modify_build_environment - end - end -end - -describe NonBinaryOsxfuseRequirement do - subject { described_class.new([]) } - - describe "#message" do - msg = /osxfuse is already installed from the binary distribution/ - its(:message) { is_expected.to match(msg) } - end -end diff --git a/Library/Homebrew/test/requirements/non_binary_osxfuse_requirement_spec.rb b/Library/Homebrew/test/requirements/non_binary_osxfuse_requirement_spec.rb new file mode 100644 index 0000000000..84fb448740 --- /dev/null +++ b/Library/Homebrew/test/requirements/non_binary_osxfuse_requirement_spec.rb @@ -0,0 +1,9 @@ +require "requirements/non_binary_osxfuse_requirement" + +describe NonBinaryOsxfuseRequirement, :needs_macos do + subject { described_class.new([]) } + + describe "#message" do + its(:message) { is_expected.to match("osxfuse is already installed from the binary distribution") } + end +end diff --git a/Library/Homebrew/test/requirements/osxfuse_requirement_spec.rb b/Library/Homebrew/test/requirements/osxfuse_requirement_spec.rb new file mode 100644 index 0000000000..59a3553077 --- /dev/null +++ b/Library/Homebrew/test/requirements/osxfuse_requirement_spec.rb @@ -0,0 +1,50 @@ +require "requirements/osxfuse_requirement" + +describe OsxfuseRequirement do + subject(:requirement) { described_class.new([]) } + + describe "::binary_osxfuse_installed?", :needs_macos do + alias_matcher :have_binary_osxfuse_installed, :be_binary_osxfuse_installed + + it "returns false if fuse.h does not exist" do + allow(File).to receive(:exist?).and_return(false) + expect(described_class).not_to have_binary_osxfuse_installed + end + + it "returns false if osxfuse include directory is a symlink" do + allow(File).to receive(:exist?).and_return(true) + allow(File).to receive(:symlink?).and_return(true) + expect(described_class).not_to have_binary_osxfuse_installed + end + end + + describe "#modify_build_environment", :needs_macos do + it "adds the fuse directories to PKG_CONFIG_PATH" do + allow(ENV).to receive(:append_path) + requirement.modify_build_environment + expect(ENV).to have_received(:append_path).with("PKG_CONFIG_PATH", any_args) + end + + it "adds the fuse directories to HOMEBREW_LIBRARY_PATHS" do + allow(ENV).to receive(:append_path) + requirement.modify_build_environment + expect(ENV).to have_received(:append_path).with("HOMEBREW_LIBRARY_PATHS", any_args) + end + + it "adds the fuse directories to HOMEBREW_INCLUDE_PATHS" do + allow(ENV).to receive(:append_path) + requirement.modify_build_environment + expect(ENV).to have_received(:append_path).with("HOMEBREW_INCLUDE_PATHS", any_args) + end + end + + describe "#message" do + it "prompts for installation of 'libfuse' on Linux", :needs_linux do + expect(requirement.message).to match("libfuse is required to install this formula") + end + + it "prompts for installation of 'osxFuse' on macOS", :needs_macos do + expect(requirement.message).to match("osxfuse.github.io") + end + end +end