@@ -28,6 +28,12 @@ main! = |_args|
2828 # Test hard link creation
2929 test_hard_link!({})?
3030
31+ # Test file rename
32+ test_file_rename!({})?
33+
34+ # Clean up test files
35+ cleanup_test_files!({})?
36+
3137 Stdout.line!(" \nI ran all file function tests." )
3238
3339test_basic_file_operations! : {} => Result {} _
@@ -150,15 +156,55 @@ test_hard_link! = |{}|
150156 link_content = File.read_utf8!(" test_link_to_original. txt " )?
151157
152158 if original_content == link_content then
153- Stdout.line!(" ✓ Hard link contains same content as original" )?
159+ Stdout.line!(" ✓ Hard link contains same content as original" )
154160 else
155- Stderr.line!(" ✗ Hard link content differs from original" )?
161+ Stderr.line!(" ✗ Hard link content differs from original" )
156162
157163 Err(err) ->
158- Stderr.line!(" ✗ Hard link creation failed: ${Inspect . to_str (err )}")?
164+ Stderr.line!(" ✗ Hard link creation failed: ${Inspect . to_str (err )}")
159165
160- # Clean up test files
161- cleanup_test_files!({})
166+ test_file_rename ! : {} => Result {} _
167+ test_file_rename ! = |{}|
168+ Stdout . line !("\nTesting File . rename !:")?
169+
170+ # Create original file
171+ original_name = " test_rename_original.txt"
172+ new_name = " test_rename_new.txt"
173+ File . write_utf8 !("Content for rename test" , original_name)?
174+
175+ # Rename the file
176+ when File.rename!(original_name, new_name) is
177+ Ok({}) ->
178+ Stdout.line!(" ✓ Successfully renamed ${original_name} to ${new_name}" )?
179+
180+ # Verify original file no longer exists
181+ original_exists_after =
182+ when File.is_file!(original_name) is
183+ Ok(exists) -> exists
184+ Err(_) -> Bool.false
185+
186+ if original_exists_after then
187+ Stderr.line!(" ✗ Original file ${original_name} still exists after rename" )?
188+ else
189+ Stdout.line!(" ✓ Original file ${original_name} no longer exists" )?
190+
191+ # Verify new file exists and has correct content
192+ new_exists = File.is_file!(new_name)?
193+ if new_exists then
194+ Stdout.line!(" ✓ Renamed file ${new_name} exists" )?
195+
196+ content = File.read_utf8!(new_name)?
197+ if content == " Content for rename test" then
198+ Stdout.line!(" ✓ Renamed file has correct content" )?
199+ else
200+ Stderr.line!(" ✗ Renamed file has incorrect content" )?
201+ else
202+ Stderr.line!(" ✗ Renamed file ${new_name} does not exist" )?
203+
204+ Err(err) ->
205+ Stderr.line!(" ✗ File rename failed: ${Inspect . to_str (err )}")?
206+
207+ Ok ({})
162208
163209cleanup_test_files ! : {} => Result {} _
164210cleanup_test_files ! = |{}|
@@ -170,8 +216,9 @@ cleanup_test_files! = |{}|
170216 " test_write. json " ,
171217 " test_multiline. txt " ,
172218 " test_original_file. txt " ,
173- " test_link_to_original. txt "
219+ " test_link_to_original. txt " ,
220+ " test_rename_new. txt "
174221 ]
175222
176- List.for_each_try!(test_files, |filename| File.delete!(filename))?
223+ List.for_each_try!(test_files, |filename| File.delete!(filename)) ? |err| FileDeletionFailed(err)
177224 Stdout.line!(" ✓ Deleted all files." )
0 commit comments