Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 85b522b

Browse files
committed
add test
1 parent 3c82625 commit 85b522b

File tree

1 file changed

+39
-15
lines changed

1 file changed

+39
-15
lines changed

‎test/system/test_filesystem.f90

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module test_filesystem
22
use testdrive, only : new_unittest, unittest_type, error_type, check, skip_test
33
use stdlib_system, only: is_directory, delete_file, FS_ERROR, FS_ERROR_CODE, &
4-
make_directory, remove_directory
4+
make_directory, remove_directory, make_directory_all, is_windows
55
use stdlib_error, only: state_type, STDLIB_FS_ERROR
66

77
implicit none
@@ -22,6 +22,7 @@ subroutine collect_suite(testsuite)
2222
new_unittest("fs_delete_file_being_dir", test_delete_directory), &
2323
new_unittest("fs_make_dir", test_make_directory), &
2424
new_unittest("fs_make_dir_existing_dir", test_make_directory_existing), &
25+
new_unittest("fs_make_dir_all", test_make_directory_all), &
2526
new_unittest("fs_remove_dir", test_remove_directory), &
2627
new_unittest("fs_remove_dir_non_existent", test_remove_directory_nonexistent) &
2728
]
@@ -175,39 +176,39 @@ end subroutine test_delete_directory
175176
subroutine test_make_directory(error)
176177
type(error_type), allocatable, intent(out) :: error
177178
type(state_type) :: err
178-
character(len=256) :: filename
179+
character(len=256) :: dir_name
179180
integer :: ios,iocmd
180181
character(len=512) :: msg
181182

182-
filename = "test_directory"
183+
dir_name = "test_directory"
183184

184-
call make_directory(filename, err=err)
185+
call make_directory(dir_name, err=err)
185186
call check(error, err%ok(), 'Could not make directory: '//err%print())
186187
if (allocated(error)) return
187188

188189
! Clean up: remove the empty directory
189-
call execute_command_line('rmdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
190+
call execute_command_line('rmdir ' // dir_name, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
190191
call check(error, ios==0 .and. iocmd==0, 'Cannot cleanup make_directory test: '//trim(msg))
191192
end subroutine test_make_directory
192193

193194
subroutine test_make_directory_existing(error)
194195
type(error_type), allocatable, intent(out) :: error
195196
type(state_type) :: err
196-
character(len=256) :: filename
197+
character(len=256) :: dir_name
197198
integer :: ios,iocmd
198199
character(len=512) :: msg
199200

200-
filename = "test_directory"
201+
dir_name = "test_directory"
201202

202-
call execute_command_line('mkdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
203+
call execute_command_line('mkdir ' // dir_name, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
203204
call check(error, ios==0 .and. iocmd==0, 'Cannot init make_directory_existing test: '//trim(msg))
204205
if (allocated(error)) return
205206

206-
call make_directory(filename, err=err)
207+
call make_directory(dir_name, err=err)
207208
call check(error, err%error(), 'Made an already existing directory somehow')
208209

209210
! Clean up: remove the empty directory
210-
call execute_command_line('rmdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
211+
call execute_command_line('rmdir ' // dir_name, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
211212

212213
if (allocated(error)) then
213214
! if previous error is allocated as well
@@ -218,25 +219,48 @@ subroutine test_make_directory_existing(error)
218219
call check(error, ios==0 .and. iocmd==0, 'Cannot cleanup make_directory test: '//trim(msg))
219220
end subroutine test_make_directory_existing
220221

222+
subroutine test_make_directory_all(error)
223+
type(error_type), allocatable, intent(out) :: error
224+
type(state_type) :: err
225+
character(len=256) :: dir_name
226+
integer :: ios,iocmd
227+
character(len=512) :: msg
228+
229+
dir_name = "d1/d2/d3/d4/"
230+
231+
call make_directory_all(dir_name, err=err)
232+
call check(error, err%ok(), 'Could not make all directories: '//err%print())
233+
if (allocated(error)) return
234+
235+
! Clean up: remove the empty directory
236+
if (is_windows()) then
237+
call execute_command_line('rmdir /s /q ' // dir_name, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
238+
else
239+
call execute_command_line('rm -rf ' // dir_name, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
240+
end if
241+
242+
call check(error, ios==0 .and. iocmd==0, 'Cannot cleanup make_directory_all test: '//trim(msg))
243+
end subroutine test_make_directory_all
244+
221245
subroutine test_remove_directory(error)
222246
type(error_type), allocatable, intent(out) :: error
223247
type(state_type) :: err
224-
character(len=256) :: filename
248+
character(len=256) :: dir_name
225249
integer :: ios,iocmd
226250
character(len=512) :: msg
227251

228-
filename = "test_directory"
252+
dir_name = "test_directory"
229253

230-
call execute_command_line('mkdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
254+
call execute_command_line('mkdir ' // dir_name, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
231255
call check(error, ios==0 .and. iocmd==0, 'Cannot init remove_directory test: '//trim(msg))
232256
if (allocated(error)) return
233257

234-
call remove_directory(filename, err)
258+
call remove_directory(dir_name, err)
235259
call check(error, err%ok(), 'Could not remove directory: '//err%print())
236260

237261
if (allocated(error)) then
238262
! Clean up: remove the empty directory
239-
call execute_command_line('rmdir ' // filename, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
263+
call execute_command_line('rmdir ' // dir_name, exitstat=ios, cmdstat=iocmd, cmdmsg=msg)
240264
call check(error, ios==0 .and. iocmd==0, error%message // ' and cannot cleanup make_directory test: '//trim(msg))
241265
end if
242266
end subroutine test_remove_directory

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /