Skip to content

Commit c9345c1

Browse files
committed
added tests
1 parent 8d00eea commit c9345c1

File tree

1 file changed

+78
-2
lines changed

1 file changed

+78
-2
lines changed

test/system/test_filesystem.f90

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module test_filesystem
22
use testdrive, only : new_unittest, unittest_type, error_type, check, skip_test
3-
use stdlib_system, only: is_directory, delete_file
3+
use stdlib_system, only: is_directory, delete_file, make_directory, remove_directory
44
use stdlib_error, only: state_type
55

66
implicit none
@@ -17,7 +17,11 @@ subroutine collect_suite(testsuite)
1717
new_unittest("fs_is_directory_file", test_is_directory_file), &
1818
new_unittest("fs_delete_non_existent", test_delete_file_non_existent), &
1919
new_unittest("fs_delete_existing_file", test_delete_file_existing), &
20-
new_unittest("fs_delete_file_being_dir", test_delete_directory) &
20+
new_unittest("fs_delete_file_being_dir", test_delete_directory), &
21+
new_unittest("fs_make_dir", test_make_directory), &
22+
new_unittest("fs_make_dir_existing_dir", test_make_directory_existing), &
23+
new_unittest("fs_remove_dir", test_remove_directory), &
24+
new_unittest("fs_remove_dir_non_existent", test_remove_directory_nonexistent) &
2125
]
2226
end subroutine collect_suite
2327

@@ -145,7 +149,79 @@ subroutine test_delete_directory(error)
145149
if (allocated(error)) return
146150

147151
end subroutine test_delete_directory
152+
153+
subroutine test_make_directory(error)
154+
type(error_type), allocatable, intent(out) :: error
155+
type(state_type) :: err
156+
character(len=256) :: filename
157+
integer :: ios,iocmd
158+
character(len=512) :: msg
159+
160+
filename = "test_directory"
148161

162+
call make_directory(filename, err=err)
163+
call check(error, err%ok(), 'Could not make directory: '//err%print())
164+
if (allocated(error)) return
165+
166+
! Clean up: remove the empty directory
167+
call execute_command_line('rmdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
168+
call check(error, ios==0 .and. iocmd==0, 'Cannot cleanup make_directory test: '//trim(msg))
169+
if (allocated(error)) return
170+
end subroutine test_make_directory
171+
172+
subroutine test_make_directory_existing(error)
173+
type(error_type), allocatable, intent(out) :: error
174+
type(state_type) :: err
175+
character(len=256) :: filename
176+
integer :: ios,iocmd
177+
character(len=512) :: msg
178+
179+
filename = "test_directory"
180+
181+
call execute_command_line('mkdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
182+
call check(error, ios==0 .and. iocmd==0, 'Cannot init make_directory_existing test: '//trim(msg))
183+
if (allocated(error)) return
184+
185+
call make_directory(filename, err=err)
186+
call check(error, err%error(), 'Made an already existing directory somehow')
187+
188+
! Clean up: remove the empty directory
189+
call execute_command_line('rmdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
190+
call check(error, ios==0 .and. iocmd==0, 'Cannot cleanup make_directory test: '//trim(msg))
191+
if (allocated(error)) return
192+
end subroutine test_make_directory_existing
193+
194+
subroutine test_remove_directory(error)
195+
type(error_type), allocatable, intent(out) :: error
196+
type(state_type) :: err
197+
character(len=256) :: filename
198+
integer :: ios,iocmd
199+
character(len=512) :: msg
200+
201+
filename = "test_directory"
202+
203+
call execute_command_line('mkdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
204+
call check(error, ios==0 .and. iocmd==0, 'Cannot init remove_directory test: '//trim(msg))
205+
if (allocated(error)) return
206+
207+
call remove_directory(filename, err)
208+
call check(error, err%ok(), 'Could not remove directory: '//err%print())
209+
if (allocated(error)) then
210+
! Clean up: remove the empty directory
211+
call execute_command_line('rmdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
212+
call check(error, ios==0 .and. iocmd==0, 'Cannot cleanup make_directory test: '//trim(msg))
213+
if (allocated(error)) return
214+
end if
215+
end subroutine test_remove_directory
216+
217+
subroutine test_remove_directory_nonexistent(error)
218+
type(error_type), allocatable, intent(out) :: error
219+
type(state_type) :: err
220+
221+
call remove_directory("random_name", err)
222+
call check(error, err%error(), 'Somehow removed a non-existent directory!: ')
223+
if (allocated(error)) return
224+
end subroutine test_remove_directory_nonexistent
149225

150226
end module test_filesystem
151227

0 commit comments

Comments
 (0)