@@ -1,5 +1,7 @@
11:: The importer fixtures and their golden output, read as text so -test
2−:: does not try to compile the fixture /sur files as test programs.
2+:: does not try to compile the fixture /sur files as test programs. The
3+:: probes and synthetic types below live here, not in the importer, which
4+:: app desks vendor; =, jibb-import gives them the importer's arms.
35/+ jibb-import
46/* small %txt /tests/importer/small/txt
57/* epic %txt /tests/importer/tlon-epic/txt
@@ -24,7 +26,7 @@
2426::
2527++ report
2628 ^- @t
27− (of-wain:format (fixture-output:jibb-import (lines-to-cord small) (lines-to-cord epic) (lines-to-cord presence) (lines-to-cord docs) (lines-to-cord shadow) (lines-to-cord shadow-static) (lines-to-cord ford) (lines-to-cord mark) (lines-to-cord mark-rec) (lines-to-cord mark-gate) (lines-to-cord mark-basic) (lines-to-cord origin-trans) (lines-to-cord origin-first) (lines-to-cord origin-other)))
29+ (of-wain:format (fixture-output (lines-to-cord small) (lines-to-cord epic) (lines-to-cord presence) (lines-to-cord docs) (lines-to-cord shadow) (lines-to-cord shadow-static) (lines-to-cord ford) (lines-to-cord mark) (lines-to-cord mark-rec) (lines-to-cord mark-gate) (lines-to-cord mark-basic) (lines-to-cord origin-trans) (lines-to-cord origin-first) (lines-to-cord origin-other)))
2830::
2931++ test-importer-golden
3032 ^- tang
@@ -47,4 +49,566 @@
4749 ?. =((to-wain:format (cat 3 got '\0a')) expected)
4850 ~[leaf+"importer projection differs from tests/importer/tree.txt"]
4951 ~
52+::
53+:: The structured values behind the golden file's printed trees.
54+++ test-structured-values
55+ ^- tang
56+ %+ turn
57+ (fixture-test (lines-to-cord small) (lines-to-cord epic) (lines-to-cord presence) (lines-to-cord docs) (lines-to-cord shadow))
58+ |=(what=@t leaf+"importer structured value differs: {(trip what)}")
59+::
60+:: The standard library's type, which the fixtures are built against.
61+:: Under =, jibb-import, ..zuse no longer finds the standard library.
62+++ zuse-type
63+ ^- type
64+ -:!>(..zuse)
65+::
66+:: A synthetic hold whose first $^ branch cannot be evaluated. It tests
67+:: that a failed branch probe is reported rather than crashing the host.
68+++ bad-branch-fixture
69+ ^- type
70+ [%hold zuse-type [%tsls [%note [%made %bad ~] [%wtcl [%dtwt [%$ 12]] [%wing ~[%jibb-no-such-branch-name]] [%rock %n 0]]] [%$ 1]]]
71+::
72+:: +show-result prints a tree, so it cannot tell %bad from %invalid;
73+:: +fixture-test checks the structured values themselves.
74+++ fixture-test
75+ =, jibb-import
76+ |= [small=@t epic=@t presence=@t docs=@t shadow=@t]
77+ ^- (list @t)
78+ =/ sc=type -:(ride zuse-type small)
79+ =/ ec=type -:(ride zuse-type epic)
80+ =/ pc=type -:(ride zuse-type presence)
81+ =/ dc=type -:(ride zuse-type docs)
82+ =/ hc=type -:(ride zuse-type shadow)
83+ =/ sample
84+ |= name=term
85+ (read-mold-in %small name (~(play ut sc) (ream (cat 3 '*' name))) sc)
86+ =/ tlon
87+ |= name=term
88+ (read-mold-in %epic name (~(play ut ec) (ream (cat 3 '*' name))) ec)
89+ =/ present
90+ |= name=term
91+ (read-mold-in %presence name (~(play ut pc) (ream (cat 3 '*' name))) pc)
92+ =/ shad
93+ |= name=term
94+ (read-mold-in %shadow name (~(play ut hc) (ream (cat 3 '*' name))) hc)
95+ =/ docs-type
96+ |= name=term
97+ (read-mold-in %docs name (~(play ut dc) (ream (cat 3 '*' name))) dc)
98+ =/ errors=(list @t) ~
99+ =/ expect-action=imported
100+ [%fork ~[[%cell [%atom %tas [~ %add]] [%face %text [%atom %t ~]]] [%cell [%atom %tas [~ %remove]] [%face %id [%atom %ud ~]]]]]
101+ =/ errors ?: =((sample %action) [%& expect-action]) errors
102+ ['union cases and faces' errors]
103+ =/ expect-map=imported
104+ [%apply %map ~[[%atom %ud ~] [%cell [%face %id [%atom %ud ~]] [%face %text [%atom %t ~]]]]]
105+ =/ errors ?: =((sample %items) [%& expect-map]) errors
106+ ['map and its arguments' errors]
107+ =/ expect-optional=imported
108+ [%fork ~[[%cell [%face %name [%atom %t ~]] [%face %stamp [%atom %ud ~]]] [%atom %ud ~]]]
109+ =/ errors ?: =((sample %optional) [%& expect-optional]) errors
110+ ['atom-or-cell union' errors]
111+ =/ expect-containers=imported
112+ [%cell [%apply %set ~[[%atom %ud ~]]] [%cell [%apply %qeu ~[[%atom %ud ~]]] [%cell [%apply %list ~[[%atom %t ~]]] [%apply %unit ~[[%atom %ud ~]]]]]]
113+ =/ errors ?: =((sample %containers) [%& expect-containers]) errors
114+ ['set queue list and unit' errors]
115+ =/ expect-chain=imported
116+ [%fork ~[[%cell [%face %value [%atom %ud ~]] [%face %next [%ref %small %chain]]] [%atom %n [~ 0]]]]
117+ =/ errors ?: =((sample %chain) [%& expect-chain]) errors
118+ ['recursive reference' errors]
119+ =/ expect-jar=imported [%apply %jar ~[[%atom %ud ~] [%atom %t ~]]]
120+ =/ expect-jug=imported [%apply %jug ~[[%atom %ud ~] [%atom %t ~]]]
121+ =/ errors ?: =((sample %jar-test) [%& expect-jar]) errors
122+ ['jar name and arguments' errors]
123+ =/ errors ?: =((sample %jug-test) [%& expect-jug]) errors
124+ ['jug name and arguments' errors]
125+ =/ expect-nested-jar=imported [%face %field [%apply %jar ~[[%atom %ud ~] [%atom %t ~]]]]
126+ =/ errors ?: =((sample %nested-jar) [%& expect-nested-jar]) errors
127+ ['nested jar is preserved' errors]
128+ =/ expect-paired=imported
129+ [%cell [%face %values [%apply %jar ~[[%atom %ud ~] [%atom %t ~]]]] [%face %cache [%apply %jug ~[[%atom %ud ~] [%atom %t ~]]]]]
130+ =/ errors ?: =((sample %paired-aliases) [%& expect-paired]) errors
131+ ['multiple collection aliases are preserved' errors]
132+ =/ expect-nested-alias=imported
133+ [%apply %jar ~[[%atom %ud ~] [%apply %jug ~[[%atom %ud ~] [%atom %t ~]]]]]
134+ =/ errors ?: =((sample %nested-alias) [%& expect-nested-alias]) errors
135+ ['nested collection arguments preserve names' errors]
136+ =/ expect-mop=imported [%apply %mop ~[[%atom %ud ~] [%atom %t ~]]]
137+ =/ errors ?: =((sample %mop-test) [%& expect-mop]) errors
138+ ['ordered map name and arguments' errors]
139+ =/ expect-nested-mop=imported
140+ [%cell [%face %table expect-mop] [%face %other [%atom %ud ~]]]
141+ =/ errors ?: =((sample %nested-mop) [%& expect-nested-mop]) errors
142+ ['ordered map field is preserved' errors]
143+ =/ expect-mixed=imported
144+ [%cell [%face %a expect-mop] [%face %b [%apply %list ~[[%atom %ud ~]]]]]
145+ =/ errors ?: =((sample %mixed-mop) [%& expect-mixed]) errors
146+ ['static list sibling is preserved' errors]
147+ =/ errors ?: =((sample %named-mop) [%| 'a nested Hoon mop needs source-aware import']) errors
148+ ['non-atom argument remains unsupported' errors]
149+ =/ errors ?: =((sample %mop-list) [%| 'a nested Hoon mop needs source-aware import']) errors
150+ ['ordered map in a list remains unsupported' errors]
151+ =/ errors ?: =((sample %signed) [%| 'signed and float auras cannot be imported']) errors
152+ ['signed aura rejected' errors]
153+ =/ errors ?: =((sample %float) [%| 'signed and float auras cannot be imported']) errors
154+ ['float aura rejected' errors]
155+ =/ errors ?: =((sample %gate-test) [%| 'cores and gates cannot be imported']) errors
156+ ['gate rejected' errors]
157+ =/ errors ?: =((read-mold %std %vase (~(play ut zuse-type) (ream '*vase'))) [%| 'vases cannot be imported']) errors
158+ ['vase rejected' errors]
159+ =/ expect-valid=imported
160+ [%fork ~[[%cell [%face %x [%atom %ud ~]] [%face %y [%atom %ud ~]]] [%atom %ud ~]]]
161+ =/ errors ?: =((sample %valid-cell) [%& expect-valid]) errors
162+ ['disjoint cell union' errors]
163+ =/ errors ?: =((sample %invalid-cell) [%| 'Hoon $^ union disjointness could not be verified']) errors
164+ ['overlapping cell union is rejected' errors]
165+ =/ errors ?: =((shad %mn) [%| 'Hoon collection provenance is unavailable or shadowed']) errors
166+ ['local mop shadow in a field is rejected' errors]
167+ =/ errors ?: =((shad %mm) [%| 'Hoon collection provenance is unavailable or shadowed']) errors
168+ ['local mop shadow is rejected' errors]
169+ =/ errors ?: =((shad %aa) [%| 'Hoon collection provenance is unavailable or shadowed']) errors
170+ ['local jar shadow is rejected' errors]
171+ =/ errors ?: =((shad %bb) [%| 'Hoon collection provenance is unavailable or shadowed']) errors
172+ ['local jug shadow in a field is rejected' errors]
173+ =/ errors ?: =((read-mold %small %jar-test (~(play ut sc) (ream '*jar-test'))) [%| 'Hoon collection provenance is unavailable or shadowed']) errors
174+ ['missing provenance is rejected' errors]
175+ =/ expect-timing=imported
176+ [%cell [%face %since [%atom %da ~]] [%face %timeout [%apply %unit ~[[%atom %dr ~]]]]]
177+ =/ errors ?: =((present %timing) [%& expect-timing]) errors
178+ ['Tlon presence timing' errors]
179+ =/ errors ?: =((read-mold %external %bad bad-branch-fixture) [%| 'a Hoon $^ union needs a source-level disjointness check']) errors
180+ ['failed branch expansion is reported' errors]
181+ =/ expect-saga=imported
182+ [%fork ~[[%cell [%atom %tas [~ %chi]] [%atom %n [~ 0]]] [%cell [%atom %tas [~ %lev]] [%atom %n [~ 0]]] [%cell [%atom %tas [~ %dex]] [%face %ver [%atom %ud ~]]]]]
183+ =/ errors ?: =((tlon %saga) [%& expect-saga]) errors
184+ ['Tlon saga union' errors]
185+ =/ errors ?: =((tlon %epic) [%& [%atom %ud ~]]) errors
186+ ['Tlon epic atom' errors]
187+ errors
188+::
189+:: Clay includes debug spans around source nodes. Reproduce that
190+:: shape without Clay so the same regression runs under eval and -test.
191+++ decorate-union-source
192+ |= h=hoon
193+ ^- hoon
194+ =/ at=spot [/tests/importer/synthetic/hoon [[1 1] [1 2]]]
195+ ?^ -.h [%dbug at [$(h -.h) $(h +.h)]]
196+ ?+ h [%dbug at h]
197+ [%note *] [%dbug at h(q $(h q.h))]
198+ [%ktts *] [%dbug at h(q $(h q.h))]
199+ [%wtcl *] [%dbug at h(q $(h q.h), r $(h r.h))]
200+ ==
201+::
202+++ debug-union-fixture
203+ =, jibb-import
204+ |= [cor=type name=term]
205+ ^- (each imported @t)
206+ =/ typ=type (~(play ut cor) (ream (cat 3 '*' name)))
207+ ?. ?=([%hold *] typ) [%| 'synthetic union is not a hold']
208+ =/ original=hoon q.typ
209+ ?. ?=([%tsls [%note * *] *] original) [%| 'synthetic union source is unavailable']
210+ =/ source=hoon original(q.p (decorate-union-source q.p.original))
211+ (read-mold %small name typ(q source))
212+::
213+:: Test debug metadata at the spec boundary without assuming that the
214+:: eval version of Hoon's spec mold itself includes Clay's %dbug tag.
215+++ debug-spec-fixture
216+ =, jibb-import
217+ ^- tape
218+ =/ location=* [/tests/importer/synthetic/hoon [[1 1] [1 2]]]
219+ =/ wrapped=* [%dbug location [%leaf %tas %x]]
220+ =/ got=(unit *) (source-gist-tail wrapped)
221+ ?~ got "debug wrapper missing"
222+ =/ leaf=(each spec tang) (mule |.(;;(spec u.got)))
223+ ?. ?=([%& [%leaf %tas %x]] leaf) "debug leaf not recovered"
224+ =/ branch=spec [%bccl ~[p.leaf [%base [%atom %t]]]]
225+ ?^ (tagged-cases ~[branch branch] ~) "duplicate tags accepted"
226+ =/ broken=(unit *) (source-gist-tail [%dbug location 42])
227+ ?~ broken "debug wrapper missing"
228+ =/ invalid=(each spec tang) (mule |.(;;(spec u.broken)))
229+ ?: ?=(%& -.invalid) "malformed spec accepted"
230+ "valid wrapper; duplicate and malformed rejected"
231+::
232+:: The same named-operand call with Clay-style source-location wrappers.
233+++ debug-mop-fixture
234+ =, jibb-import
235+ |= cor=type
236+ ^- tape
237+ =/ typ=type (~(play ut cor) (ream '*mop-wing-valid'))
238+ ?> ?=([%hold *] typ)
239+ =/ original=hoon q.typ
240+ ?> ?=([%tsls [%note * *] *] original)
241+ =/ body=hoon q.p.original
242+ ?> ?=([%cncl *] body)
243+ ?> ?=([%tsgr *] p.body)
244+ =/ b=hoon q.p.body
245+ ?> ?=([%cncl *] b)
246+ =/ call=hoon p.b
247+ ?> ?=([%cncl *] call)
248+ ?> ?=([* [* ~]] q.call)
249+ =/ at=spot [/tests/importer/synthetic/hoon [[1 1] [1 2]]]
250+ =/ inner=hoon call(p [%dbug at p.call], q ~[[%dbug at i.q.call] [%dbug at i.t.q.call]])
251+ =/ outer=hoon body(p p.body(q b(p [%dbug at inner])))
252+ =/ mixed=hoon body(p p.body(q b(p inner)))
253+ =/ multi=hoon body(p p.body(q b(p call(p [%dbug at [%wing ~[%one %two]]]))))
254+ =/ plain=(unit [key=spec value=spec]) (mop-specs body)
255+ ?~ plain "unwrapped mop not recognized"
256+ ?. =((mop-specs [%dbug at outer]) plain) "wrapped mop not recognized"
257+ ?. =((mop-specs mixed) plain) "mixed mop not recognized"
258+ ?^ (mop-specs multi) "multi-segment callee accepted"
259+ ?^ (mop-specs [%dbug at [%sand %ud 42]]) "malformed call accepted"
260+ ?^ (source-single-wing [%dbug at 42]) "malformed wing accepted"
261+ ?^ (source-single-wing [%dbug at [%wing ~[%one %two]]]) "multi-segment operand accepted"
262+ =/ four=* [%dbug at [%dbug at [%dbug at [%dbug at [%wing ~[%mop]]]]]]
263+ =/ five=* [%dbug at four]
264+ ?~ (source-single-wing four) "four wrappers rejected"
265+ ?^ (source-single-wing five) "wrapper limit exceeded"
266+ ?~ (source-note-unwrap four 4) "four note wrappers rejected"
267+ ?^ (source-note-unwrap five 4) "note wrapper limit exceeded"
268+ =/ selected=(unit hoon) (local-arm-source cor %tag-valid)
269+ ?~ selected "selected union not found"
270+ =/ arm-four=hoon [%dbug at [%dbug at [%dbug at [%dbug at u.selected]]]]
271+ =/ arm-five=hoon [%dbug at arm-four]
272+ ?~ (tagged-source-code arm-four %tag-valid) "four wrapped selected arms rejected"
273+ ?^ (tagged-source-code arm-five %tag-valid) "selected arm wrapper limit exceeded"
274+ "wrapped and mixed calls accepted; malformed, multi-segment and excessive wrappers rejected"
275+::
276+:: Synthetic nodes test each part of the direct collection-call proof.
277+++ collection-wrapper-fixture
278+ =, jibb-import
279+ ^- tape
280+ =/ call=hoon [%cncl [%tsgr [%wing ~[[%.y 7]]] [%cncl [%wing ~[%list]] ~]] ~[[%$ 6]]]
281+ =/ subject=hoon [%cncl [%tsgr [%wing ~[[%.y 8]]] [%cncl [%wing ~[%list]] ~]] ~[[%$ 6]]]
282+ =/ sample=hoon [%cncl [%tsgr [%wing ~[[%.y 7]]] [%cncl [%wing ~[%list]] ~]] ~[[%$ 2]]]
283+ =/ good=hoon [%tsls [%note [%made %x ~] call] [%tsls [%dtts [%$ 14] [%$ 2]] [%$ 6]]]
284+ =/ tail=hoon [%tsls [%note [%made %x ~] call] [%$ 6]]
285+ =/ args=(list [hoon hoon]) ~[[call good] [subject good] [sample good] [call tail]]
286+ =/ flags=(list ?) (turn args |=(pair=[hoon hoon] (direct-collection-source -.pair +.pair)))
287+ ?: =(flags ~[& | | |]) "valid; forged subject, sample and tail rejected"
288+ "wrapper guard failed"
289+::
290+++ overlap-fork-fixture
291+ ^- type
292+ =/ nodes=(list type) ~[[%atom %ud ~] [%atom %t ~]]
293+ [%fork (silt nodes)]
294+::
295+++ invalid-fork-fixture
296+ ^- type
297+ =/ nodes=(list type) ~[[%atom %ud ~] [%atom %sd ~]]
298+ [%fork (silt nodes)]
299+::
300+++ fixture-output
301+ =, jibb-import
302+ |= [small=@t epic=@t presence=@t docs=@t shadow=@t shadow-static=@t ford=@t mark=@t mark-rec=@t mark-gate=@t mark-basic=@t origin-trans=@t origin-first=@t origin-other=@t]
303+ ^- wain
304+ =/ sc=type -:(ride zuse-type small)
305+ =/ ec=type -:(ride zuse-type epic)
306+ =/ pc=type -:(ride zuse-type presence)
307+ =/ dc=type -:(ride zuse-type docs)
308+ =/ hc=type -:(ride zuse-type shadow)
309+ =/ xc=type -:(ride zuse-type shadow-static)
310+ =/ fp=type [%cell [%face %small sc] zuse-type]
311+ =/ other=type -:(ride zuse-type origin-other)
312+ =/ fc=type -:(ride fp ford)
313+ ?> ?=([%core *] fc)
314+ =/ only-list=@t '|%\0a+$ lists (list @ud)\0a--\0a'
315+ =/ tp=type [%cell [%face %intermediate fc] zuse-type]
316+ =/ tc=type -:(ride tp only-list)
317+ =/ sp=type [%cell [%face %small xc] zuse-type]
318+ =/ shc=type -:(ride sp only-list)
319+ =/ mark-core=type -:(ride fp mark)
320+ =/ mark-rec-core=type -:(ride fp mark-rec)
321+ =/ mark-gate-core=type -:(ride zuse-type mark-gate)
322+ =/ mark-basic-core=type -:(ride zuse-type mark-basic)
323+ =/ make-mark
324+ |= [field=@t scope=type]
325+ ^- type
326+ -:(ride scope (crip "|_ a={(trip field)}\0a++ grab |% ++ noun a --\0a++ grow |% ++ noun a --\0a++ grad %noun\0a--\0a"))
327+ =/ mark-union-core=type (make-mark 'mark-flag-valid:small' fp)
328+ =/ mark-overlap-core=type (make-mark 'mark-flag-overlap:small' fp)
329+ =/ mark-hidden-core=type (make-mark 'mark-flag-hidden:small' fp)
330+ =/ mark-signed-core=type (make-mark 'signed:small' fp)
331+ =/ mark-callable-core=type (make-mark 'gate-test:small' fp)
332+ =/ extra-subject=type [%cell [%face %other other] fp]
333+ =/ mark-extra-core=type (make-mark 'mark-flag-valid:small' extra-subject)
334+ =/ other-hold=type (~(play ut other) (ream '*chain'))
335+ =/ recursive-hold=type (~(play ut sc) (ream '*chain'))
336+ =/ fake-vase=type -:(ride zuse-type '|%\0a+$ vase @ud\0a--\0a')
337+ =/ spoof=(unit import-diagnostic)
338+ (first-invalid [%bad 'signed and float auras cannot be imported'])
339+ ?> ?=(^ spoof)
340+ =/ mark-shadow-core=type -:(ride sp mark-basic)
341+ =/ tshp=type [%cell [%face %intermediate shc] zuse-type]
342+ =/ tshc=type -:(ride tshp only-list)
343+ =/ trans=type -:(ride tp origin-trans)
344+ =/ ambiguous-parent=type [%cell [%face %first sc] [%cell [%face %second sc] zuse-type]]
345+ =/ ambiguous=type -:(ride ambiguous-parent origin-first)
346+ =/ distinct-parent=type [%cell [%face %first sc] [%cell [%face %second other] zuse-type]]
347+ =/ distinct=type -:(ride distinct-parent origin-first)
348+ =/ trans-amb-parent=type [%cell [%face %intermediate fc] [%cell [%face %second sc] zuse-type]]
349+ =/ trans-amb=type -:(ride trans-amb-parent origin-trans)
350+ =/ tag-child=@t
351+ '|%\0a+$ tag-invalid-cell @t\0a+$ choice $%([%ok a=tag-invalid-cell] [%err a=@ud])\0a--\0a'
352+ =/ tag-collision=type -:(ride [%cell [%face %base sc] zuse-type] tag-child)
353+ =/ tag-clean=type -:(ride [%cell [%face %base other] zuse-type] tag-child)
354+ =/ tag-zuse=@t
355+ '|%\0a+$ ship @t\0a+$ path @ud\0a+$ choice $%([%ok who=ship] [%err where=path])\0a--\0a'
356+ =/ tag-zuse-core=type -:(ride zuse-type tag-zuse)
357+ =/ nest-parent-src=@t
358+ '|%\0a+$ tag-nest-inner $%([%foreign @t] [%foreign @t])\0a--\0a'
359+ =/ nest-parent=type -:(ride zuse-type nest-parent-src)
360+ =/ nest-child-src=@t
361+ '|%\0a+$ tag-nest-inner $%([%left @t] [%right @ud])\0a+$ tag-nest-middle $%([%one x=tag-nest-inner] [%two ~])\0a--\0a'
362+ =/ nest-collision=type -:(ride [%cell [%face %base nest-parent] zuse-type] nest-child-src)
363+ =/ self-parent=type
364+ -:(ride zuse-type '|%\0a+$ tag-self ?(%same %same)\0a--\0a')
365+ =/ self-child=@t
366+ '|%\0a+$ tag-self $%([%branch children=(list tag-self)] [%leaf value=@t])\0a--\0a'
367+ =/ self-collision=type -:(ride [%cell [%face %tag-self self-parent] zuse-type] self-child)
368+ =/ self-other=type
369+ -:(ride zuse-type '|%\0a+$ tag-self $%([%branch children=(list tag-self)] [%leaf value=@ud])\0a--\0a')
370+ =/ mop-ford-parent=type
371+ -:(ride zuse-type '|%\0a+$ value ?(%same %same)\0a--\0a')
372+ =/ mop-ford-child=type
373+ -:(ride [%cell [%face %value mop-ford-parent] zuse-type] '|%\0a+$ key @ud\0a+$ value @t\0a+$ mm ((mop key value) lte)\0a--\0a')
374+ =/ sample
375+ |= name=term
376+ (read-mold-in %small name (~(play ut sc) (ream (cat 3 '*' name))) sc)
377+ =/ tlon
378+ |= name=term
379+ (read-mold-in %epic name (~(play ut ec) (ream (cat 3 '*' name))) ec)
380+ =/ present
381+ |= name=term
382+ (read-mold-in %presence name (~(play ut pc) (ream (cat 3 '*' name))) pc)
383+ =/ shad
384+ |= name=term
385+ (read-mold-in %shadow name (~(play ut hc) (ream (cat 3 '*' name))) hc)
386+ =/ docs-type
387+ |= name=term
388+ (read-mold-in %docs name (~(play ut dc) (ream (cat 3 '*' name))) dc)
389+ =/ chapter-tree=(map term hoon)
390+ (~(put by *(map term hoon)) %jar [%zpzp ~])
391+ =/ vase (read-mold %std %vase (~(play ut zuse-type) (ream '*vase')))
392+ :~ (crip "action: {(show-result (sample %action))}")
393+ (crip "optional: {(show-result (sample %optional))}")
394+ (crip "items: {(show-result (sample %items))}")
395+ (crip "containers: {(show-result (sample %containers))}")
396+ (crip "chain: {(show-result (sample %chain))}")
397+ (crip "jar: {(show-result (sample %jar-test))}")
398+ (crip "jug: {(show-result (sample %jug-test))}")
399+ (crip "nested-jar: {(show-result (sample %nested-jar))}")
400+ (crip "paired-aliases: {(show-result (sample %paired-aliases))}")
401+ (crip "nested-alias: {(show-result (sample %nested-alias))}")
402+ (crip "compound: {(show-result (sample %compound))}")
403+ (crip "compound-fields: {(show-result (sample %compound-fields))}")
404+ (crip "mop: {(show-result (sample %mop-test))}")
405+ (crip "nested-mop: {(show-result (sample %nested-mop))}")
406+ (crip "two-mops: {(show-result (sample %two-mops))}")
407+ (crip "mixed-mop: {(show-result (sample %mixed-mop))}")
408+ (crip "nested-static-mop: {(show-result (sample %nested-static-mop))}")
409+ (crip "collection-siblings: {(show-result (sample %collection-siblings))}")
410+ (crip "dynamic-sibling-mop: {(show-result (sample %dynamic-sibling-mop))}")
411+ (crip "mark-flag-source: {(show-result (read-named %small %mark-flag-valid sc))}")
412+ (crip "mark-flag-union: {(show-result (read-mark %flag-union mark-union-core))}")
413+ (crip "mark-flag-overlap: {(show-result (read-mark %flag-overlap mark-overlap-core))}")
414+ (crip "mark-flag-hidden: {(show-result (read-mark %flag-hidden mark-hidden-core))}")
415+ (crip "mark-flag-signed: {(show-result (read-mark %flag-signed mark-signed-core))}")
416+ (crip "mark-flag-callable: {(show-result (read-mark %flag-callable mark-callable-core))}")
417+ (crip "mark-flag-extra: {(show-result (read-mark %flag-extra mark-extra-core))}")
418+ (crip "mark-flag-other-hold: {?~((mark-union-fallback other-hold fp) "unsupported" "BAD")}")
419+ (crip "mark-flag-recursive-fallback: {?~((mark-union-fallback recursive-hold fp) "unsupported" "BAD")}")
420+ (crip "mark-record: {(show-result (read-mark %todo-item mark-core))}")
421+ (crip "mark-recursive: {(show-result (read-mark %recursive mark-rec-core))}")
422+ (crip "mark-gate: {(show-result (read-mark %bad mark-gate-core))}")
423+ (crip "mark-list: {(show-result (read-mark %list-mark mark-basic-core))}")
424+ (crip "mark-shadow: {(show-result (read-mark %list-mark mark-shadow-core))}")
425+ (crip "mark-not-core: {(show-result (read-mark %bad [%atom %ud ~]))}")
426+ (crip "ford-list: {(show-result (read-mold-in %ford %lists (~(play ut fc) (ream '*lists')) fc))}")
427+ (crip "ford-imported: {(show-result (read-mold-in %ford %wrapped (~(play ut fc) (ream '*wrapped')) fc))}")
428+ (crip "ford-recursive: {(show-result (read-mold-in %ford %recursive (~(play ut fc) (ream '*recursive')) fc))}")
429+ (crip "ford-local-recursive: {(show-result (read-mold-in %ford %local (~(play ut fc) (ream '*local')) fc))}")
430+ (crip "ford-recursive-transitive: {(show-result (read-named %outer %wrapped trans))}")
431+ (crip "ford-recursive-ambiguous: {(show-result (read-named %outer %pick-one ambiguous))}")
432+ (crip "ford-recursive-transitive-ambiguous: {(show-result (read-named %outer %wrapped trans-amb))}")
433+ (crip "ford-recursive-distinct-first: {(show-result (read-named %outer %pick-one distinct))}")
434+ (crip "ford-recursive-distinct-second: {(show-result (read-named %outer %pick-two distinct))}")
435+ (crip "ford-transitive: {(show-result (read-mold-in %ford %lists (~(play ut tc) (ream '*lists')) tc))}")
436+ (crip "ford-shadow: {(show-result (read-mold-in %ford %lists (~(play ut shc) (ream '*lists')) shc))}")
437+ (crip "ford-transitive-shadow: {(show-result (read-mold-in %ford %lists (~(play ut tshc) (ream '*lists')) tshc))}")
438+ (crip "ford-shadow-face: {?:((scope-safe [%cell [%face %list sc] zuse-type] %list) "wrong" "unsafe")}")
439+ (crip "ford-unknown: {?:((scope-safe [%cell [%atom %ud ~] zuse-type] %list) "wrong" "unsafe")}")
440+ (crip "ford-mismatched-core: {?:((scope-safe fc(p zuse-type) %list) "wrong" "unsafe")}")
441+ (crip "shadow-list-mop: {(show-result (read-mold-in %shadow-static %bad (~(play ut xc) (ream '*bad')) xc))}")
442+ (crip "named-mop: {(show-result (sample %named-mop))}")
443+ (crip "mop-list: {(show-result (sample %mop-list))}")
444+ (crip "mop-wing-valid: {(show-result (sample %mop-wing-valid))}")
445+ (crip "mop-wing-invalid-key: {(show-result (sample %mop-wing-invalid-key))}")
446+ (crip "mop-wing-invalid-key-alias: {(show-result (sample %mop-wing-invalid-key-alias))}")
447+ (crip "mop-wing-invalid-value: {(show-result (sample %mop-wing-invalid-value))}")
448+ (crip "mop-wing-invalid-value-alias: {(show-result (sample %mop-wing-invalid-value-alias))}")
449+ (crip "mop-wing-rec-key: {(show-result (sample %mop-wing-rec-key))}")
450+ (crip "mop-wing-rec-value: {(show-result (sample %mop-wing-rec-value))}")
451+ (crip "mop-wing-shadow: {(show-result (read-named %shadow %mmw hc))}")
452+ (crip "mop-wing-ford-collision: {(show-result (read-named %child %mm mop-ford-child))}")
453+ (crip "mop-wing-debug: {(debug-mop-fixture sc)}")
454+ (crip "signed: {(show-result (sample %signed))}")
455+ (crip "float: {(show-result (sample %float))}")
456+ (crip "gate: {(show-result (sample %gate-test))}")
457+ (crip "vase: {(show-result vase)}")
458+ (crip "failed-branch: {(show-result (read-mold %external %bad bad-branch-fixture))}")
459+ (crip "debug-spec: {debug-spec-fixture}")
460+ (crip "debug-union: {(show-result (debug-union-fixture sc %action))}")
461+ (crip "debug-union-overlap: {(show-result (debug-union-fixture sc %explicit-wut-overlap))}")
462+ (crip "debug-nested-cell: {(show-result (debug-union-fixture sc %nested-valid-cell))}")
463+ (crip "debug-nested-cell-overlap: {(show-result (debug-union-fixture sc %nested-invalid-cell))}")
464+ (crip "explicit-graph: {(show-result (read-mold %raw %raw overlap-fork-fixture))}")
465+ (crip "explicit-graph-unsupported: {(show-result (read-mold %raw %raw invalid-fork-fixture))}")
466+ (crip "explicit-wut-safe: {(show-result (sample %explicit-wut-safe))}")
467+ (crip "explicit-percent-overlap: {(show-result (sample %explicit-percent-overlap))}")
468+ (crip "explicit-wut-overlap: {(show-result (sample %explicit-wut-overlap))}")
469+ (crip "explicit-collapsed: {(show-result (sample %explicit-collapsed))}")
470+ (crip "explicit-subsumed: {(show-result (sample %explicit-subsumed))}")
471+ (crip "explicit-three: {(show-result (sample %explicit-three))}")
472+ (crip "explicit-unknown: {(show-result (sample %explicit-unknown))}")
473+ (crip "explicit-nested: {(show-result (sample %explicit-nested))}")
474+ (crip "collection-union-wrapper: {collection-wrapper-fixture}")
475+ (crip "collection-union-list: {(show-result (sample %collection-union-list))}")
476+ (crip "collection-union-set: {(show-result (sample %collection-union-set))}")
477+ (crip "collection-union-map-key: {(show-result (sample %collection-union-map-key))}")
478+ (crip "collection-union-map-value: {(show-result (sample %collection-union-map-value))}")
479+ (crip "collection-union-unit: {(show-result (sample %collection-union-unit))}")
480+ (crip "collection-union-collapsed: {(show-result (sample %collection-union-collapsed))}")
481+ (crip "collection-union-multiple: {(show-result (sample %collection-union-multiple))}")
482+ (crip "collection-union-nested: {(show-result (sample %collection-union-nested))}")
483+ (crip "collection-union-dependent: {(show-result (sample %collection-union-dependent))}")
484+ (crip "collection-union-shadow: {(show-result (read-named %shadow %collection-union-shadow xc))}")
485+ (crip "explicit-list: {(show-result (sample %explicit-list))}")
486+ (crip "explicit-set: {(show-result (sample %explicit-set))}")
487+ (crip "explicit-faces: {(show-result (sample %explicit-faces))}")
488+ (crip "explicit-alias: {(show-result (sample %explicit-alias))}")
489+ (crip "explicit-ford: {(show-result (read-named %outer %bad-union trans))}")
490+ (crip "explicit-shadow-path: {(show-result (read-named %shadow %path-shadow xc))}")
491+ (crip "list-bckt-field: {(show-result (sample %list-bckt-field))}")
492+ (crip "list-noun-overlap: {(show-result (sample %list-noun-overlap))}")
493+ (crip "list-null-overlap: {(show-result (sample %list-null-overlap))}")
494+ (crip "list-nested-atom-cell: {(show-result (sample %list-nested-atom-cell))}")
495+ (crip "list-nested-valid-cell: {(show-result (sample %list-nested-valid-cell))}")
496+ (crip "list-nested-invalid-cell: {(show-result (sample %list-nested-invalid-cell))}")
497+ (crip "map-nested-invalid-cell: {(show-result (sample %map-nested-invalid-cell))}")
498+ (crip "set-direct-invalid-cell: {(show-result (sample %set-direct-invalid-cell))}")
499+ (crip "map-key-invalid-cell: {(show-result (sample %map-key-invalid-cell))}")
500+ (crip "nested-atom-cell: {(show-result (sample %nested-atom-cell))}")
501+ (crip "nested-tags: {(show-result (sample %nested-tags))}")
502+ (crip "nested-tags-overlap: {(show-result (sample %nested-tags-overlap))}")
503+ (crip "nested-tagged: {(show-result (sample %nested-tagged))}")
504+ (crip "nested-tagged-bckt: {(show-result (sample %nested-tagged-bckt))}")
505+ (crip "nested-tagged-overlap: {(show-result (sample %nested-tagged-overlap))}")
506+ (crip "nested-tagged-alias: {(show-result (sample %nested-tagged-alias))}")
507+ (crip "nested-tagged-ford: {(show-result (read-named %outer %tagged trans))}")
508+ (crip "tag-static-valid: {?:((fixed-cell-mold [%wtgr [%dtts [%$ 13] [%rock %$ %foo]] [%rock %tas %foo]] 13) "yes" "no")}")
509+ (crip "tag-static-wrong-axis: {?:((fixed-cell-mold [%wtgr [%dtts [%$ 12] [%rock %$ %foo]] [%rock %tas %foo]] 13) "wrong" "no")}")
510+ (crip "tag-static-nonconstant: {?:((fixed-cell-mold [%wtgr [%dtts [%$ 13] [%rock %$ %foo]] [%$ 13]] 13) "wrong" "no")}")
511+ (crip "tag-static-wrong-value: {?:((fixed-cell-mold [%wtgr [%dtts [%$ 13] [%rock %$ %foo]] [%rock %tas %bar]] 13) "wrong" "no")}")
512+ (crip "nested-first-cell: {(show-result (sample %nested-first-cell))}")
513+ (crip "nested-alias-cell: {(show-result (sample %nested-alias-cell))}")
514+ (crip "nested-multiple-cell: {(show-result (sample %nested-multiple-cell))}")
515+ (crip "nested-named-sibling: {(show-result (sample %nested-named-sibling))}")
516+ (crip "nested-list-sibling: {(show-result (sample %nested-list-sibling))}")
517+ (crip "nested-validated-sibling: {(show-result (sample %nested-validated-sibling))}")
518+ (crip "nested-validated-branch: {(show-result (sample %nested-validated-branch))}")
519+ (crip "nested-named-branch: {(show-result (sample %nested-named-branch))}")
520+ (crip "nested-ford-cell: {(show-result (read-named %outer %nested trans))}")
521+ (crip "nested-valid-cell: {(show-result (sample %nested-valid-cell))}")
522+ (crip "nested-invalid-cell: {(show-result (sample %nested-invalid-cell))}")
523+ (crip "valid-cell: {(show-result (sample %valid-cell))}")
524+ (crip "invalid-cell: {(show-result (sample %invalid-cell))}")
525+ (crip "chapter-malformed: {?:((chapter-unsafe [%x %y %z] %jar) "unsafe" "wrong")}")
526+ (crip "chapter-wrapped-malformed: {?:((chapter-unsafe [~ [%x %y %z]] %jar) "unsafe" "wrong")}")
527+ (crip "chapter-direct-hit: {?:(=((chapter-has chapter-tree %jar) [~ &]) "yes" "no")}")
528+ (crip "chapter-wrapped-hit: {?:(=((chapter-has [~ chapter-tree] %jar) [~ &]) "yes" "no")}")
529+ (crip "chapter-direct-miss: {?:(=((chapter-has chapter-tree %jug) [~ &]) "yes" "no")}")
530+ (crip "chapter-wrapped-miss: {?:(=((chapter-has [~ chapter-tree] %jug) [~ &]) "yes" "no")}")
531+ (crip "shadow-nested-mop: {(show-result (shad %mn))}")
532+ (crip "shadow-mop: {(show-result (shad %mm))}")
533+ (crip "shadow-jar: {(show-result (shad %aa))}")
534+ (crip "shadow-jug: {(show-result (shad %bb))}")
535+ (crip "no-provenance-atom: {(show-result (read-mold %small %word (~(play ut sc) (ream '*word'))))}")
536+ (crip "no-provenance-recursive: {(show-result (read-mold %wrong %alias (~(play ut sc) (ream '*chain'))))}")
537+ (crip "no-provenance: {(show-result (read-mold %small %jar-test (~(play ut sc) (ream '*jar-test'))))}")
538+ (crip "named-not-mold: {(show-result (read-named %small %not-mold sc))}")
539+ (crip "named-present: {(show-result (read-named %small %items sc))}")
540+ (crip "named-missing: {(show-result (read-named %small %missing sc))}")
541+ (crip "named-invalid-core: {(show-result (read-named %small %items [%atom %ud ~]))}")
542+ (crip "named-ford-recursive: {(show-result (read-named %ford %recursive fc))}")
543+ (crip "diagnostic-items: {(show-import-diagnostic (read-named-diagnostic %small %items sc))}")
544+ (crip "diagnostic-signed: {(show-import-diagnostic (read-named-diagnostic %small %signed sc))}")
545+ (crip "diagnostic-float: {(show-import-diagnostic (read-named-diagnostic %small %float sc))}")
546+ (crip "diagnostic-overlap: {(show-import-diagnostic (read-named-diagnostic %small %explicit-percent-overlap sc))}")
547+ (crip "diagnostic-unproved: {(show-import-diagnostic (read-named-diagnostic %small %list-nested-invalid-cell sc))}")
548+ (crip "diagnostic-mark-gate: {(show-import-diagnostic (read-mark-diagnostic %bad mark-gate-core))}")
549+ (crip "diagnostic-shadow-vase: {(show-import-diagnostic (read-named-diagnostic %fake %vase fake-vase))}")
550+ (crip "diagnostic-spoof: {(show-import-diagnostic u.spoof)}")
551+ (crip "missing-arm: {(show-result (read-mold-in %small %missing [%atom %ud ~] sc))}")
552+ (crip "wrong-provenance: {(show-result (read-mold-in %small %action (~(play ut sc) (ream '*items')) sc))}")
553+ (crip "unverified-subject: {(show-result (read-mold-in %std %jar (~(play ut zuse-type) (ream '*(jar @ud @t)')) zuse-type))}")
554+ (crip "tag-ford-collision: {(show-result (read-named %child %choice tag-collision))}")
555+ (crip "tag-ford-clean: {(show-result (read-named %child %choice tag-clean))}")
556+ (crip "tag-zuse-local: {(show-result (read-named %child %choice tag-zuse-core))}")
557+ (crip "tag-nest-inner: {(show-result (sample %tag-nest-inner))}")
558+ (crip "tag-nest-middle: {(show-result (sample %tag-nest-middle))}")
559+ (crip "tag-nest-diamond: {(show-result (sample %tag-nest-diamond))}")
560+ (crip "tag-nest-deep: {(show-result (sample %tag-nest-deep))}")
561+ (crip "tag-nest-hidden: {(show-result (sample %tag-nest-hidden))}")
562+ (crip "tag-nest-overlap: {(show-result (sample %tag-nest-overlap))}")
563+ (crip "tag-nest-recursive: {(show-result (sample %tag-nest-recursive-outer))}")
564+ (crip "tag-nest-rec-list: {(show-result (sample %tag-nest-rec-list-outer))}")
565+ (crip "tag-nest-rec-repeat: {(show-result (sample %tag-nest-rec-repeat))}")
566+ (crip "tag-nest-rec-duplicate: {(show-result (sample %tag-nest-rec-bad-outer))}")
567+ (crip "tag-nest-rec-hidden: {(show-result (sample %tag-nest-rec-hidden-outer))}")
568+ (crip "tag-nest-rec-mutual: {(show-result (sample %tag-nest-rec-mutual-outer))}")
569+ (crip "tag-nest-rec-outer-overlap: {(show-result (sample %tag-nest-rec-outer-overlap))}")
570+ (crip "tag-nest-rec-owner: {?:(&((contains-named-ref [%ref %small %tag-self] %small %tag-self) !(contains-named-ref [%named %small %other [%ref %small %tag-self]] %small %tag-self)) "yes" "wrong")}")
571+ (crip "tag-nest-many: {(show-result (sample %tag-nest-many))}")
572+ (crip "tag-nest-shadow: {(show-result (read-named %shadow-static %tag-nest-shadow xc))}")
573+ (crip "tag-nest-wrong-hold: {?~((nested-tagged-union %small (~(play ut other) (ream '*chain')) `sc) "unsupported" "BAD")}")
574+ (crip "tag-nest-ford-collision: {(show-result (read-named %outer %tag-nest-middle nest-collision))}")
575+ (crip "tag-self: {(show-result (sample %tag-self))}")
576+ (crip "tag-self-tail: {(show-result (sample %tag-self-tail))}")
577+ (crip "tag-self-duplicate: {(show-result (sample %tag-self-duplicate))}")
578+ (crip "tag-self-hidden: {(show-result (sample %tag-self-hidden))}")
579+ (crip "tag-self-indirect: {(show-result (sample %tag-self-indirect))}")
580+ (crip "tag-mutual-a: {(show-result (sample %tag-mutual-a))}")
581+ (crip "tag-mutual-b: {(show-result (sample %tag-mutual-b))}")
582+ (crip "tag-self-pair: {(show-result (sample %tag-self-pair))}")
583+ (crip "tag-self-ford-collision: {(show-result (read-named %child %tag-self self-collision))}")
584+ (crip "tag-self-wrong-core: {(show-result (read-mold-in %other %tag-self (~(play ut sc) (ream '*tag-self')) self-other))}")
585+ (crip "tag-flat-large: {?:(&(?=(~ (safe-source-name-mode %tag-fuel-7 sc ~ 256 |)) ?=(^ (safe-source-name-mode %tag-fuel-7 sc ~ 4.096 |)) ?=([%& *] (sample %tag-flat-large))) "supported above 256" "BAD")}")
586+ (crip "tag-null-good: {(show-result (sample %tag-null-good))}")
587+ (crip "tag-null-duplicate: {(show-result (sample %tag-null-duplicate))}")
588+ (crip "tag-null-hidden: {(show-result (sample %tag-null-hidden))}")
589+ (crip "tag-valid: {(show-result (sample %tag-valid))}")
590+ (crip "tag-duplicate: {(show-result (sample %tag-duplicate))}")
591+ (crip "tag-collapsed: {(show-result (sample %tag-collapsed))}")
592+ (crip "tag-invalid-direct: {(show-result (sample %tag-invalid-direct))}")
593+ (crip "tag-invalid-alias: {(show-result (sample %tag-invalid-alias))}")
594+ (crip "tag-invalid-list: {(show-result (sample %tag-invalid-list))}")
595+ (crip "tag-enum-good: {(show-result (sample %tag-enum-good))}")
596+ (crip "tag-enum-bad: {(show-result (sample %tag-enum-bad))}")
597+ (crip "tag-nested-good: {(show-result (sample %tag-nested-good))}")
598+ (crip "tag-shadow-jar: {(show-result (read-named %shadow-static %tag-shadow-jar xc))}")
599+ (crip "tag-shadow-jug: {(show-result (read-named %shadow-static %tag-shadow-jug xc))}")
600+ (crip "tag-fuel-small: {?:(?=(^ (safe-source-name %tag-fuel-2 sc ~ 64)) "yes" "no")}")
601+ (crip "tag-fuel-large: {?:(?=(~ (safe-source-name %tag-fuel-11 sc ~ 64)) "rejected" "wrong")}")
602+ (crip "presence-action-1: {(show-result (present %action-1))}")
603+ (crip "presence-command-1: {(show-result (present %command-1))}")
604+ (crip "presence-update-1: {(show-result (present %update-1))}")
605+ (crip "presence-response-1: {(show-result (present %response-1))}")
606+ (crip "presence-topic: {(show-result (present %topic))}")
607+ (crip "presence-timing: {(show-result (present %timing))}")
608+ (crip "presence-places: {(show-result (present %places))}")
609+ (crip "docs-ent: {(show-result (docs-type %ent))}")
610+ (crip "docs-nud: {(show-result (docs-type %nud))}")
611+ (crip "tlon-saga: {(show-result (tlon %saga))}")
612+ (crip "tlon-epic: {(show-result (tlon %epic))}")
613+ ==
50614--