diff --git a/Library/Homebrew/extend/os/language/java.rb b/Library/Homebrew/extend/os/language/java.rb new file mode 100644 index 0000000000..3c1c0372b3 --- /dev/null +++ b/Library/Homebrew/extend/os/language/java.rb @@ -0,0 +1,4 @@ +# typed: strict +# frozen_string_literal: true + +require "extend/os/mac/language/java" if OS.mac? diff --git a/Library/Homebrew/extend/os/mac/language/java.rb b/Library/Homebrew/extend/os/mac/language/java.rb new file mode 100644 index 0000000000..c7a9a01903 --- /dev/null +++ b/Library/Homebrew/extend/os/mac/language/java.rb @@ -0,0 +1,10 @@ +# typed: true +# frozen_string_literal: true + +module Language + module Java + def self.java_home(version = nil) + find_openjdk_formula(version)&.opt_libexec&.join("openjdk.jdk/Contents/Home") + end + end +end diff --git a/Library/Homebrew/language/java.rb b/Library/Homebrew/language/java.rb index 6b019a6658..bea3b6fd92 100644 --- a/Library/Homebrew/language/java.rb +++ b/Library/Homebrew/language/java.rb @@ -45,3 +45,5 @@ module Language end end end + +require "extend/os/language/java" diff --git a/Library/Homebrew/test/language/java_spec.rb b/Library/Homebrew/test/language/java_spec.rb index bd41accf0f..fb68cd25c4 100644 --- a/Library/Homebrew/test/language/java_spec.rb +++ b/Library/Homebrew/test/language/java_spec.rb @@ -18,12 +18,22 @@ describe Language::Java do end describe "::java_home" do - it "returns valid JAVA_HOME if version is specified" do + it "returns valid JAVA_HOME if version is specified", :needs_macos do + java_home = described_class.java_home("1.8+") + expect(java_home).to eql(f.opt_libexec/"openjdk.jdk/Contents/Home") + end + + it "returns valid JAVA_HOME if version is not specified", :needs_macos do + java_home = described_class.java_home + expect(java_home).to eql(f.opt_libexec/"openjdk.jdk/Contents/Home") + end + + it "returns valid JAVA_HOME if version is specified", :needs_linux do java_home = described_class.java_home("1.8+") expect(java_home).to eql(f.opt_libexec) end - it "returns valid JAVA_HOME if version is not specified" do + it "returns valid JAVA_HOME if version is not specified", :needs_linux do java_home = described_class.java_home expect(java_home).to eql(f.opt_libexec) end @@ -32,24 +42,24 @@ describe Language::Java do describe "::java_home_env" do it "returns java_home path if version specified" do java_home_env = described_class.java_home_env("1.8+") - expect(java_home_env[:JAVA_HOME]).to eql(f.opt_libexec.to_s) + expect(java_home_env[:JAVA_HOME]).to include(f.opt_libexec.to_s) end it "returns java_home path if version is not specified" do java_home_env = described_class.java_home_env - expect(java_home_env[:JAVA_HOME]).to eql(f.opt_libexec.to_s) + expect(java_home_env[:JAVA_HOME]).to include(f.opt_libexec.to_s) end end describe "::overridable_java_home_env" do it "returns java_home path if version specified" do overridable_java_home_env = described_class.overridable_java_home_env("1.8+") - expect(overridable_java_home_env[:JAVA_HOME]).to eql("${JAVA_HOME:-#{f.opt_libexec}}") + expect(overridable_java_home_env[:JAVA_HOME]).to include(f.opt_libexec.to_s) end it "returns java_home path if version is not specified" do overridable_java_home_env = described_class.overridable_java_home_env - expect(overridable_java_home_env[:JAVA_HOME]).to eql("${JAVA_HOME:-#{f.opt_libexec}}") + expect(overridable_java_home_env[:JAVA_HOME]).to include(f.opt_libexec.to_s) end end end