Skip to content

Commit affd2c1

Browse files
Ievgenii Nazarukfacebook-github-bot
Ievgenii Nazaruk
authored andcommitted
Add support for additional buck parameters for nested bxl run.
Summary: This diff adds ability to provide additional custom buck arguments to BXL buck run when checking dependencies. This is useful to have a better control over environment in which dependencies are calculated. By default we already try to guess/inherit the flags from "parent" buck process. But as described in D71528333, sometimes results for `buck cquery` and running `check_dependencies_test` differ due to complicated setup of native targets. Reviewed By: IanChilds Differential Revision: D71528332 fbshipit-source-id: ea621bcb53e0fba9b5e1f179b525fbef7e5a0d7f
1 parent a33ecde commit affd2c1

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

tests/check_dependencies_test.bzl

+15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
# of this source tree.
77

88
load("@fbcode//buck2/tests:buck_e2e.bzl", "buck2_e2e_test")
9+
load("@fbcode_macros//build_defs:native_rules.bzl", "buck_genrule")
10+
load("@fbsource//tools/build_defs/windows:powershell.bzl", "powershell_cmd_exe")
911

1012
# This is meant to be Open-source friendly. In our e2e tests, we invoke a variant from
1113
# tools/build_defs/check_dependencies_test.bzl that passes additional arguments for meta specific allowlist.
@@ -49,6 +51,7 @@ def check_dependencies_test(
4951
expect_failure_msg = None,
5052
env = None,
5153
deps = None,
54+
extra_buck_args = [],
5255
**kwargs):
5356
"""
5457
Creates a test target from a buck2 bxl script. BXL script must use "test" as entry
@@ -97,6 +100,17 @@ def check_dependencies_test(
97100
if mode not in ("allowlist", "blocklist"):
98101
fail("mode must be one of: allowlist, blocklist")
99102

103+
extra_buck_args_target = "%s_extra_buck_args" % (name)
104+
buck_args_str = " ".join(extra_buck_args)
105+
buck_genrule(
106+
name = extra_buck_args_target,
107+
out = "extra_buck_args",
108+
bash = "echo %s > $OUT" % (buck_args_str),
109+
cmd_exe = powershell_cmd_exe([
110+
"Set-Content $OUT '%s'" % (buck_args_str),
111+
]),
112+
)
113+
100114
_check_dependencies_test(
101115
contacts = contacts,
102116
name = name,
@@ -106,6 +120,7 @@ def check_dependencies_test(
106120
"BLOCKLIST": blocklist_patterns,
107121
"BXL_MAIN": bxl_main,
108122
"EXPECT_FAILURE_MSG": expect_failure_msg or "",
123+
"EXTRA_BUCK_ARGS_FILE": "@$(location :%s)" % (extra_buck_args_target),
109124
"FLAVOR": "check_dependencies_test",
110125
"TARGET": target,
111126
"VERIFICATION_MODE": mode,

tests/e2e_util/test_bxl_check_dependencies_template.py

+6
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,15 @@ async def test_check_dependencies_bxl(buck) -> None:
4141
else:
4242
mode_argfile = get_mode_from_platform()
4343

44+
additional_argfile = os.environ.get("EXTRA_BUCK_ARGS_FILE", None)
45+
additional_args = []
46+
if additional_argfile:
47+
additional_args.append(additional_argfile)
48+
4449
bxl_call = buck.bxl(
4550
os.environ["BXL_MAIN"],
4651
mode_argfile,
52+
*additional_args,
4753
"--",
4854
"--target",
4955
os.environ["TARGET"],

0 commit comments

Comments
 (0)