0 | module Evince.Report
 1 |
 2 | import Evince.Core
 3 |
 4 | ||| Outcome of a single test for structured reporting.
 5 | public export
 6 | data TestOutcome
 7 |   = Passed Integer
 8 |   | Failed FailureInfo Integer
 9 |   | Skipped (Maybe String)
10 |
11 | ||| A completed test with its describe path, source location, and outcome.
12 | public export
13 | record TestReport where
14 |   constructor MkTestReport
15 |   path    : List String
16 |   loc     : Maybe SrcLoc
17 |   outcome : TestOutcome
18 |
19 | ||| Convert nanoseconds to "S.MMMMs" (no unit suffix). Shared by reporters.
20 | export
21 | nanosToSeconds : Integer -> String
22 | nanosToSeconds nanos =
23 |   let ms = nanos `div` 1000000
24 |       s  = ms `div` 1000
25 |       r  = ms `mod` 1000
26 |       pad = if r < 10 then "00" else if r < 100 then "0" else ""
27 |   in show s ++ "." ++ pad ++ show r
28 |