aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test
diff options
context:
space:
mode:
authorBob W. Hogg2016-12-04 18:43:46 -0800
committerBob W. Hogg2017-02-15 21:35:26 -0800
commit5a214de68d52eef0bbf99f740dc22c721dd02233 (patch)
tree6f52771110b75e6c4dbb1bf61cc65b8bf6dfc032 /Library/Homebrew/test
parent5a2a0638028ee49991e404c1bd6397c10659474b (diff)
downloadbrew-5a214de68d52eef0bbf99f740dc22c721dd02233.tar.bz2
java_requirement: port to Linux and refactor
Split the core requirement class into generic, Linux-specific, and macOS-specific parts. Additionally, the Linux version is now able to detect Java versions (the previous Linuxbrew implementation was only able to detect if Java was present at all.)
Diffstat (limited to 'Library/Homebrew/test')
-rw-r--r--Library/Homebrew/test/java_requirement_test.rb50
-rw-r--r--Library/Homebrew/test/os/mac/java_requirement_test.rb31
2 files changed, 81 insertions, 0 deletions
diff --git a/Library/Homebrew/test/java_requirement_test.rb b/Library/Homebrew/test/java_requirement_test.rb
new file mode 100644
index 000000000..d0b51f92c
--- /dev/null
+++ b/Library/Homebrew/test/java_requirement_test.rb
@@ -0,0 +1,50 @@
+require "testing_env"
+require "requirements/java_requirement"
+
+class JavaRequirementTests < Homebrew::TestCase
+ def setup
+ super
+ ENV["JAVA_HOME"] = nil
+ end
+
+ def test_message
+ a = JavaRequirement.new([])
+ assert_match(/Java is required to install this formula./, a.message)
+ end
+
+ def test_inspect
+ a = JavaRequirement.new(%w[1.7+])
+ assert_equal a.inspect, '#<JavaRequirement: "java" [] version="1.7+">'
+ end
+
+ def test_display_s
+ x = JavaRequirement.new([])
+ assert_equal x.display_s, "java"
+ y = JavaRequirement.new(%w[1.8])
+ assert_equal y.display_s, "java = 1.8"
+ z = JavaRequirement.new(%w[1.8+])
+ assert_equal z.display_s, "java >= 1.8"
+ end
+
+ def test_satisfied?
+ a = JavaRequirement.new(%w[1.8])
+ File.stubs(:executable?).returns(false)
+ refute_predicate a, :satisfied?
+
+ b = JavaRequirement.new([])
+ b.stubs(:preferred_java).returns(Pathname.new("/usr/bin/java"))
+ assert_predicate b, :satisfied?
+
+ c = JavaRequirement.new(%w[1.7+])
+ c.stubs(:possible_javas).returns([Pathname.new("/usr/bin/java")])
+ Utils.stubs(:popen_read).returns('java version "1.6.0_5"')
+ refute_predicate c, :satisfied?
+ Utils.stubs(:popen_read).returns('java version "1.8.0_5"')
+ assert_predicate c, :satisfied?
+
+ d = JavaRequirement.new(%w[1.7])
+ d.stubs(:possible_javas).returns([Pathname.new("/usr/bin/java")])
+ Utils.stubs(:popen_read).returns('java version "1.8.0_5"')
+ refute_predicate d, :satisfied?
+ end
+end
diff --git a/Library/Homebrew/test/os/mac/java_requirement_test.rb b/Library/Homebrew/test/os/mac/java_requirement_test.rb
new file mode 100644
index 000000000..83c1af95c
--- /dev/null
+++ b/Library/Homebrew/test/os/mac/java_requirement_test.rb
@@ -0,0 +1,31 @@
+require "testing_env"
+require "requirements/java_requirement"
+require "fileutils"
+
+class OSMacJavaRequirementTests < Homebrew::TestCase
+ def setup
+ super
+ @java_req = JavaRequirement.new(%w[1.8])
+ @tmp_java_home = mktmpdir
+ @tmp_pathname = Pathname.new(@tmp_java_home)
+ FileUtils.mkdir @tmp_pathname/"bin"
+ FileUtils.touch @tmp_pathname/"bin/java"
+ @java_req.stubs(:preferred_java).returns(@tmp_pathname/"bin/java")
+ @java_req.satisfied?
+ end
+
+ def test_java_env_apple
+ ENV.expects(:prepend_path)
+ ENV.expects(:append_to_cflags)
+ @java_req.modify_build_environment
+ assert_equal ENV["JAVA_HOME"], @tmp_java_home
+ end
+
+ def test_java_env_oracle
+ FileUtils.mkdir @tmp_pathname/"include"
+ ENV.expects(:prepend_path)
+ ENV.expects(:append_to_cflags).twice
+ @java_req.modify_build_environment
+ assert_equal ENV["JAVA_HOME"], @tmp_java_home
+ end
+end