Mercurial > octave
changeset 25522:90c8325c14be
test.m: Warn if %!tests leak variables in to base workspace.
* test.m: Compare list of variables in base workspace (using evalin) before and
after running %!tests. Emit a warning (not error) if variables are leaked.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 29 Jun 2018 11:25:02 -0700 |
parents | a87b4dca2ce3 |
children | 366d4b8f6668 |
files | scripts/testfun/test.m |
diffstat | 1 files changed, 11 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/testfun/test.m Fri Jun 29 09:44:35 2018 -0700 +++ b/scripts/testfun/test.m Fri Jun 29 11:25:02 2018 -0700 @@ -296,6 +296,9 @@ ## Track file descriptor leaks __fid_list_orig = fopen ("all"); + ## Track variable leaks + __variables_orig = evalin ("base", "whos"); + ## Assume all tests will pass. __all_success = true; @@ -740,6 +743,14 @@ warning ("test: file %s leaked file descriptors\n", __file); endif + ## Verify test file did not leak variables in to base workspace + __variables_post = evalin ("base", "whos"); + if (! size_equal (__variables_post, __variables_orig)) + __leaked_var = setdiff ({__variables_post.name}, {__variables_orig.name}); + warning ("test: file %s leaked variables:%s\n", + __file, sprintf (" %s", __leaked_var{:})); + endif + if (nargout == 0) if (__tests || __xfail || __xbug || __xskip || __xrtskip) if (__xfail || __xbug)