Safety feature for Path.rm_rf

This commit is contained in:
Rudi Grinberg 2018-05-08 16:58:38 +07:00
parent 08b33331ea
commit 47d54854e4
2 changed files with 8 additions and 1 deletions

View File

@ -489,6 +489,10 @@ let rm_rf =
Unix.rmdir dir
in
fun t ->
if not (is_local t) then (
Exn.code_error "Path.rm_rf called on external dir"
["t", sexp_of_t t]
);
let fn = to_string t in
match Unix.lstat fn with
| exception Unix.Unix_error(ENOENT, _, _) -> ()

View File

@ -161,5 +161,8 @@ Path.append (Path.of_string "/root") (Path.relative Path.build_dir "foo")
Path.rm_rf (Path.of_string "/does/not/exist/foo/bar/baz")
[%%expect{|
- : unit = ()
Exception: Stdune__Exn.Code_error <abstr>.
Raised at file "src/stdune/exn.ml", line 30, characters 37-131
Called from file "src/stdune/path.ml", line 496, characters 4-127
Called from file "toplevel/toploop.ml", line 180, characters 17-56
|}]