@@ -116,25 +116,26 @@ let pp_status_win fmt cmd status =
116
116
status = WEXITED 0
117
117
118
118
let pp_status = if Sys. win32 then pp_status_win else pp_status_unix
119
- let start_time = int_of_float ( Unix. time () )
119
+ let start_time = Unix. time ()
120
120
121
121
let deadline =
122
- let getint v = Option. bind (Sys. getenv_opt v) int_of_string_opt in
123
- let global = Option. value ~default: max_int (getint " DEADLINE" ) in
124
- match getint " TEST_TIMEOUT" with
122
+ let getfloat v = Option. bind (Sys. getenv_opt v) float_of_string_opt in
123
+ let global = Option. value ~default: Float. infinity (getfloat " DEADLINE" ) in
124
+ match getfloat " TEST_TIMEOUT" with
125
125
| None -> global
126
- | Some t -> min global (start_time + (t * 60 ))
126
+ | Some t -> min global (start_time +. (t *. 60. ))
127
127
128
128
let deadline_watcher pid () =
129
129
let open Unix in
130
130
assert (deadline > start_time);
131
- sleep (deadline - start_time);
132
- Atomic. set timed_out true ;
133
- if not Sys. win32 then (
134
- (* let's give it a little time to stop *)
135
- kill pid Sys. sigterm;
136
- sleep 2 );
137
- kill pid Sys. sigkill
131
+ if Float. is_finite deadline then (
132
+ sleepf (deadline -. start_time);
133
+ Atomic. set timed_out true ;
134
+ if not Sys. win32 then (
135
+ (* let's give it a little time to stop *)
136
+ kill pid Sys. sigterm;
137
+ sleep 2 );
138
+ kill pid Sys. sigkill)
138
139
139
140
let log_time cmd =
140
141
match Sys. getenv_opt " TIMELOGDIR" with
@@ -143,7 +144,7 @@ let log_time cmd =
143
144
let f = Filename. concat d " times.log" in
144
145
let flags = [ Open_wronly ; Open_append ; Open_creat ; Open_binary ] in
145
146
Out_channel. with_open_gen flags 0o666 f @@ fun oc ->
146
- let dur = int_of_float (Unix. time () ) - start_time in
147
+ let dur = int_of_float (Unix. time () -. start_time) in
147
148
let hours = dur / 3600
148
149
and minutes = dur mod 3600 / 60
149
150
and seconds = dur mod 60 in
0 commit comments