mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-11-28 19:55:53 +03:00
48585d2b2f
+test now offloads creation of the test tree into a renderer. this should help with caching. using a renderer also lets us deal with hierarchical directory structures, leading to better organization.
72 lines
1.5 KiB
Plaintext
72 lines
1.5 KiB
Plaintext
/+ new-hoon, tester
|
|
/= all-tests
|
|
/^ (map @ta tests:tester)
|
|
/: /===/tests
|
|
/_ /test-tree/
|
|
::
|
|
=, new-hoon
|
|
|%
|
|
::
|
|
++ test-runner
|
|
:> run all tests in {a} with a filter.
|
|
=| pax=path
|
|
|= [filter=path eny=@uvJ a=tests:tester]
|
|
^- tang
|
|
%- concat:ls
|
|
%+ turn a
|
|
|= b=instance:tester
|
|
^- tang
|
|
=^ matches filter (match-filter filter p.b)
|
|
?. matches
|
|
~
|
|
?- -.q.b
|
|
%& (run-test [p.b pax] eny p.q.b)
|
|
%| ^$(pax [p.b pax], a p.q.b)
|
|
==
|
|
::
|
|
++ run-test
|
|
:> executes an individual test.
|
|
|= [pax=path eny=@uvJ test=$-(@uvJ (list tape))]
|
|
^- tang
|
|
=+ name=(spud (flop pax))
|
|
=+ run=(mule |.((test eny)))
|
|
?- -.run
|
|
$| :: the stack is already flopped for output?
|
|
;: weld
|
|
p:run
|
|
`tang`[[%leaf (weld name " CRASHED")] ~]
|
|
==
|
|
$& ?: =(~ p:run)
|
|
[[%leaf (weld name " OK")] ~]
|
|
:: Create a welded list of all failures indented.
|
|
%- flop
|
|
;: weld
|
|
`tang`[[%leaf (weld name " FAILED")] ~]
|
|
%+ turn p:run
|
|
|= {i/tape}
|
|
^- tank
|
|
[%leaf (weld " " i)]
|
|
==
|
|
==
|
|
::
|
|
++ match-filter
|
|
:> checks to see if {name} matches the head of {filter}.
|
|
|= [filter=path name=term]
|
|
^- [? path]
|
|
?~ filter
|
|
:: when there's no filter, we always match.
|
|
[%.y ~]
|
|
[=(i.filter name) t.filter]
|
|
--
|
|
::
|
|
:- %say
|
|
|= $: [now=@da eny=@uvJ bec=beak]
|
|
[filter=$?($~ [pax=path $~])]
|
|
$~
|
|
==
|
|
:- %tang
|
|
%^ test-runner
|
|
?~ filter ~ pax.filter
|
|
eny
|
|
(test-map-to-test-list:tester all-tests)
|