ocamltest: do not overwrite user-defined variables
parent
a8a2a7b757
commit
6ff2c11b25
|
@ -224,7 +224,7 @@ let initialize_test_exit_status_variables _log env =
|
|||
] env
|
||||
|
||||
let _ =
|
||||
Environments.register_initializer
|
||||
Environments.register_initializer Environments.Post
|
||||
"test_exit_status_variables" initialize_test_exit_status_variables;
|
||||
List.iter register
|
||||
[
|
||||
|
|
|
@ -95,18 +95,31 @@ let dump log environment =
|
|||
|
||||
(* Initializers *)
|
||||
|
||||
type kind = Pre | Post
|
||||
|
||||
type env_initializer = out_channel -> t -> t
|
||||
|
||||
let (initializers : (string, env_initializer) Hashtbl.t) = Hashtbl.create 10
|
||||
type initializers =
|
||||
{
|
||||
pre: (string, env_initializer) Hashtbl.t;
|
||||
post: (string, env_initializer) Hashtbl.t;
|
||||
}
|
||||
|
||||
let register_initializer name code = Hashtbl.add initializers name code
|
||||
let initializers = {pre = Hashtbl.create 10; post = Hashtbl.create 10}
|
||||
|
||||
let get_initializers = function
|
||||
| Pre -> initializers.pre
|
||||
| Post -> initializers.post
|
||||
|
||||
let register_initializer kind name code =
|
||||
Hashtbl.add (get_initializers kind) name code
|
||||
|
||||
let apply_initializer _log _name code env =
|
||||
code _log env
|
||||
|
||||
let initialize log env =
|
||||
let initialize kind log env =
|
||||
let f = apply_initializer log in
|
||||
Hashtbl.fold f initializers env
|
||||
Hashtbl.fold f (get_initializers kind) env
|
||||
|
||||
(* Modifiers *)
|
||||
|
||||
|
|
|
@ -43,11 +43,13 @@ val dump : out_channel -> t -> unit
|
|||
|
||||
(* Initializers *)
|
||||
|
||||
type kind = Pre | Post
|
||||
|
||||
type env_initializer = out_channel -> t -> t
|
||||
|
||||
val register_initializer : string -> env_initializer -> unit
|
||||
val register_initializer : kind -> string -> env_initializer -> unit
|
||||
|
||||
val initialize : env_initializer
|
||||
val initialize : kind -> env_initializer
|
||||
|
||||
(* Modifiers *)
|
||||
|
||||
|
|
|
@ -187,10 +187,12 @@ let test_file test_filename =
|
|||
test_build_directory_prefix;
|
||||
Builtin_variables.promote, promote;
|
||||
] in
|
||||
let root_environment =
|
||||
let rootenv =
|
||||
Environments.initialize Environments.Pre log initial_environment in
|
||||
let rootenv =
|
||||
interprete_environment_statements
|
||||
initial_environment rootenv_statements in
|
||||
let rootenv = Environments.initialize log root_environment in
|
||||
rootenv rootenv_statements in
|
||||
let rootenv = Environments.initialize Environments.Post log rootenv in
|
||||
let common_prefix = " ... testing '" ^ test_basename ^ "' with" in
|
||||
let initial_status =
|
||||
if skip_test then Skip_all_tests else Run rootenv
|
||||
|
|
|
@ -1365,8 +1365,8 @@ let run_ocamldoc =
|
|||
end
|
||||
|
||||
let _ =
|
||||
Environments.register_initializer "find_source_modules" find_source_modules;
|
||||
Environments.register_initializer "config_variables" config_variables;
|
||||
Environments.register_initializer Environments.Post "find_source_modules" find_source_modules;
|
||||
Environments.register_initializer Environments.Pre "config_variables" config_variables;
|
||||
List.iter register
|
||||
[
|
||||
setup_ocamlc_byte_build_env;
|
||||
|
|
Loading…
Reference in New Issue