urbit/.travis/test.ls

48 lines
1.3 KiB
Plaintext
Raw Normal View History

2018-03-09 23:47:45 +03:00
{Urbit,ERROR} = require './runner.ls'
urbit = new Urbit <[-B urbit.pill -A .. -cFI zod zod]>
Promise.resolve urbit
.then (urb)->
urb.note "Booting urbit"
2018-03-09 22:55:07 +03:00
Promise.race [
2018-03-09 23:47:45 +03:00
urb.expect ERROR .then ->
2018-03-10 01:25:43 +03:00
urb.warn "Boot error detected"
2018-03-09 22:55:07 +03:00
throw Error "Stack trace while booting"
, do
<- urb.expect /dojo> / .then
<- urb.expect-echo "%dojo-booted" .then
urb.reset-listeners!
2018-03-09 22:55:07 +03:00
]
.then (urb)->
urb.note "Testing compilation"
2018-03-10 01:25:43 +03:00
errs = {} #REVIEW stream reduce?
cur = "init"
urb.every />> (\/[ -~]+)/ ([_,path])-> cur := path
urb.every ERROR, ->
unless errs[cur]
errs[cur] = true
urb.warn "Compile error detected"
#
<- urb.line "|start %test" .then
<- urb.line ":test [%cores /]" .then
<- urb.expect-echo "%compilation-tested" .then
2018-03-10 01:25:43 +03:00
errs := Object.keys errs
if errs.length => throw Error "in #errs"
urb.reset-listeners!
.then (urb)->
urb.note "Running /===/tests"
2018-03-10 01:26:17 +03:00
errs = "" #REVIEW stream reduce?
urb.every /(\/[ -~]* (FAILED|CRASHED))/, ([_,result])->
if !errs => urb.warn "First error"
errs += "\n #result"
<- urb.line "+test, =defer |, =seed `@uvI`(shaz %reproducible)" .then
<- urb.expect-echo "%ran-tests" .then
2018-03-10 01:26:17 +03:00
if errs => throw Error errs
urb.reset-listeners!
.then ->
urbit.exit 0
.catch (err)->
<- urbit.wait-silent!then # assumptions?
2018-03-09 22:55:07 +03:00
urbit.warn "Test aborted:" err
urbit.exit 1