From e69d03fdfb88930e421e3d8cdf61354650067a69 Mon Sep 17 00:00:00 2001
From: Patrick Baudin <patrick.baudin@cea.fr>
Date: Mon, 27 Jun 2022 15:40:40 +0200
Subject: [PATCH] [ptests] allows dependencies to ~/.why3.conf

---
 ptests/ptests.ml                             | 14 +++++++++++++-
 src/plugins/wp/tests/why3/test_config_qualif |  1 +
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/ptests/ptests.ml b/ptests/ptests.ml
index aa26cc7bb18..8dbd21f6383 100644
--- a/ptests/ptests.ml
+++ b/ptests/ptests.ml
@@ -1242,9 +1242,20 @@ module Fmt = struct
   let var_libavailable pr fmt s = Format.fprintf fmt "%%{lib-available:%a.core}" pr s
   let package_as_deps pr fmt s = Format.fprintf fmt "(package %a)" pr s
 end
+
+let home_regexp = Str.regexp "^\\(~\\|[$]HOME\\|[$]\\{HOME\\}\\)\\(/.*\\)"
+let get_home_env () =
+  try
+    Unix.getenv "HOME"
+  with Not_found -> "~"
+
 let pp_list_deps fmt l =
   List.iter (fun s ->
       let s = Filename.sanitize_with_space s in
+      let s = match str_string_match2 home_regexp s 0 with
+        | None -> s
+        | Some (_,subdir) -> (get_home_env ()) ^ subdir
+      in
       if String.contains s '*' then
         Format.fprintf fmt " (glob_files %S)" s
       else
@@ -1914,7 +1925,8 @@ let () =
   List.iter (fun dir ->
       Format.printf "Test directory: %s@." dir;
       let absolute_tests_dir = Filename.dirname
-          (if Filename.is_relative dir then Filename.concat absolute_cwd dir else dir)
+          (if Filename.is_relative dir
+           then Filename.concat absolute_cwd dir else dir)
       in
       let suites = Ptests_config.parse ~dir in
       if !verbosity >= 1 then Format.printf "%% Nb config= %d@." (StringMap.cardinal suites);
diff --git a/src/plugins/wp/tests/why3/test_config_qualif b/src/plugins/wp/tests/why3/test_config_qualif
index 40a46bc821a..0e60b550835 100644
--- a/src/plugins/wp/tests/why3/test_config_qualif
+++ b/src/plugins/wp/tests/why3/test_config_qualif
@@ -1,4 +1,5 @@
 FILEREG: .*\.why
+DEPS: ~/.why3.conf
 CMD: why3 -L @PTEST_SHARE_DIR@/why3 prove -P alt-ergo
 OPT:
 COMMENT: the filter remove the information about time and steps
-- 
GitLab