diff scripts/miscellaneous/unpack.m @ 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 194eb4bd202b
children 2365c2661b3c
line wrap: on
line diff
--- 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