Mercurial > octave-libtiff
changeset 30211:54520422f056
simplify mkdir and allow it to create parent directory (bug #61166)
* mkdir.m: Always perform tilde expansion on parent. If both parent
and dirname are supplied, use fullfile to concatentate with dirname.
Recursively create all directories.
* system.tst: New test.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 24 Sep 2021 10:46:49 -0400 |
parents | 351dbe4da930 |
children | c27b9ba4c9bd |
files | scripts/miscellaneous/mkdir.m test/system.tst |
diffstat | 2 files changed, 43 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/miscellaneous/mkdir.m Mon Sep 27 12:59:34 2021 +0200 +++ b/scripts/miscellaneous/mkdir.m Fri Sep 24 10:46:49 2021 -0400 @@ -54,20 +54,18 @@ print_usage (); endif + parent = tilde_expand (parent); + if (nargin == 1) dirname = parent; - - if (is_absolute_filename (tilde_expand (dirname))) - parent = ""; - else - parent = [pwd(), filesep]; - endif else - parent = [parent, filesep]; + dirname = fullfile (parent, dirname); endif + dirname = make_absolute_filename (dirname); + ## Move leading directory names from dirname to parent - [parent, dirname, ext] = fileparts ([parent, dirname]); + [parent, dirname, ext] = fileparts (dirname); [sts, msg, msgid] = mkdir_recur (parent, [dirname, ext]);
--- a/test/system.tst Mon Sep 27 12:59:34 2021 +0200 +++ b/test/system.tst Fri Sep 24 10:46:49 2021 -0400 @@ -101,6 +101,43 @@ %!error <called with too many inputs> mkdir ("foo", 1, 2) %!error <Invalid call to rmdir> rmdir () +%!test <61166> +%! crr = confirm_recursive_rmdir (); +%! unwind_protect +%! confirm_recursive_rmdir (0); +%! tmp_dir = tempname (); +%! e1 = mkdir (tmp_dir); +%! ## parent dir that exists +%! mkdir (tmp_dir, "d1"); +%! mkdir (tmp_dir, "d2/foo"); +%! mkdir (tmp_dir, "d3/foo.bar"); +%! assert (isfolder (fullfile (tmp_dir, "d1"))); +%! assert (isfolder (fullfile (tmp_dir, "d2/foo"))); +%! assert (isfolder (fullfile (tmp_dir, "d3/foo.bar"))); +%! ## parent dir that does not exist +%! d4 = fullfile (tmp_dir, "d4"); +%! d5 = fullfile (tmp_dir, "d5"); +%! d6 = fullfile (tmp_dir, "d6"); +%! mkdir (d4, "foo"); +%! mkdir (d5, "foo/bar"); +%! mkdir (d6, "foo/bar.baz"); +%! assert (isfolder (fullfile (d4, "foo"))); +%! assert (isfolder (fullfile (d5, "foo/bar"))); +%! assert (isfolder (fullfile (d6, "foo/bar.baz"))); +%! d7 = fullfile (tmp_dir, "d7/foo"); +%! d8 = fullfile (tmp_dir, "d8/foo/bar"); +%! d9 = fullfile (tmp_dir, "d9/foo/bar.baz"); +%! mkdir (d7); +%! mkdir (d8); +%! mkdir (d9); +%! assert (isfolder (d7)); +%! assert (isfolder (d8)); +%! assert (isfolder (d9)); +%! unwind_protect_cleanup +%! rmdir (tmp_dir, "s"); +%! confirm_recursive_rmdir (crr); +%! end_unwind_protect + %!test %! crr = confirm_recursive_rmdir (); %! confirm_recursive_rmdir (0);