sbt/launcher-package/integration-test/bin/java

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

29 lines
1.0 KiB
Plaintext
Raw Normal View History

2020-11-09 18:15:45 +01:00
#!/usr/bin/env python3
[2.x] fix: Runner should fail on JDK < 17 for sbt 2.x (#8825) **Problem** Running sbt 2.x with JDK 8 produces a confusing "server was not detected" error because the JDK version check only required JDK 8+ and only ran in the non-native-client path. **Solution** Move java_version detection before the native client decision and add checkJava17ForSbt2 that requires JDK 17+ when sbt major version >= 2. Fixes #8813 * [2.x] fix: Fail early when sbt 2.x is run with JDK < 17 (sbtw) Move JDK version check before native client decision in sbtw and require JDK 17+ when build.properties declares sbt 2.x. * [2.x] fix: Fail early when sbt 2.x is run with JDK < 17 (sbt.bat) Move checkjava before native client decision in sbt.bat and require JDK 17+ when build.properties declares sbt 2.x. * [2.x] test: Add minimumJdkVersion helper and unit tests for sbtw Extract JDK version check logic into Runner.minimumJdkVersion for testability. Add RunnerSpec with tests for sbt 1.x, 2.x, and 3.x version detection. * [2.x] test: Bump fake java to JDK 17 for integration tests The fake java script used by launcher integration tests reported JDK 8. Since sbt 2.x now requires JDK 17+, the citest2 (sbt 2.x) integration tests would fail with the new JDK version check. * Simulate JDK 9+ rt.jar handling in fake java script Instead of silently ignoring --rt-ext-dir (which causes sbt.bat to mkdir on an empty string), properly simulate JDK 9+ behavior by creating a temp directory with java9-rt-ext- prefix and a dummy rt.jar inside it.
2026-02-27 17:43:24 +01:00
import os
import sys
[2.x] fix: Runner should fail on JDK < 17 for sbt 2.x (#8825) **Problem** Running sbt 2.x with JDK 8 produces a confusing "server was not detected" error because the JDK version check only required JDK 8+ and only ran in the non-native-client path. **Solution** Move java_version detection before the native client decision and add checkJava17ForSbt2 that requires JDK 17+ when sbt major version >= 2. Fixes #8813 * [2.x] fix: Fail early when sbt 2.x is run with JDK < 17 (sbtw) Move JDK version check before native client decision in sbtw and require JDK 17+ when build.properties declares sbt 2.x. * [2.x] fix: Fail early when sbt 2.x is run with JDK < 17 (sbt.bat) Move checkjava before native client decision in sbt.bat and require JDK 17+ when build.properties declares sbt 2.x. * [2.x] test: Add minimumJdkVersion helper and unit tests for sbtw Extract JDK version check logic into Runner.minimumJdkVersion for testability. Add RunnerSpec with tests for sbt 1.x, 2.x, and 3.x version detection. * [2.x] test: Bump fake java to JDK 17 for integration tests The fake java script used by launcher integration tests reported JDK 8. Since sbt 2.x now requires JDK 17+, the citest2 (sbt 2.x) integration tests would fail with the new JDK version check. * Simulate JDK 9+ rt.jar handling in fake java script Instead of silently ignoring --rt-ext-dir (which causes sbt.bat to mkdir on an empty string), properly simulate JDK 9+ behavior by creating a temp directory with java9-rt-ext- prefix and a dummy rt.jar inside it.
2026-02-27 17:43:24 +01:00
import tempfile
if '--version' in sys.argv or '-version' in sys.argv:
[2.x] fix: Runner should fail on JDK < 17 for sbt 2.x (#8825) **Problem** Running sbt 2.x with JDK 8 produces a confusing "server was not detected" error because the JDK version check only required JDK 8+ and only ran in the non-native-client path. **Solution** Move java_version detection before the native client decision and add checkJava17ForSbt2 that requires JDK 17+ when sbt major version >= 2. Fixes #8813 * [2.x] fix: Fail early when sbt 2.x is run with JDK < 17 (sbtw) Move JDK version check before native client decision in sbtw and require JDK 17+ when build.properties declares sbt 2.x. * [2.x] fix: Fail early when sbt 2.x is run with JDK < 17 (sbt.bat) Move checkjava before native client decision in sbt.bat and require JDK 17+ when build.properties declares sbt 2.x. * [2.x] test: Add minimumJdkVersion helper and unit tests for sbtw Extract JDK version check logic into Runner.minimumJdkVersion for testability. Add RunnerSpec with tests for sbt 1.x, 2.x, and 3.x version detection. * [2.x] test: Bump fake java to JDK 17 for integration tests The fake java script used by launcher integration tests reported JDK 8. Since sbt 2.x now requires JDK 17+, the citest2 (sbt 2.x) integration tests would fail with the new JDK version check. * Simulate JDK 9+ rt.jar handling in fake java script Instead of silently ignoring --rt-ext-dir (which causes sbt.bat to mkdir on an empty string), properly simulate JDK 9+ behavior by creating a temp directory with java9-rt-ext- prefix and a dummy rt.jar inside it.
2026-02-27 17:43:24 +01:00
print('openjdk version "17.0.12" 2024-07-16')
elif '--rt-ext-dir' in sys.argv:
# Simulate JDK 9+ rt.jar ext dir: output a directory path containing
# "java9-rt-ext-" that the launcher scripts look for via grep/findstr.
ext_dir = os.path.join(tempfile.gettempdir(), 'java9-rt-ext-fake')
os.makedirs(ext_dir, exist_ok=True)
# Create a dummy rt.jar so the launcher won't try to --export-rt
rt_jar = os.path.join(ext_dir, 'rt.jar')
if not os.path.exists(rt_jar):
open(rt_jar, 'w').close()
print(ext_dir)
elif '--export-rt' in sys.argv:
# Simulate rt.jar export: create the file at the specified path
idx = sys.argv.index('--export-rt')
if idx + 1 < len(sys.argv):
rt_path = sys.argv[idx + 1]
os.makedirs(os.path.dirname(rt_path), exist_ok=True)
open(rt_path, 'w').close()
else:
for arg in sys.argv[1:]:
print(repr(arg)[1:-1])