Source file functoria_test.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
open Functoria
open Action.Syntax

let prelude i =
  Action.with_output ~path:(Info.main i) ~purpose:"init tests" @@ fun ppf ->
  Fmt.pf ppf
    {|(* Geneated by functoria_test *)

let (>>=) x f = f x
let return x = x
let run x = x

|}

let run ?(keys = []) ?init context device =
  let t = Impl.abstract device in
  let keys = keys @ Key.Set.elements (Engine.all_keys t) in
  let packages = Key.eval context (Engine.packages t) in
  let info =
    Functoria.Info.v ~packages ~context ~keys ~build_cmd:[ "build"; "me" ]
      ~src:`None "foo"
  in
  let t = Impl.eval ~context t in
  let* () = prelude info in
  let* () = Engine.configure info t in
  Engine.connect ?init info t