@@ -18,21 +18,42 @@ _trlc_specification = rule(
1818def 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+
2131def _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