aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/cxxstdlib_spec.rb
diff options
context:
space:
mode:
authorMarkus Reiter2017-02-15 15:38:43 +0100
committerMarkus Reiter2017-02-15 19:22:26 +0100
commitb89c0f16dd5e5d75e6e72187bf2956ce456c8090 (patch)
treeae9ededf4a98ce4904f382581ab01dad982a7a12 /Library/Homebrew/test/cxxstdlib_spec.rb
parentec27b69ba2717ccf2c5fcd3c1e73a5f884a0a6a6 (diff)
downloadbrew-b89c0f16dd5e5d75e6e72187bf2956ce456c8090.tar.bz2
Convert CxxStdlib test to spec.
Diffstat (limited to 'Library/Homebrew/test/cxxstdlib_spec.rb')
-rw-r--r--Library/Homebrew/test/cxxstdlib_spec.rb68
1 files changed, 68 insertions, 0 deletions
diff --git a/Library/Homebrew/test/cxxstdlib_spec.rb b/Library/Homebrew/test/cxxstdlib_spec.rb
new file mode 100644
index 000000000..dd2e4e1c6
--- /dev/null
+++ b/Library/Homebrew/test/cxxstdlib_spec.rb
@@ -0,0 +1,68 @@
+require "formula"
+require "cxxstdlib"
+
+describe CxxStdlib do
+ let(:clang) { CxxStdlib.create(:libstdcxx, :clang) }
+ let(:gcc) { CxxStdlib.create(:libstdcxx, :gcc) }
+ let(:gcc40) { CxxStdlib.create(:libstdcxx, :gcc_4_0) }
+ let(:gcc42) { CxxStdlib.create(:libstdcxx, :gcc_4_2) }
+ let(:gcc48) { CxxStdlib.create(:libstdcxx, "gcc-4.8") }
+ let(:gcc49) { CxxStdlib.create(:libstdcxx, "gcc-4.9") }
+ let(:lcxx) { CxxStdlib.create(:libcxx, :clang) }
+ let(:purec) { CxxStdlib.create(nil, :clang) }
+
+ describe "#compatible_with?" do
+ specify "Apple libstdcxx intercompatibility" do
+ expect(clang).to be_compatible_with(gcc)
+ expect(clang).to be_compatible_with(gcc42)
+ end
+
+ specify "compatibility with itself" do
+ expect(gcc).to be_compatible_with(gcc)
+ expect(gcc48).to be_compatible_with(gcc48)
+ expect(clang).to be_compatible_with(clang)
+ end
+
+ specify "Apple/GNU libstdcxx incompatibility" do
+ expect(clang).not_to be_compatible_with(gcc48)
+ expect(gcc48).not_to be_compatible_with(clang)
+ end
+
+ specify "GNU cross-version incompatibility" do
+ expect(gcc48).not_to be_compatible_with(gcc49)
+ expect(gcc49).not_to be_compatible_with(gcc48)
+ end
+
+ specify "libstdcxx and libcxx incompatibility" do
+ expect(clang).not_to be_compatible_with(lcxx)
+ expect(lcxx).not_to be_compatible_with(clang)
+ end
+
+ specify "compatibility for non-cxx software" do
+ expect(purec).to be_compatible_with(clang)
+ expect(clang).to be_compatible_with(purec)
+ expect(purec).to be_compatible_with(purec)
+ expect(purec).to be_compatible_with(gcc48)
+ expect(gcc48).to be_compatible_with(purec)
+ end
+ end
+
+ describe "#apple_compiler?" do
+ it "returns true for Apple compilers" do
+ expect(clang).to be_an_apple_compiler
+ expect(gcc).to be_an_apple_compiler
+ expect(gcc42).to be_an_apple_compiler
+ end
+
+ it "returns false for non-Apple compilers" do
+ expect(gcc48).not_to be_an_apple_compiler
+ end
+ end
+
+ describe "#type_string" do
+ specify "formatting" do
+ expect(clang.type_string).to eq("libstdc++")
+ expect(lcxx.type_string).to eq("libc++")
+ end
+ end
+end