brew/Library/Homebrew/test/compiler_selector_spec.rb
Mike McQuaid 1aa8ad09e2
Deprecate macOS versions below Mavericks
And remove all dead/unneeded code.
2019-01-27 12:27:47 +00:00

51 lines
1.3 KiB
Ruby

require "compilers"
require "software_spec"
describe CompilerSelector do
subject { described_class.new(software_spec, versions, compilers) }
let(:compilers) { [:clang, :gnu] }
let(:software_spec) { SoftwareSpec.new }
let(:cc) { :clang }
let(:versions) do
double(
llvm_build_version: Version::NULL,
clang_build_version: Version.create("600"),
)
end
before do
allow(versions).to receive(:non_apple_gcc_version) do |name|
case name
when "gcc-7" then Version.create("7.1")
when "gcc-6" then Version.create("6.1")
else Version::NULL
end
end
end
describe "#compiler" do
it "defaults to cc" do
expect(subject.compiler).to eq(cc)
end
it "returns clang if it fails with non-Apple gcc" do
software_spec.fails_with(gcc: "7")
expect(subject.compiler).to eq(:clang)
end
it "still returns gcc-7 if it fails with gcc without a specific version" do
software_spec.fails_with(:clang)
expect(subject.compiler).to eq("gcc-7")
end
it "raises an error when gcc or llvm is missing" do
software_spec.fails_with(:clang)
software_spec.fails_with(gcc: "7")
software_spec.fails_with(gcc: "6")
expect { subject.compiler }.to raise_error(CompilerSelectionError)
end
end
end