Skip to content

Commit ede35c4

Browse files
Melody Maphiwuu
authored andcommitted
Extend bazel rule for trlc
- the stakeholder requirements could be listed as dependency - add trlc_specification_test
1 parent 6bbabf0 commit ede35c4

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

trlc.bzl

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,42 @@ _trlc_specification = rule(
1818
def trlc_specification(**kwargs):
1919
_trlc_specification(**kwargs)
2020

21+
def trlc_specification_test(name, reqs, srcs = ["@trlc//:trlc.py"], main = "trlc.py", **kwargs):
22+
native.py_test(
23+
name = name,
24+
srcs = srcs,
25+
args = ["--use-cvc5-binary $(location @trlc//:cvc5)", "--verify", "--skip-trlc-files"],
26+
main = main,
27+
deps = ["@trlc//trlc:trlc"],
28+
data = ["@trlc//:cvc5"] + reqs,
29+
)
30+
2131
def _trlc_requirement_impl(ctx):
22-
depending_files = []
23-
for spec in ctx.attr.spec:
24-
depending_files.append(spec[DefaultInfo].files)
32+
transitive_spec = []
33+
transitive_reqs = []
34+
for dep in ctx.attr.deps:
35+
trlc_provider = dep[TrlcProviderInfo]
36+
transitive_spec.append(trlc_provider.spec)
37+
transitive_reqs.append(trlc_provider.reqs)
38+
39+
own_specs = ctx.files.spec if hasattr(ctx.files, "spec") else []
2540

2641
return [
27-
DefaultInfo(files = depset(ctx.files.srcs, transitive = depending_files)),
28-
TrlcProviderInfo(spec = depset([], transitive = depending_files), reqs = depset(ctx.files.srcs)),
42+
DefaultInfo(
43+
files = depset(ctx.files.srcs, transitive = transitive_reqs + transitive_spec + [depset(own_specs)])
44+
),
45+
TrlcProviderInfo(
46+
spec = depset(own_specs, transitive = transitive_spec),
47+
reqs = depset(ctx.files.srcs, transitive = transitive_reqs),
48+
),
2949
]
3050

3151
_trlc_requirement = rule(
3252
implementation = _trlc_requirement_impl,
3353
attrs = {
3454
"srcs": attr.label_list(allow_files = [".trlc"]),
35-
"spec": attr.label_list(allow_empty = False, providers = [DefaultInfo]),
55+
"deps": attr.label_list(allow_files = False, allow_empty = True, providers = [TrlcProviderInfo]),
56+
"spec": attr.label_list(allow_empty = True, providers = [DefaultInfo]),
3657
},
3758
)
3859

0 commit comments

Comments
 (0)