From 955c9c8e3bee62868c22f6981bda46201192d06e Mon Sep 17 00:00:00 2001
From: Michele Alberti <michele.alberti@cea.fr>
Date: Mon, 14 Dec 2020 12:19:05 +0100
Subject: [PATCH] [server] Add msg-key to use relative filepath, especially in
 tests.

---
 src/plugins/server/kernel_main.ml                          | 7 ++++++-
 src/plugins/server/server_parameters.ml                    | 7 +++++++
 src/plugins/server/server_parameters.mli                   | 2 ++
 .../server/tests/batch/oracle/ast_services.out.json        | 6 ++----
 src/plugins/server/tests/batch/test_config                 | 2 +-
 5 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/plugins/server/kernel_main.ml b/src/plugins/server/kernel_main.ml
index e3c92e75a42..f57033cb136 100644
--- a/src/plugins/server/kernel_main.ml
+++ b/src/plugins/server/kernel_main.ml
@@ -90,10 +90,15 @@ struct
 
   let to_json p =
     let path = Filepath.(Normalized.to_pretty_string p.pos_path) in
+    let file =
+      if Server_parameters.has_relative_filepath ()
+      then path
+      else (p.Filepath.pos_path :> string)
+    in
     `Assoc [
       "dir"  , `String (Filename.dirname path) ;
       "base" , `String (Filename.basename path) ;
-      "file" , `String (p.Filepath.pos_path :> string) ;
+      "file" , `String file ;
       "line" , `Int p.Filepath.pos_lnum ;
     ]
 
diff --git a/src/plugins/server/server_parameters.ml b/src/plugins/server/server_parameters.ml
index be9b5da15c6..74a07c43b7f 100644
--- a/src/plugins/server/server_parameters.ml
+++ b/src/plugins/server/server_parameters.ml
@@ -73,3 +73,10 @@ let wkind = register_warn_category "inconsistent-kind"
 let wname = register_warn_category "invalid-name"
 
 (* -------------------------------------------------------------------------- *)
+(* --- Filepath Normalization                                             --- *)
+(* -------------------------------------------------------------------------- *)
+
+let use_relative_filepath = register_category "use-relative-filepath"
+let has_relative_filepath () = is_debug_key_enabled use_relative_filepath
+
+(* -------------------------------------------------------------------------- *)
diff --git a/src/plugins/server/server_parameters.mli b/src/plugins/server/server_parameters.mli
index af8c6dea9d1..ba41ba164c7 100644
--- a/src/plugins/server/server_parameters.mli
+++ b/src/plugins/server/server_parameters.mli
@@ -32,4 +32,6 @@ val wpage : warn_category (** Inconsistent page warning *)
 val wkind : warn_category (** Inconsistent category warning *)
 val wname : warn_category (** Invalid name warning *)
 
+val has_relative_filepath: unit -> bool
+
 (**************************************************************************)
diff --git a/src/plugins/server/tests/batch/oracle/ast_services.out.json b/src/plugins/server/tests/batch/oracle/ast_services.out.json
index 5ecfe153b22..a6223032cf2 100644
--- a/src/plugins/server/tests/batch/oracle/ast_services.out.json
+++ b/src/plugins/server/tests/batch/oracle/ast_services.out.json
@@ -11,8 +11,7 @@
           "sloc": {
             "dir": "tests/batch",
             "base": "ast_services.i",
-            "file":
-              "/home/michele/work/frama-c/src/plugins/server/tests/batch/ast_services.i",
+            "file": "tests/batch/ast_services.i",
             "line": 2
           }
         },
@@ -24,8 +23,7 @@
           "sloc": {
             "dir": "tests/batch",
             "base": "ast_services.i",
-            "file":
-              "/home/michele/work/frama-c/src/plugins/server/tests/batch/ast_services.i",
+            "file": "tests/batch/ast_services.i",
             "line": 1
           }
         }
diff --git a/src/plugins/server/tests/batch/test_config b/src/plugins/server/tests/batch/test_config
index 15a16cd4f95..4addf96dff8 100644
--- a/src/plugins/server/tests/batch/test_config
+++ b/src/plugins/server/tests/batch/test_config
@@ -1,2 +1,2 @@
 LOG: @PTEST_NAME@.out.json
-OPT: -no-autoload-plugins -load-module server -check -server-batch @PTEST_DIR@/@PTEST_NAME@.json -server-batch-output-dir @PTEST_RESULT@
+OPT: -no-autoload-plugins -load-module server -check -server-batch @PTEST_DIR@/@PTEST_NAME@.json -server-batch-output-dir @PTEST_RESULT@ -server-msg-key use-relative-filepath
-- 
GitLab