diff --git a/examples/pytest/BUILD.bazel b/examples/pytest/BUILD.bazel index 6e93e5f4..9256da54 100644 --- a/examples/pytest/BUILD.bazel +++ b/examples/pytest/BUILD.bazel @@ -13,6 +13,9 @@ py_test( "fixtures/*.json", ]), env_inherit = ["FOO"], + exec_properties = { + "test.foo": "bar", + }, imports = ["../.."], package_collisions = "warning", pytest_main = True, diff --git a/py/defs.bzl b/py/defs.bzl index 59c8ddd3..817b920f 100644 --- a/py/defs.bzl +++ b/py/defs.bzl @@ -60,6 +60,9 @@ py_image_layer = _py_image_layer resolutions = _resolutions def _py_binary_or_test(name, rule, srcs, main, data = [], deps = [], resolutions = {}, **kwargs): + exec_properties = kwargs.pop("exec_properties", {}) + non_test_exec_properties = {k: v for k, v in exec_properties.items() if not k.startswith("test.")} + # Compatibility with rules_python, see docs in py_executable.bzl main_target = "{}.find_main".format(name) determine_main( @@ -67,6 +70,7 @@ def _py_binary_or_test(name, rule, srcs, main, data = [], deps = [], resolutions target_name = name, main = main, srcs = srcs, + exec_properties = non_test_exec_properties, **propagate_common_rule_attributes(kwargs) ) @@ -80,6 +84,7 @@ def _py_binary_or_test(name, rule, srcs, main, data = [], deps = [], resolutions deps = deps, resolutions = resolutions, package_collisions = package_collisions, + exec_properties = exec_properties, **kwargs )