
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.)
51 lines
1.5 KiB
Ruby
51 lines
1.5 KiB
Ruby
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
|