Skip to content
Snippets Groups Projects
Commit 5e2d4d52 authored by Markus Reiter's avatar Markus Reiter
Browse files

Refactor `OsxfuseRequirement` spec.

parent b91628a6
No related branches found
No related tags found
No related merge requests found
Showing
with 85 additions and 61 deletions
......@@ -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
......
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
......@@ -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
if OS.mac?
require "extend/os/mac/requirements/non_binary_osxfuse_requirement"
end
require "requirement"
class NonBinaryOsxfuseRequirement < Requirement
fatal false
end
require "extend/os/requirements/non_binary_osxfuse_requirement"
......@@ -5,8 +5,4 @@ class OsxfuseRequirement < Requirement
fatal true
end
class NonBinaryOsxfuseRequirement < Requirement
fatal false
end
require "extend/os/requirements/osxfuse_requirement"
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
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
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
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment