| """Tests for the bootclasspath rule.""" |
| |
| load("@rules_testing//lib:analysis_test.bzl", "analysis_test", "test_suite") |
| load("@rules_testing//lib:truth.bzl", "subjects") |
| load("//java/common:java_common.bzl", "java_common") |
| |
| def _test_utf_8_environment(name): |
| analysis_test( |
| name = name, |
| impl = _test_utf_8_environment_impl, |
| target = Label("//toolchains:platformclasspath"), |
| ) |
| |
| def _test_utf_8_environment_impl(env, target): |
| for action in target.actions: |
| env_subject = env.expect.where(action = action).that_dict(action.env) |
| env_subject.keys().contains("LC_CTYPE") |
| env_subject.get("LC_CTYPE", factory = subjects.str).contains("UTF-8") |
| |
| def _test_incompatible_language_version_bootclasspath_disabled(name): |
| analysis_test( |
| name = name, |
| impl = _test_incompatible_language_version_bootclasspath_disabled_impl, |
| target = Label("//toolchains:platformclasspath"), |
| config_settings = { |
| "//command_line_option:java_language_version": "11", |
| "//command_line_option:java_runtime_version": "remotejdk_17", |
| str(Label("//toolchains:incompatible_language_version_bootclasspath")): False, |
| }, |
| ) |
| |
| def _test_incompatible_language_version_bootclasspath_disabled_impl(env, target): |
| system_path = target[java_common.BootClassPathInfo]._system_path |
| env.expect.that_str(system_path).contains("remotejdk17_") |
| |
| def _test_incompatible_language_version_bootclasspath_enabled_versioned(name): |
| analysis_test( |
| name = name, |
| impl = _test_incompatible_language_version_bootclasspath_enabled_versioned_impl, |
| target = Label("//toolchains:platformclasspath"), |
| config_settings = { |
| "//command_line_option:java_language_version": "11", |
| "//command_line_option:java_runtime_version": "remotejdk_17", |
| str(Label("//toolchains:incompatible_language_version_bootclasspath")): True, |
| }, |
| ) |
| |
| def _test_incompatible_language_version_bootclasspath_enabled_versioned_impl(env, target): |
| system_path = target[java_common.BootClassPathInfo]._system_path |
| env.expect.that_str(system_path).contains("remotejdk11_") |
| |
| def _test_incompatible_language_version_bootclasspath_enabled_unversioned(name): |
| analysis_test( |
| name = name, |
| impl = _test_incompatible_language_version_bootclasspath_enabled_unversioned_impl, |
| target = Label("//toolchains:platformclasspath"), |
| config_settings = { |
| "//command_line_option:java_language_version": "11", |
| "//command_line_option:java_runtime_version": "local_jdk", |
| str(Label("//toolchains:incompatible_language_version_bootclasspath")): True, |
| }, |
| ) |
| |
| def _test_incompatible_language_version_bootclasspath_enabled_unversioned_impl(env, target): |
| system_path = target[java_common.BootClassPathInfo]._system_path |
| env.expect.that_str(system_path).contains("local_jdk") |
| |
| def bootclasspath_tests(name): |
| test_suite( |
| name = name, |
| tests = [ |
| _test_utf_8_environment, |
| _test_incompatible_language_version_bootclasspath_disabled, |
| _test_incompatible_language_version_bootclasspath_enabled_versioned, |
| _test_incompatible_language_version_bootclasspath_enabled_unversioned, |
| ], |
| ) |