Skip to content

Commit fe45ae4

Browse files
committed
feature: tests stanzas produce aliases
Signed-off-by: Ali Caglayan <[email protected]>
1 parent 6d1e608 commit fe45ae4

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

src/dune_rules/test_rules.ml

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
open Import
22
open Memo.O
33

4-
let alias mode ~dir =
4+
let runtest_alias mode ~dir =
55
match mode with
66
| `js mode -> Jsoo_rules.js_of_ocaml_runtest_alias ~dir ~mode
77
| `exe | `bc -> Memo.return Alias0.runtest
@@ -68,7 +68,7 @@ let rules (t : Tests.t) ~sctx ~dir ~scope ~expander ~dir_contents =
6868
| false ->
6969
let loc = Nonempty_list.hd t.exes.names |> fst in
7070
Memo.parallel_iter runtest_modes ~f:(fun mode ->
71-
let* alias_name = alias mode ~dir in
71+
let* alias_name = runtest_alias mode ~dir in
7272
let alias = Alias.make alias_name ~dir in
7373
Simple_rules.Alias_rules.add_empty sctx ~loc ~alias)
7474
| true ->
@@ -97,7 +97,7 @@ let rules (t : Tests.t) ~sctx ~dir ~scope ~expander ~dir_contents =
9797
in
9898
Pform.Map.singleton test_pform [ Value.Path test_exe_path ]
9999
in
100-
let* runtest_alias = alias runtest_mode ~dir in
100+
let* runtest_alias = runtest_alias runtest_mode ~dir in
101101
let deps =
102102
(* is this useless? we are going to infer the dependency anyway *)
103103
match custom_runner with
@@ -114,9 +114,10 @@ let rules (t : Tests.t) ~sctx ~dir ~scope ~expander ~dir_contents =
114114
| `js JS | `exe | `bc -> t.deps)
115115
in
116116
let add_alias ~loc ~action =
117+
let alias = Alias.make ~dir (Alias.Name.of_string s) in
117118
(* CR rgrinberg: why are we going through the stanza api? *)
118-
let alias =
119-
{ Alias_conf.name = runtest_alias
119+
let alias_conf =
120+
{ Alias_conf.name = Alias.name alias
120121
; locks = t.locks
121122
; package = t.package
122123
; deps
@@ -125,7 +126,10 @@ let rules (t : Tests.t) ~sctx ~dir ~scope ~expander ~dir_contents =
125126
; loc
126127
}
127128
in
128-
Simple_rules.alias sctx ~extra_bindings ~dir ~expander alias
129+
Rules.Produce.Alias.add_deps
130+
(Alias.make ~dir runtest_alias)
131+
(Action_builder.dep (Dep.alias alias))
132+
>>> Simple_rules.alias sctx ~extra_bindings ~dir ~expander alias_conf
129133
in
130134
match test_kind dir_contents (loc, s, ext) with
131135
| `Regular -> add_alias ~loc ~action:run_action
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
Tests stanzas produce aliases with the executable names
2+
3+
$ cat > dune-project << EOF
4+
> (lang dune 3.17)
5+
> EOF
6+
7+
$ cat > dune << EOF
8+
> (tests
9+
> (names a b))
10+
> EOF
11+
12+
$ cat > a.ml << EOF
13+
> let () = print_endline "a"
14+
> EOF
15+
16+
$ cat > b.ml << EOF
17+
> let () = print_endline "b"
18+
> EOF
19+
20+
$ dune build @a @b
21+
a
22+
b

0 commit comments

Comments
 (0)