diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/build_plugin b/java/ql/integration-tests/linux-only/kotlin/custom_plugin/build_plugin deleted file mode 100755 index c38ab33eb75..00000000000 --- a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/build_plugin +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python3 - -import subprocess -import shutil -import os -import os.path -import sys -import shlex - - -def run_process(cmd): - try: - print("Running command: " + shlex.join(cmd)) - return subprocess.run(cmd, check=True, capture_output=True) - except subprocess.CalledProcessError as e: - print("In: " + os.getcwd(), file=sys.stderr) - print("Command failed: " + shlex.join(cmd), file=sys.stderr) - print("stdout output:\n" + e.stdout.decode(encoding='UTF-8', - errors='strict'), file=sys.stderr) - print("stderr output:\n" + e.stderr.decode(encoding='UTF-8', - errors='strict'), file=sys.stderr) - raise e - -root = '../../../../../../../../..' - -sys.path.append(root + '/ql/java/kotlin-extractor') -import kotlin_plugin_versions -defaultKotlinDependencyVersion = kotlin_plugin_versions.get_single_version() - -builddir = 'build' -dependency_dir = root + '/resources/kotlin-dependencies/' -dependencies = ['kotlin-stdlib-' + defaultKotlinDependencyVersion + - '.jar', 'kotlin-compiler-' + defaultKotlinDependencyVersion + '.jar'] -classpath = ':'.join([dependency_dir + dep for dep in dependencies]) -srcs = ['plugin/Plugin.kt'] -output = 'plugin.jar' - -if os.path.exists(builddir): - shutil.rmtree(builddir) -os.makedirs(builddir) - -run_process(['kotlinc', - '-J-Xmx2G', - '-d', builddir, - '-module-name', 'test', - '-no-reflect', '-no-stdlib', - '-jvm-target', '1.8', - '-classpath', classpath] + srcs) - -run_process(['jar', '-c', '-f', output, - '-C', builddir, '.', - '-C', 'plugin/resources', 'META-INF']) -shutil.rmtree(builddir) diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/BUILD.bazel b/java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/BUILD.bazel new file mode 100644 index 00000000000..3e5195df88c --- /dev/null +++ b/java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/BUILD.bazel @@ -0,0 +1,26 @@ +load("@codeql_kotlin_defaults//:defaults.bzl", "kotlin_extractor_defaults") +load("@rules_kotlin//kotlin:core.bzl", "kt_kotlinc_options") +load("@rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library") +load("//java/kotlin-extractor:versions.bzl", "get_language_version") + +_version = kotlin_extractor_defaults.extractor_version + +kt_kotlinc_options( + name = "kotlinc-options", + include_stdlibs = "none", + jvm_target = "1.8", + language_version = get_language_version(_version), +) + +kt_jvm_library( + name = "plugin", + srcs = ["Plugin.kt"], + kotlinc_opts = ":kotlinc-options", + module_name = "test", + resource_strip_prefix = "%s/resources" % package_name(), + resources = glob(["resources/**"]), + deps = [ + "@kotlin-compiler-%s" % _version, + "@kotlin-stdlib-%s" % _version, + ], +) diff --git a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/test.py b/java/ql/integration-tests/linux-only/kotlin/custom_plugin/test.py index 98610959b58..0928ff58234 100644 --- a/java/ql/integration-tests/linux-only/kotlin/custom_plugin/test.py +++ b/java/ql/integration-tests/linux-only/kotlin/custom_plugin/test.py @@ -1,6 +1,25 @@ from create_database_utils import * -import subprocess -subprocess.call("./build_plugin", shell=True) +import pathlib +import shutil + +this_dir = pathlib.Path(__file__).resolve().parent +cwd = pathlib.Path.cwd() +builddir = cwd / 'build' + +builddir.mkdir(exist_ok=True) + +try: + runSuccessfully(['bazel', f'--output_user_root={builddir}', '--max_idle_secs=1', 'build', + '//java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin', '--spawn_strategy=local', + '--nouse_action_cache', '--noremote_accept_cached', '--noremote_upload_local_results', + f'--symlink_prefix={cwd / "bazel-"}'], cwd=this_dir) +finally: + # rules_python creates a read-only directory in bazel's output, this allows cleanup to succeed + runSuccessfully(['chmod', '-R', '+w', builddir]) + +shutil.copy( + 'bazel-bin/java/ql/integration-tests/linux-only/kotlin/custom_plugin/plugin/plugin.jar', 'plugin.jar') + run_codeql_database_create( ["kotlinc -J-Xmx2G -Xplugin=plugin.jar a.kt b.kt c.kt d.kt e.kt"], lang="java")