Commit c30d4cba authored by Mislav Marohnić's avatar Mislav Marohnić
Browse files

Fix verifying Java 9+ versions

Ref. #1135
parent 9d78f06d
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -800,12 +800,19 @@ fix_rbx_irb() {

require_java() {
  local required="$1"
  local version="$(java -version 2>&1 | grep '\(java\|openjdk\) version' | head -1 | grep -o '1\.[0-9]\+')"
  if [ -z "$version" ] || [ "${version##*.}" -lt "$required" ]; then
  local java_version="$(java -version 2>&1)"
  local version_string="$(grep 'java version' <<<"$java_version" | head -1 | grep -o '[0-9.]\+' || true)"
  [ -n "$version_string" ] || version_string="$(grep 'openjdk version' <<<"$java_version" | head -1 | grep -o '[0-9.]\+' || true)"
  IFS="."
  local nums=($version_string)
  IFS="$OLDIFS"
  local found_version="${nums[0]}"
  [ "$found_version" -gt 1 ] 2>/dev/null || found_version="${nums[1]}"
  [ "$found_version" -ge "$required" ] 2>/dev/null && return 0
  colorize 1 "ERROR" >&3
    echo ": Java ${required} required. Please install a 1.${required}-compatible JRE." >&3
  echo ": Java ${required} required, but your Java version was:" >&3
  cat <<<"$java_version" >&3
  return 1
  fi
}

# keep for backwards compatibility
+17 −4
Original line number Diff line number Diff line
@@ -569,20 +569,21 @@ require_java7
install_package "jruby-9000.dev" "http://ci.jruby.org/jruby-dist-9000.dev-bin.tar.gz" jruby
DEF
  assert_failure
  assert_output_contains "ERROR: Java 7 required. Please install a 1.7-compatible JRE."
  assert_output_contains "ERROR: Java 7 required, but your Java version was:"
}

@test "JRuby Java is outdated" {
  cached_tarball "jruby-9000.dev" bin/jruby

  stub java '-version : echo java version "1.6.0_21" >&2'
  stub java "-version : echo 'java version \"1.6.0_21\"' >&2"

  run_inline_definition <<DEF
require_java7
install_package "jruby-9000.dev" "http://ci.jruby.org/jruby-dist-9000.dev-bin.tar.gz" jruby
DEF
  assert_failure
  assert_output_contains "ERROR: Java 7 required. Please install a 1.7-compatible JRE."
  assert_output_contains "ERROR: Java 7 required, but your Java version was:"
  assert_output_contains 'java version "1.6.0_21"'
}

@test "JRuby Java 7 up-to-date" {
@@ -624,7 +625,7 @@ DEF
@test "JRuby Java 9 version string" {
  cached_tarball "jruby-9000.dev" bin/jruby

  stub java '-version : echo java version "9" >&2'
  stub java "-version : echo 'java version \"9\"' >&2"

  run_inline_definition <<DEF
require_java7
@@ -633,6 +634,18 @@ DEF
  assert_success
}

@test "JRuby Java 10 version string" {
  cached_tarball "jruby-9000.dev" bin/jruby

  stub java "-version : echo 'java version \"10.8\"' >&2"

  run_inline_definition <<DEF
require_java 9
install_package "jruby-9000.dev" "http://ci.jruby.org/jruby-dist-9000.dev-bin.tar.gz" jruby
DEF
  assert_success
}

@test "TruffleRuby post-install hook" {
  executable "${RUBY_BUILD_CACHE_PATH}/truffleruby-test/lib/truffle/post_install_hook.sh" <<OUT
echo Running post-install hook