mirror of
https://github.com/github/codeql.git
synced 2025-12-16 08:43:11 +01:00
Pytest: fix the build-as-test mode on Windows
This mode (enabled with `--codeql=build-as-test` or setting `PYTEST_CODEQL=build-as-test` in the environment) is an experimental mode that makes the pytest dist installation run as a test. This allows to avoid running the installation in case nothing changed in the dist, leveraging bazel's test caching mechanism, and accelrating the dev loop when working on integration test code. This mode might become the default for devs in the future. Up until now, this mode was only working on POSIX systems. This commit fixes it on Windows. The issue was `native_test` being unable to wrap a `py_binary` target because of an `.exe` suffix mismatch. Turning the `native_test` into a full-fledged `py_test` solves the issue.
This commit is contained in:
@@ -3,12 +3,11 @@ Wrappers and helpers around `rules_pkg` to build codeql packs.
|
||||
"""
|
||||
|
||||
load("@bazel_skylib//lib:paths.bzl", "paths")
|
||||
load("@bazel_skylib//rules:native_binary.bzl", "native_test")
|
||||
load("@rules_pkg//pkg:install.bzl", "pkg_install")
|
||||
load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_filegroup", "pkg_files", _strip_prefix = "strip_prefix")
|
||||
load("@rules_pkg//pkg:pkg.bzl", "pkg_zip")
|
||||
load("@rules_pkg//pkg:providers.bzl", "PackageFilegroupInfo", "PackageFilesInfo")
|
||||
load("@rules_python//python:defs.bzl", "py_binary")
|
||||
load("@rules_python//python:defs.bzl", "py_binary", "py_test")
|
||||
load("//misc/bazel:os.bzl", "OS_DETECTION_ATTRS", "os_select")
|
||||
|
||||
def _make_internal(name):
|
||||
@@ -366,28 +365,29 @@ def _codeql_pack_install(name, srcs, install_dest = None, build_file_label = Non
|
||||
] if build_file_label else []) + (
|
||||
["--destdir", "\"%s\"" % install_dest] if install_dest else []
|
||||
)
|
||||
py_binary(
|
||||
name = name,
|
||||
installer_args = dict(
|
||||
srcs = [Label("//misc/bazel/internal:install.py")],
|
||||
main = Label("//misc/bazel/internal:install.py"),
|
||||
deps = ["@rules_python//python/runfiles"],
|
||||
data = data,
|
||||
args = args,
|
||||
)
|
||||
py_binary(
|
||||
name = name,
|
||||
**installer_args
|
||||
)
|
||||
|
||||
# this hack is meant to be an optimization when using install for tests, where
|
||||
# the install step is skipped if nothing changed. If the installation directory
|
||||
# is somehow messed up, `bazel run` can be used to force install
|
||||
native_test(
|
||||
py_test(
|
||||
name = internal("as", "test"),
|
||||
src = name,
|
||||
tags = [
|
||||
"manual", # avoid having this picked up by `...`, `:all` or `:*`
|
||||
"local", # make sure installation does not run sandboxed
|
||||
],
|
||||
data = data,
|
||||
args = args,
|
||||
size = "small",
|
||||
**installer_args
|
||||
)
|
||||
|
||||
def codeql_pack_group(name, srcs, visibility = None, skip_installer = False, prefix = "", install_dest = None, build_file_label = None, compression_level = 6):
|
||||
|
||||
Reference in New Issue
Block a user