blob: 9f58e656d6d154ff82f6d237bd5265b9e46f1a3d [file] [log] [blame] [edit]
# Part of the Crubit project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
"""Supporting macro for multiplatform code."""
load(
"@rules_rust//rust:defs.bzl",
"rust_test",
)
_PLATFORMS = [
"x86_linux",
"arm_linux",
"darwin_x86_64",
"darwin_arm64",
]
def multiplatform_rust_test(name, **kwargs):
"""Macro to parameterize a test target by target platform."""
# TODO(jeanpierreda): Ideally we'd use `.`, not `-`, but this breaks for non-crate= rust_test targets
# because they create a crate with `.` in the name. That's illegal.
native.test_suite(
name = name,
tests = [name + "-" + platform for platform in _PLATFORMS],
)
rustc_env = kwargs.setdefault("env", {})
for platform in _PLATFORMS:
rustc_env["CRUBIT_TEST_PLATFORM"] = platform
test_name = name + "-" + platform
# Note: we use `rust_test` rather than `crubit_rust_test` because we want unit tests to
# run using the current build platform, not the platform built with the updated version
# of crubit.
rust_test(
name = test_name,
**kwargs
)