refactor: drop legacy JDK 8 version mapping in _detect_java_version

This commit is contained in:
Mohamed Ashraf 2026-04-21 02:05:33 +00:00
parent 54a14765ee
commit c40b5e7a74
2 changed files with 33 additions and 3 deletions

View file

@ -583,9 +583,9 @@ class JavaSupport(LanguageSupport):
end = line.find('"', start + 1) end = line.find('"', start + 1)
if start != -1 and end != -1: if start != -1 and end != -1:
full_version = line[start + 1 : end] full_version = line[start + 1 : end]
# Use major version only: "17.0.2" -> "17", "1.8.0_292" -> "8" # Use major version only: "17.0.2" -> "17". JDK 8 and earlier (reported as
major = full_version.split(".")[0] # "1.x.y") are unsupported — the downstream minimum-version check rejects them.
self._language_version = "8" if major == "1" else major self._language_version = full_version.split(".")[0]
return return
except Exception: except Exception:
pass pass

View file

@ -175,3 +175,33 @@ class TestJdkVersionCheck:
with patch("codeflash.languages.java.support.detect_java_project", return_value=mock_config): with patch("codeflash.languages.java.support.detect_java_project", return_value=mock_config):
result = support.ensure_runtime_environment(tmp_path) result = support.ensure_runtime_environment(tmp_path)
assert result is True assert result is True
def test_detect_java_version_legacy_jdk8_format(self) -> None:
from unittest.mock import MagicMock, patch
support = get_java_support()
support._language_version = None
mock_result = MagicMock()
mock_result.stderr = 'openjdk version "1.8.0_292"\n'
mock_result.stdout = ""
with patch("subprocess.run", return_value=mock_result):
support._detect_java_version()
assert support._language_version == "1"
def test_detect_java_version_modern_format(self) -> None:
from unittest.mock import MagicMock, patch
support = get_java_support()
support._language_version = None
mock_result = MagicMock()
mock_result.stderr = 'openjdk version "17.0.2"\n'
mock_result.stdout = ""
with patch("subprocess.run", return_value=mock_result):
support._detect_java_version()
assert support._language_version == "17"