Skip to content

Commit c40b5e7

Browse files
refactor: drop legacy JDK 8 version mapping in _detect_java_version
1 parent 54a1476 commit c40b5e7

2 files changed

Lines changed: 33 additions & 3 deletions

File tree

codeflash/languages/java/support.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -583,9 +583,9 @@ def _detect_java_version(self) -> None:
583583
end = line.find('"', start + 1)
584584
if start != -1 and end != -1:
585585
full_version = line[start + 1 : end]
586-
# Use major version only: "17.0.2" -> "17", "1.8.0_292" -> "8"
587-
major = full_version.split(".")[0]
588-
self._language_version = "8" if major == "1" else major
586+
# Use major version only: "17.0.2" -> "17". JDK 8 and earlier (reported as
587+
# "1.x.y") are unsupported — the downstream minimum-version check rejects them.
588+
self._language_version = full_version.split(".")[0]
589589
return
590590
except Exception:
591591
pass

tests/test_languages/test_java/test_support.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,3 +175,33 @@ def test_jdk21_accepted(self, tmp_path: Path) -> None:
175175
with patch("codeflash.languages.java.support.detect_java_project", return_value=mock_config):
176176
result = support.ensure_runtime_environment(tmp_path)
177177
assert result is True
178+
179+
def test_detect_java_version_legacy_jdk8_format(self) -> None:
180+
from unittest.mock import MagicMock, patch
181+
182+
support = get_java_support()
183+
support._language_version = None
184+
185+
mock_result = MagicMock()
186+
mock_result.stderr = 'openjdk version "1.8.0_292"\n'
187+
mock_result.stdout = ""
188+
189+
with patch("subprocess.run", return_value=mock_result):
190+
support._detect_java_version()
191+
192+
assert support._language_version == "1"
193+
194+
def test_detect_java_version_modern_format(self) -> None:
195+
from unittest.mock import MagicMock, patch
196+
197+
support = get_java_support()
198+
support._language_version = None
199+
200+
mock_result = MagicMock()
201+
mock_result.stderr = 'openjdk version "17.0.2"\n'
202+
mock_result.stdout = ""
203+
204+
with patch("subprocess.run", return_value=mock_result):
205+
support._detect_java_version()
206+
207+
assert support._language_version == "17"

0 commit comments

Comments
 (0)