mirror of
https://github.com/urbit/shrub.git
synced 2024-12-20 17:32:11 +03:00
293 lines
5.8 KiB
Plaintext
293 lines
5.8 KiB
Plaintext
:: This library contains unit tests for doccords.
|
|
::
|
|
/+ *test, *dprint
|
|
::
|
|
=> =>
|
|
:: This core is for testing core and chapter docs.
|
|
:> core-summary
|
|
:>
|
|
:> core-description
|
|
|% %core-test
|
|
:> chapter-summary
|
|
:>
|
|
:> chapter-description
|
|
+| %chapter-test
|
|
++ empty ~
|
|
--
|
|
::
|
|
:> arms used for testing doccords
|
|
|% %test-arms
|
|
+| %types
|
|
+$ arm-dox [tape what what what]
|
|
+$ core-dox [tape what]
|
|
+$ chapter-dox [tape what]
|
|
::
|
|
+| %helper-functions
|
|
++ get-item
|
|
|= a=(list term)
|
|
^- item
|
|
+:(find-item-in-type a -:!>(.))
|
|
::
|
|
++ get-arm-dox
|
|
|= a=(list term)
|
|
^- arm-dox
|
|
=/ itm=item (get-item a)
|
|
?> ?=([%arm *] itm)
|
|
[name adoc pdoc cdoc]:itm
|
|
::
|
|
++ get-core-dox
|
|
|= a=(list term)
|
|
^- core-dox
|
|
=/ itm=item (get-item a)
|
|
?> ?=([%core *] itm)
|
|
[name docs]:itm
|
|
::
|
|
++ get-chapter-dox
|
|
|= a=(list term)
|
|
^- chapter-dox
|
|
=/ itm=item (get-item a)
|
|
?> ?=([%chapter *] itm)
|
|
[name docs]:itm
|
|
::
|
|
++ arm-check
|
|
|= [arms=(list term) dox=(trel ? ? ?)]
|
|
=+ [adoc pdoc cdoc]=[`['arm-doc' ~] `['product-doc' ~] `['core-doc' ~]]
|
|
^- tang
|
|
=| res=tang
|
|
|-
|
|
?~ arms res
|
|
%= $
|
|
arms t.arms
|
|
res %+ weld
|
|
res
|
|
%+ expect-eq
|
|
!> ^- arm-dox
|
|
:* (trip i.arms)
|
|
?:(p.dox adoc *what)
|
|
?:(q.dox pdoc *what)
|
|
?:(r.dox cdoc *what)
|
|
==
|
|
::
|
|
!> (get-arm-dox ~[i.arms])
|
|
==
|
|
::
|
|
++ run-arm-tests
|
|
|= [dox=(trel ? ? ?)]
|
|
^- tang
|
|
=/ num (sub 3 :(add p.dox q.dox r.dox))
|
|
=/ prefix=term
|
|
;: (cury cat 3)
|
|
%arm-
|
|
?:(p.dox %adoc- ~)
|
|
?:(q.dox %pdoc- ~)
|
|
?:(r.dox %cdoc- ~)
|
|
==
|
|
=/ posts=(list term)
|
|
?+ num ~
|
|
%1 ~[%pre %post]
|
|
%2 ~[%pre-pre %post-pre %post-post]
|
|
%3 :~ %pre-pre-pre
|
|
%pre-pre-post
|
|
%pre-post-pre
|
|
%post-pre-pre
|
|
%pre-post-post
|
|
%post-pre-post
|
|
%post-post-pre
|
|
==
|
|
==
|
|
%+ arm-check
|
|
%+ turn posts
|
|
|= [postfix=term]
|
|
`term`(cat 3 prefix postfix)
|
|
dox
|
|
::
|
|
+| %batch-comments
|
|
:> +foo: a foo
|
|
:> +bar: a bar
|
|
:> a very bar foo
|
|
:> $baz: a baz
|
|
:> $boz: a boz
|
|
:> a very boz baz
|
|
:> +foobar: a foobar
|
|
:> $bazboz: a bazbor
|
|
++ foo ~
|
|
++ bar ~
|
|
+$ baz *
|
|
+$ boz *
|
|
++ foobar [~ ~]
|
|
+$ bazboz [* *]
|
|
::
|
|
+| %docs-for-arms
|
|
++ no-doc ~
|
|
::
|
|
:> +arm-adoc-pre: arm-doc
|
|
++ arm-adoc-pre ~
|
|
::
|
|
++ arm-adoc-post :< arm-doc
|
|
~
|
|
::
|
|
++ arm-pdoc-pre
|
|
:> product-doc
|
|
'foo'
|
|
++ arm-pdoc-post
|
|
'foo' :< product-doc
|
|
::
|
|
++ arm-cdoc-pre
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
--
|
|
::
|
|
++ arm-cdoc-post
|
|
|%
|
|
++ $ :< core-doc
|
|
~
|
|
--
|
|
::
|
|
:> +arm-adoc-pdoc-pre-pre: arm-doc
|
|
++ arm-adoc-pdoc-pre-pre
|
|
:> product-doc
|
|
'foo'
|
|
::
|
|
++ arm-adoc-pdoc-post-pre :< arm-doc
|
|
:> product-doc
|
|
'foo'
|
|
::
|
|
++ arm-adoc-pdoc-post-post :< arm-doc
|
|
'foo' :< product-doc
|
|
::
|
|
:> +arm-adoc-cdoc-pre-pre: arm-doc
|
|
++ arm-adoc-cdoc-pre-pre
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
--
|
|
::
|
|
++ arm-adoc-cdoc-post-pre :< arm-doc
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
--
|
|
::
|
|
++ arm-adoc-cdoc-post-post :< arm-doc
|
|
|%
|
|
++ $ :< core-doc
|
|
~
|
|
--
|
|
::
|
|
++ arm-pdoc-cdoc-pre-pre
|
|
:> product-doc
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
--
|
|
++ arm-pdoc-cdoc-post-pre
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
-- :< product-doc
|
|
::
|
|
++ arm-pdoc-cdoc-post-post
|
|
|%
|
|
++ $ :< core-doc
|
|
~
|
|
-- :< product-doc
|
|
::
|
|
:> +arm-adoc-pdoc-cdoc-pre-pre-pre: arm-doc
|
|
++ arm-adoc-pdoc-cdoc-pre-pre-pre
|
|
:> product-doc
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
--
|
|
::
|
|
++ arm-adoc-pdoc-cdoc-post-pre-pre :< arm-doc
|
|
:> product-doc
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
--
|
|
::
|
|
:> +arm-adoc-pdoc-cdoc-pre-post-pre: arm-doc
|
|
++ arm-adoc-pdoc-cdoc-pre-post-pre
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
-- :< product-doc
|
|
::
|
|
:> +arm-adoc-pdoc-cdoc-pre-pre-post: arm-doc
|
|
++ arm-adoc-pdoc-cdoc-pre-pre-post
|
|
:> product-doc
|
|
|%
|
|
++ $ :< core-doc
|
|
~
|
|
--
|
|
::
|
|
++ arm-adoc-pdoc-cdoc-post-post-pre :< arm-doc
|
|
|%
|
|
:> core-doc
|
|
++ $ ~
|
|
-- :< product-doc
|
|
::
|
|
++ arm-adoc-pdoc-cdoc-post-pre-post :< arm-doc
|
|
:> product-doc
|
|
|%
|
|
++ $ :< core-doc
|
|
~
|
|
--
|
|
::
|
|
:> +arm-adoc-pdoc-cdoc-pre-post-post: arm-doc
|
|
++ arm-adoc-pdoc-cdoc-pre-post-post
|
|
|%
|
|
++ $ :< core-doc
|
|
~
|
|
-- :< product-doc
|
|
::
|
|
++ arm-adoc-pdoc-cdoc-post-post-post :< arm-doc
|
|
|%
|
|
++ $ :< core-doc
|
|
~
|
|
-- :< product-doc
|
|
::
|
|
--
|
|
::
|
|
:> contains the actual tests to be run by -test
|
|
|% %dprint-tests
|
|
:: +| %batch-tests
|
|
:: ++ test-b-foo
|
|
:: %+ expect-eq
|
|
:: !>
|
|
+| %arm-tests
|
|
::
|
|
++ test-no-doc
|
|
%+ expect-eq
|
|
!> ^- arm-dox
|
|
["no-doc" *what *what *what]
|
|
::
|
|
!> (get-arm-dox ~[%no-doc])
|
|
::
|
|
++ test-adoc (run-arm-tests & | |)
|
|
++ test-pdoc (run-arm-tests | & |)
|
|
++ test-cdoc (run-arm-tests | | &)
|
|
++ test-adoc-pdoc (run-arm-tests & & |)
|
|
++ test-adoc-cdoc (run-arm-tests & | &)
|
|
++ test-pdoc-cdoc (run-arm-tests | & &)
|
|
++ test-adoc-pdoc-cdoc (run-arm-tests & & &)
|
|
::
|
|
+| %core-tests
|
|
++ test-core
|
|
%+ expect-eq
|
|
!> ^- core-dox
|
|
["core-test" `['core-summary' ~[~[[%.y 'core-description']]]]]
|
|
::
|
|
!> (get-core-dox ~[%core-test])
|
|
::
|
|
++ test-chapter
|
|
%+ expect-eq
|
|
!> ^- chapter-dox
|
|
["chapter-test" `['chapter-summary' ~[~[[%.y 'chapter-description']]]]]
|
|
::
|
|
!> (get-chapter-dox ~[%core-test %chapter-test])
|
|
::
|
|
--
|