Allow to specify additional libraries for the test runner (#600)
This commit is contained in:
parent
b604871aab
commit
1feab6b2a6
|
@ -212,6 +212,21 @@ as:
|
||||||
|
|
||||||
The argument of the ``flags`` field follows the :ref:`ordered-set-language`.
|
The argument of the ``flags`` field follows the :ref:`ordered-set-language`.
|
||||||
|
|
||||||
|
Using additional libraries in the test runner
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
When tests are not part of the library code, it is possible that tests
|
||||||
|
require additional libraries than the library being tested. This is
|
||||||
|
the case with qtest_ as tests are written in comments. You can specify
|
||||||
|
such libraries using a ``libraries`` field, such as:
|
||||||
|
|
||||||
|
.. code:: ocaml
|
||||||
|
|
||||||
|
(library
|
||||||
|
((name foo)
|
||||||
|
(inline_tests ((backend qtest)
|
||||||
|
(libraries (bar))))))
|
||||||
|
|
||||||
Defining you own inline test backend
|
Defining you own inline test backend
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -111,19 +111,21 @@ include Sub_system.Register_end_point(
|
||||||
let name = Sub_system_name.make "inline_tests"
|
let name = Sub_system_name.make "inline_tests"
|
||||||
|
|
||||||
type t =
|
type t =
|
||||||
{ loc : Loc.t
|
{ loc : Loc.t
|
||||||
; deps : Dep_conf.t list
|
; deps : Dep_conf.t list
|
||||||
; flags : Ordered_set_lang.Unexpanded.t
|
; flags : Ordered_set_lang.Unexpanded.t
|
||||||
; backend : (Loc.t * string) option
|
; backend : (Loc.t * string) option
|
||||||
|
; libraries : (Loc.t * string) list
|
||||||
}
|
}
|
||||||
|
|
||||||
type Jbuild.Sub_system_info.t += T of t
|
type Jbuild.Sub_system_info.t += T of t
|
||||||
|
|
||||||
let empty loc =
|
let empty loc =
|
||||||
{ loc
|
{ loc
|
||||||
; deps = []
|
; deps = []
|
||||||
; flags = Ordered_set_lang.Unexpanded.standard
|
; flags = Ordered_set_lang.Unexpanded.standard
|
||||||
; backend = None
|
; backend = None
|
||||||
|
; libraries = []
|
||||||
}
|
}
|
||||||
|
|
||||||
let loc t = t.loc
|
let loc t = t.loc
|
||||||
|
@ -138,11 +140,14 @@ include Sub_system.Register_end_point(
|
||||||
field "deps" (list Dep_conf.t) ~default:[] >>= fun deps ->
|
field "deps" (list Dep_conf.t) ~default:[] >>= fun deps ->
|
||||||
Ordered_set_lang.Unexpanded.field "flags" >>= fun flags ->
|
Ordered_set_lang.Unexpanded.field "flags" >>= fun flags ->
|
||||||
field_o "backend" (located string) >>= fun backend ->
|
field_o "backend" (located string) >>= fun backend ->
|
||||||
|
field "libraries" (list (located string)) ~default:[]
|
||||||
|
>>= fun libraries ->
|
||||||
return
|
return
|
||||||
{ loc
|
{ loc
|
||||||
; deps
|
; deps
|
||||||
; flags
|
; flags
|
||||||
; backend
|
; backend
|
||||||
|
; libraries
|
||||||
})
|
})
|
||||||
|
|
||||||
let parsers =
|
let parsers =
|
||||||
|
@ -198,7 +203,11 @@ include Sub_system.Register_end_point(
|
||||||
>>= fun libs ->
|
>>= fun libs ->
|
||||||
Lib.DB.find_many (Scope.libs scope) [lib.name]
|
Lib.DB.find_many (Scope.libs scope) [lib.name]
|
||||||
>>= fun lib ->
|
>>= fun lib ->
|
||||||
Ok (lib @ libs))
|
Result.all
|
||||||
|
(List.map info.libraries
|
||||||
|
~f:(Lib.DB.resolve (Scope.libs scope)))
|
||||||
|
>>= fun more_libs ->
|
||||||
|
Ok (lib @ libs @ more_libs))
|
||||||
|> Super_context.Libs.requires sctx ~dir ~has_dot_merlin:false
|
|> Super_context.Libs.requires sctx ~dir ~has_dot_merlin:false
|
||||||
in
|
in
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue