This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
93
unikernel/duniverse/dune_/otherlibs/stdune/test/io_tests.ml
Normal file
93
unikernel/duniverse/dune_/otherlibs/stdune/test/io_tests.ml
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
open Stdune
|
||||
|
||||
let temp_dir () = Temp.create Dir ~prefix:"copyfile" ~suffix:"test"
|
||||
|
||||
let%expect_test "copy file simple" =
|
||||
let dir = temp_dir () in
|
||||
let src = Path.relative dir "initial" in
|
||||
let dst = Path.relative dir "final" in
|
||||
Io.write_file src "foobarbaz";
|
||||
Io.copy_file ~src ~dst ();
|
||||
print_endline (Io.read_file dst);
|
||||
[%expect {| foobarbaz |}]
|
||||
;;
|
||||
|
||||
let%expect_test "copy file overwrite" =
|
||||
let dir = temp_dir () in
|
||||
let src = Path.relative dir "initial" in
|
||||
let dst = Path.relative dir "final" in
|
||||
Io.write_file src "foobarbaz";
|
||||
Io.write_file dst "xxx";
|
||||
Io.copy_file ~src ~dst ();
|
||||
print_endline (Io.read_file dst);
|
||||
[%expect {| foobarbaz |}]
|
||||
;;
|
||||
|
||||
let%expect_test "copy file chmod" =
|
||||
let dir = temp_dir () in
|
||||
let src = Path.relative dir "initial" in
|
||||
let dst = Path.relative dir "final" in
|
||||
Io.write_file src "foobarbaz";
|
||||
Io.copy_file ~chmod:(fun _ -> 428) ~src ~dst ();
|
||||
print_endline (Io.read_file dst);
|
||||
Printf.printf "permissions: %d\n" (Path.stat_exn dst).st_perm;
|
||||
[%expect
|
||||
{|
|
||||
foobarbaz
|
||||
permissions: 428 |}]
|
||||
;;
|
||||
|
||||
let%expect_test "copy file - no src" =
|
||||
let dir = temp_dir () in
|
||||
let src = Path.relative dir "initial" in
|
||||
let dst = Path.relative dir "final" in
|
||||
match Io.copy_file ~src ~dst () with
|
||||
| () -> assert false
|
||||
| exception Sys_error s ->
|
||||
let s =
|
||||
let _, exn = String.lsplit2_exn s ~on:':' in
|
||||
sprintf "$PATH:%s" exn
|
||||
in
|
||||
print_endline s;
|
||||
[%expect {| $PATH: No such file or directory |}]
|
||||
;;
|
||||
|
||||
let%expect_test "copy file - src is a directory" =
|
||||
let dir = temp_dir () in
|
||||
let src = Path.relative dir "initial" in
|
||||
let dst = Path.relative dir "final" in
|
||||
Unix.mkdir (Path.to_string src) 0o755;
|
||||
Io.copy_file ~src ~dst ();
|
||||
[%expect.unreachable]
|
||||
[@@expect.uncaught_exn {| (Sys_error "Is a directory") |}]
|
||||
;;
|
||||
|
||||
let%expect_test "copy file - dst is a directory" =
|
||||
let dir = temp_dir () in
|
||||
let src = Path.relative dir "initial" in
|
||||
let dst = Path.relative dir "final" in
|
||||
Io.write_file src "foobarbaz";
|
||||
Unix.mkdir (Path.to_string dst) 0o755;
|
||||
Unix.sleepf 0.5;
|
||||
match Io.copy_file ~src ~dst () with
|
||||
| _ -> assert false
|
||||
| exception Sys_error s ->
|
||||
let s =
|
||||
let _, exn = String.lsplit2_exn s ~on:':' in
|
||||
sprintf "$DIR:%s" exn
|
||||
in
|
||||
print_endline s;
|
||||
[%expect {| $DIR: Is a directory |}]
|
||||
;;
|
||||
|
||||
let%expect_test "making a directory for an existing file" =
|
||||
let dir = temp_dir () in
|
||||
let fn = Path.relative dir "foo" in
|
||||
Io.write_file fn "";
|
||||
(* This does not error, but it will if it ends with a "/" on MacOS *)
|
||||
ignore (Fpath.mkdir (Path.to_string fn));
|
||||
[%expect {| |}];
|
||||
Path.mkdir_p fn;
|
||||
(* This in turn does not error *)
|
||||
[%expect {| |}]
|
||||
;;
|
||||
Loading…
Add table
Add a link
Reference in a new issue