@@ -10,12 +10,12 @@ import simplifile.{
10
10
Enomem , Enospc , Enosr , Enostr , Enosys , Enotblk , Enotdir , Enotsup , Enxio ,
11
11
Eopnotsupp , Eoverflow , Eperm , Epipe , Erange , Erofs , Espipe , Esrch , Estale ,
12
12
Etxtbsy , Exdev , Execute , File , FilePermissions , NotUtf8 , Read , Unknown , Write ,
13
- append , append_bits , copy_directory , copy_file , create_directory ,
13
+ append , append_bits , copy , copy_directory , copy_file , create_directory ,
14
14
create_directory_all , create_file , create_symlink , delete , delete_all ,
15
15
file_info , file_info_permissions , file_info_permissions_octal , file_info_type ,
16
16
file_permissions_to_octal , get_files , is_directory , is_file , is_symlink ,
17
- link_info , read , read_bits , read_directory , rename_directory , rename_file ,
18
- set_permissions , set_permissions_octal , write , write_bits ,
17
+ link_info , read , read_bits , read_directory , rename , set_permissions ,
18
+ set_permissions_octal , write , write_bits ,
19
19
}
20
20
21
21
pub fn main ( ) {
@@ -224,7 +224,7 @@ pub fn copy_test() {
224
224
pub fn rename_test ( ) {
225
225
let assert Ok ( _ ) = write ( "Hello" , to : "./tmp/to_be_renamed.txt" )
226
226
let assert Ok ( Nil ) =
227
- rename_file ( "./tmp/to_be_renamed.txt" , to : "./tmp/renamed.txt" )
227
+ rename ( "./tmp/to_be_renamed.txt" , to : "./tmp/renamed.txt" )
228
228
let assert Ok ( False ) = is_file ( "./tmp/to_be_renamed.txt" )
229
229
let assert Ok ( True ) = is_file ( "./tmp/renamed.txt" )
230
230
let assert Ok ( _ ) = delete ( "./tmp/renamed.txt" )
@@ -266,8 +266,7 @@ pub fn rename_directory_test() {
266
266
|> write ( to : "./tmp/to_be_copied_dir/nested_dir/file.txt" )
267
267
268
268
// Copy the directory
269
- let assert Ok ( _ ) =
270
- rename_directory ( "./tmp/to_be_copied_dir" , to : "./tmp/copied_dir" )
269
+ let assert Ok ( _ ) = rename ( "./tmp/to_be_copied_dir" , to : "./tmp/copied_dir" )
271
270
272
271
// Assert the contents are correct
273
272
let assert Ok ( "Hello" ) = read ( "./tmp/copied_dir/file.txt" )
@@ -546,8 +545,6 @@ pub fn link_info_test() {
546
545
|> should . not_equal ( 6 )
547
546
}
548
547
549
- /// I visually inspected this info to make sure it matched on all targets.
550
- /// TODO: Add a better test setup for validating file info functionality.
551
548
pub fn clear_directory_test ( ) {
552
549
let assert Ok ( _ ) = create_directory_all ( "./tmp/clear_dir" )
553
550
let assert Ok ( _ ) = create_directory_all ( "./tmp/clear_dir/nested_dir" )
@@ -672,3 +669,59 @@ pub fn describe_error_test() {
672
669
let assert "Unknown error: Something went wrong" =
673
670
simplifile . describe_error ( Unknown ( "Something went wrong" ) )
674
671
}
672
+
673
+ pub fn file_info_follows_simlinks_recursively_test ( ) {
674
+ let assert Ok ( _ ) = create_file ( "./tmp/base.txt" )
675
+ let assert Ok ( _ ) = create_symlink ( from : "./tmp/layer_1.txt" , to : "./base.txt" )
676
+ let assert Ok ( _ ) =
677
+ create_symlink ( from : "./tmp/layer_2.txt" , to : "./layer_1.txt" )
678
+
679
+ let assert Ok ( fi ) = file_info ( "./tmp/layer_2.txt" )
680
+ fi |> file_info_type |> should . equal ( File )
681
+
682
+ let assert Ok ( _ ) = create_directory ( "./tmp/base_dir" )
683
+ let assert Ok ( _ ) = create_symlink ( from : "./tmp/layer_1_dir" , to : "./base_dir" )
684
+ let assert Ok ( _ ) =
685
+ create_symlink ( from : "./tmp/layer_2_dir" , to : "./layer_1_dir" )
686
+
687
+ let assert Ok ( fi ) = file_info ( "./tmp/layer_2_dir" )
688
+ fi |> file_info_type |> should . equal ( Directory )
689
+ }
690
+
691
+ pub fn copy_can_copy_whatever_test ( ) {
692
+ let og_file = "./tmp/toodaloofile.txt"
693
+ let og_dir = "./tmp/toodaloofile_dir"
694
+ let symlink_to_file = "./tmp/toodaloolink.txt"
695
+
696
+ let assert Ok ( _ ) = write ( "Hello" , to : og_file )
697
+ let assert Ok ( _ ) = create_directory ( og_dir )
698
+ let assert Ok ( _ ) = write ( "Hello subfile" , to : og_dir <> "/subfile.txt" )
699
+ let assert Ok ( _ ) =
700
+ create_symlink ( from : symlink_to_file , to : "./toodaloofile.txt" )
701
+
702
+ let assert Ok ( _ ) = copy ( og_file , "./tmp/toodaloo_copied.txt" )
703
+ let assert Ok ( "Hello" ) = read ( "./tmp/toodaloo_copied.txt" )
704
+
705
+ let assert Ok ( _ ) = copy ( og_dir , "./tmp/toodaloo_copied_dir" )
706
+ let assert Ok ( [ "subfile.txt" ] ) = read_directory ( "./tmp/toodaloo_copied_dir" )
707
+ let assert Ok ( "Hello subfile" ) = read ( "./tmp/toodaloo_copied_dir/subfile.txt" )
708
+
709
+ let assert Ok ( _ ) = copy ( symlink_to_file , "./tmp/copied_link.txt" )
710
+ let assert Ok ( "Hello" ) = read ( "./tmp/copied_link.txt" )
711
+ }
712
+
713
+ pub fn rename_file_succeeds_at_renaming_a_directory_test ( ) {
714
+ // I am so dumb lol
715
+
716
+ let dir = "./tmp/i_am_a_dir"
717
+ let file = dir <> "/i_am_a_file.txt"
718
+ let assert Ok ( _ ) = create_directory_all ( dir )
719
+ let assert Ok ( _ ) = write ( "Hello" , to : file )
720
+ let new_dir = "./tmp/i_am_also_a_dir"
721
+
722
+ let assert Ok ( _ ) = rename ( at : dir , to : new_dir )
723
+
724
+ let assert Ok ( fi ) = file_info ( new_dir )
725
+ fi |> file_info_type |> should . equal ( Directory )
726
+ read ( new_dir <> "/i_am_a_file.txt" ) |> should . be_ok |> should . equal ( "Hello" )
727
+ }
0 commit comments