Mercurial > octave
changeset 24662:276eca875721
Clear environment variables affecting tmpdir before running BIST tests (bug #52627)
* file-io.cc (Ftempname), unpack.m: Save, clear, and restore environment
variables TMPDIR and TMP when running BIST tests.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 31 Jan 2018 17:24:05 -0800 |
parents | 02989d7d68dc |
children | ca416267c65f |
files | libinterp/corefcn/file-io.cc scripts/miscellaneous/unpack.m |
diffstat | 2 files changed, 59 insertions(+), 44 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/file-io.cc Wed Jan 31 17:15:47 2018 -0800 +++ b/libinterp/corefcn/file-io.cc Wed Jan 31 17:24:05 2018 -0800 @@ -2815,19 +2815,17 @@ /* %!test -%! if (ispc ()) -%! envname = "TMP"; -%! else +%! envvar = {"TMPDIR", "TMP"}; +%! envdir = cellfun (@(x) getenv (x), envvar, "uniformoutput", false); +%! unwind_protect +%! cellfun (@(x) unsetenv (x), envvar); %! envname = "TMPDIR"; -%! endif -%! envdir = getenv (envname); -%! unsetenv (envname); -%! ## Strip trailing file separators from P_tmpdir -%! def_tmpdir = P_tmpdir; -%! while (length (def_tmpdir) > 2 && strfind (filesep ("all"), def_tmpdir(end))) -%! def_tmpdir(end) = []; -%! endwhile -%! unwind_protect +%! def_tmpdir = P_tmpdir; +%! ## Strip trailing file separators from P_tmpdir +%! while (length (def_tmpdir) > 2 && any (def_tmpdir(end) == filesep ("all"))) +%! def_tmpdir(end) = []; +%! endwhile +%! %! ## Test 0-argument form %! fname = tempname (); %! [tmpdir, tmpfname] = fileparts (fname); @@ -2858,11 +2856,13 @@ %! assert (tmpfname (1:4), "file"); %! unwind_protect_cleanup %! rmdir (tmp_tmpdir); -%! if (isempty (envdir)) -%! unsetenv (envname); -%! else -%! setenv (envname, envdir); -%! endif +%! for i = 1:numel (envvar) +%! if (isempty (envdir{i})) +%! unsetenv (envvar{i}); +%! else +%! setenv (envvar{i}, envdir{i}); +%! endif +%! endfor %! end_unwind_protect */
--- a/scripts/miscellaneous/unpack.m Wed Jan 31 17:15:47 2018 -0800 +++ b/scripts/miscellaneous/unpack.m Wed Jan 31 17:24:05 2018 -0800 @@ -311,37 +311,52 @@ %!testif HAVE_ZLIB -%! ## Create temporary directory and file for packing and unpacking -%! dirname = tempname (); -%! assert (mkdir (dirname)); -%! filename = tempname (); -%! fid = fopen (filename, "wt"); -%! assert (fid >= 0); -%! fprintf (fid, "Hello World\n"); -%! fprintf (fid, "123 456 789\n"); -%! fclose (fid); +%! envvar = {"TMPDIR", "TMP"}; +%! envdir = cellfun (@(x) getenv (x), envvar, "uniformoutput", false); %! unwind_protect -%! copyfile (filename, [filename ".orig"]); -%! gzip (filename, dirname); -%! [~, f] = fileparts (filename); -%! filelist = unpack (fullfile (dirname, [f ".gz"]), tempdir); -%! assert (filelist{1}, filename); -%! fid = fopen ([filename ".orig"], "rb"); -%! assert (fid >= 0); -%! orig_data = fread (fid); -%! fclose (fid); -%! fid = fopen (filename, "rb"); +%! cellfun (@(x) unsetenv (x), envvar); +%! ## Create temporary directory and file for packing and unpacking +%! dirname = tempname (); +%! assert (mkdir (dirname)); +%! filename = tempname (); +%! fid = fopen (filename, "wt"); %! assert (fid >= 0); -%! new_data = fread (fid); +%! fprintf (fid, "Hello World\n"); +%! fprintf (fid, "123 456 789\n"); %! fclose (fid); -%! if (orig_data != new_data) -%! error ("unpack: Unpacked file does not equal original"); -%! endif +%! +%! unwind_protect +%! copyfile (filename, [filename ".orig"]); +%! gzip (filename, dirname); +%! [~, f] = fileparts (filename); +%! filelist = unpack (fullfile (dirname, [f ".gz"]), tempdir); +%! assert (filelist{1}, filename); +%! fid = fopen ([filename ".orig"], "rb"); +%! assert (fid >= 0); +%! orig_data = fread (fid); +%! fclose (fid); +%! fid = fopen (filename, "rb"); +%! assert (fid >= 0); +%! new_data = fread (fid); +%! fclose (fid); +%! if (orig_data != new_data) +%! error ("unpack: Unpacked file does not equal original"); +%! endif +%! unwind_protect_cleanup +%! unlink (filename); +%! unlink ([filename ".orig"]); +%! confirm_recursive_rmdir (false, "local"); +%! rmdir (dirname, "s"); +%! end_unwind_protect %! unwind_protect_cleanup -%! unlink (filename); -%! unlink ([filename ".orig"]); -%! confirm_recursive_rmdir (false, "local"); -%! rmdir (dirname, "s"); +%! ## Restore environment variables TMPDIR, TMP +%! for i = 1:numel (envvar) +%! if (isempty (envdir{i})) +%! unsetenv (envvar{i}); +%! else +%! setenv (envvar{i}, envdir{i}); +%! endif +%! endfor %! end_unwind_protect ## Test input validation