my name is foo
+=head2 goalloc
+
+Inside goals, you can use C<goalloc> to get a printable source
+location of the goal, ie:
+
+ let goal foo () =
+ printf "%s\n" goalloc
+
+would print:
+
+ File "source.ml", line 2, characters 13-71 (end at line 3, character 23)
+
+Note that the actual string format depends on the internal OCaml
+function C<Loc.to_string> so it might change in future.
+
=head2 onfail, onsuccess, onrun
Inside goals you can register function(s) which run if the goal
let goal git_commit_tested commit =
let key = sprintf "repo-tested-%s" commit in
target (memory_exists key);
+ onrun (fun () -> memory_set key "1");
sh "
git clone %s test
./configure
make
make check
- " repo_url;
-
- (* Record that this commit was tested successfully. *)
- memory_set key "1"
+ " repo_url
every 30 minutes (fun () ->
let commit = shout "cd %s && git rev-parse HEAD" repo in
let goal tested version =
let key = "myapp-tested-" ^ version in
target (memory_exists key);
+ onrun (fun () -> memory_set key "1");
(* some code to test this version *)
-
- memory_set key "1"
Note in that example the value C<1> is arbitrary. You just want to
store I<any> value so that a later call to C<memory_exists> will