Mercurial > octave
changeset 27947:70576ed5cc42
assert.m: Fix regression when observed output is large (bug #57615).
* assert.m (pprint): Use max(..., 0) to guarantee that fieldwidth
passed to sprintf never goes negative. Add BIST test for bug #57615.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 16 Jan 2020 16:11:36 -0800 |
parents | 14efec874546 |
children | d34d33837fc4 |
files | scripts/testfun/assert.m |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/testfun/assert.m Thu Jan 16 15:50:28 2020 -0800 +++ b/scripts/testfun/assert.m Thu Jan 16 16:11:36 2020 -0800 @@ -670,6 +670,14 @@ %! assert (! isempty (regexp (errmsg, '\(2,1\).*Rel err 2 exceeds tol 0.2'))); %! end_try_catch +%!test <*57615> +%! try +%! assert (complex (pi*1e-17,2*pi), 0, 1e-1); +%! catch +%! errmsg = lasterr (); +%! assert (isempty (strfind (errmsg, "sprintf: invalid field width"))); +%! end_try_catch + ## test input validation %!error assert () %!error assert (1,2,3,4) @@ -703,10 +711,10 @@ leno = length (err.observed{i}); lene = length (err.expected{i}); str = [str, sprintf("%*s%*s %*s%*s %*s%*s %s\n", - 6+fix(leni/2), err.index{i} , 6-fix(leni/2), "", - 6+fix(leno/2), err.observed{i}, 6-fix(leno/2), "", - 6+fix(lene/2), err.expected{i}, 6-fix(lene/2), "", - err.reason{i})]; + 6+fix(leni/2), err.index{i} , max (6-fix(leni/2), 0), "", + 6+fix(leno/2), err.observed{i}, max (6-fix(leno/2), 0), "", + 6+fix(lene/2), err.expected{i}, max (6-fix(lene/2), 0), "", + err.reason{i})]; endfor endfunction