Skip to content

Commit d324ffb

Browse files
committed
buildutil.bzl: fix allowList and disallowed_list logic
1 parent 0d98c7a commit d324ffb

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

pkg/roachpb/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,5 @@ stringer(
163163
disallowed_imports_test(
164164
"roachpb",
165165
disallow_cdeps = True,
166+
disallowed_list = [],
166167
)

pkg/server/diagnostics/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,5 @@ disallowed_imports_test(
8787
"diagnostics",
8888
# TODO(#81378): This should be flipped to "true".
8989
disallow_cdeps = False,
90+
disallowed_list = [],
9091
)

pkg/testutils/buildutil/buildutil.bzl

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ _deps_aspect = aspect(
4949
)
5050

5151
def _find_deps_with_disallowed_prefixes(current_pkg, dep_pkgs, prefixes):
52+
if prefixes == None:
53+
return []
5254
return [dp for dp_list in [
5355
[(d, p) for p in prefixes if d.startswith(p) and d != current_pkg]
5456
for d in dep_pkgs
@@ -61,11 +63,13 @@ def _deps_rule_impl(ctx):
6163
prefixes = ctx.attr.disallowed_prefixes,
6264
)
6365
deps = {k: None for k in ctx.attr.src[_DepsInfo].deps.to_list()}
64-
if ctx.attr.allowlist:
66+
if ctx.attr.has_allowlist:
6567
failed = [p for p in deps if p not in ctx.attr.allowlist and
6668
p.label != ctx.attr.src.label]
67-
else:
69+
elif ctx.attr.has_disallowed_list:
6870
failed = [p for p in ctx.attr.disallowed_list if p in deps]
71+
else:
72+
failed = []
6973
failures = []
7074
if failed_prefixes:
7175
failures.extend([
@@ -108,10 +112,14 @@ _deps_rule = rule(
108112
"disallow_cdeps": attr.bool(mandatory = False, default = False),
109113
"disallowed_list": attr.label_list(providers = [GoInfo]),
110114
"disallowed_prefixes": attr.string_list(mandatory = False, allow_empty = True),
115+
"has_allowlist": attr.bool(default = False),
116+
"has_disallowed_list": attr.bool(default = False),
111117
},
112118
)
113119

114120
def _validate_disallowed_prefixes(prefixes):
121+
if prefixes == None:
122+
return []
115123
validated = []
116124
repo_prefix = "github.com/cockroachdb/cockroach/"
117125
short_prefix = "pkg/"
@@ -130,11 +138,15 @@ def _validate_disallowed_prefixes(prefixes):
130138

131139
def disallowed_imports_test(
132140
src,
133-
disallowed_list = [],
134-
disallowed_prefixes = [],
141+
disallowed_list = None,
142+
disallowed_prefixes = None,
135143
disallow_cdeps = False,
136-
allowlist = []):
137-
if (disallowed_list and allowlist) or (disallowed_prefixes and allowlist):
144+
allowlist = None):
145+
146+
if allowlist == None and disallowed_list == None and disallowed_prefixes == None:
147+
fail("Either allowlist, disallowed_list or disallowed_prefixes should be passed, to block " +
148+
"all imports you must explicitly pass allowlist = []")
149+
if (allowlist != None and disallowed_list != None) or (allowlist != None and disallowed_prefixes != None):
138150
fail("allowlist or (disallowed_list or disallowed_prefixes) can be " +
139151
"provided, but not both")
140152
disallowed_prefixes = _validate_disallowed_prefixes(disallowed_prefixes)
@@ -147,6 +159,8 @@ def disallowed_imports_test(
147159
disallowed_list = disallowed_list,
148160
disallowed_prefixes = disallowed_prefixes,
149161
disallow_cdeps = disallow_cdeps,
162+
has_allowlist = allowlist != None,
163+
has_disallowed_list = disallowed_list != None,
150164
)
151165
native.sh_test(
152166
name = src.strip(":") + "_disallowed_imports_test",

0 commit comments

Comments
 (0)