changeset 22489:93ea313301f9

test: Add bug ids (<#####>) to BIST tests. * bsxfun.cc, cellfun.cc, conv2.cc, data.cc, ellipj.cc, error.cc, file-io.cc, graphics.cc, hash.cc, mappers.cc, max.cc, rand.cc, regexp.cc, symtab.cc, chol.cc, gzip.cc, symbfact.cc, ov-cx-diag.cc, ov-fcn-handle.cc, ov-java.cc, Sparse.cc, accumarray.m, bitset.m, fieldnames.m, inputParser.m, interp2.m, interpft.m, num2str.m, postpad.m, prepad.m, rat.m, rectint.m, image.m, imread.m, imwrite.m, importdata.m, strread.m, textread.m, orderfields.m, qp.m, axis.m, legend.m, hist.m, residue.m, setdiff.m, fftshift.m, ifftshift.m, nthroot.m, magic.m, median.m, quantile.m, base2dec.m, strsplit.m, datestr.m, datevec.m: test: Add bug ids (<#####>) to BIST tests.
author Rik <rik@octave.org>
date Wed, 14 Sep 2016 16:05:16 -0700
parents a666e3ee6af8
children 49103c6e0782
files libinterp/corefcn/bsxfun.cc libinterp/corefcn/cellfun.cc libinterp/corefcn/conv2.cc libinterp/corefcn/data.cc libinterp/corefcn/ellipj.cc libinterp/corefcn/error.cc libinterp/corefcn/file-io.cc libinterp/corefcn/graphics.cc libinterp/corefcn/hash.cc libinterp/corefcn/mappers.cc libinterp/corefcn/max.cc libinterp/corefcn/rand.cc libinterp/corefcn/regexp.cc libinterp/corefcn/symtab.cc libinterp/dldfcn/chol.cc libinterp/dldfcn/gzip.cc libinterp/dldfcn/symbfact.cc libinterp/octave-value/ov-cx-diag.cc libinterp/octave-value/ov-fcn-handle.cc libinterp/octave-value/ov-java.cc liboctave/array/Sparse.cc scripts/general/accumarray.m scripts/general/bitset.m scripts/general/fieldnames.m scripts/general/inputParser.m scripts/general/interp2.m scripts/general/interpft.m scripts/general/num2str.m scripts/general/postpad.m scripts/general/prepad.m scripts/general/rat.m scripts/geometry/rectint.m scripts/image/image.m scripts/image/imread.m scripts/image/imwrite.m scripts/io/importdata.m scripts/io/strread.m scripts/io/textread.m scripts/miscellaneous/orderfields.m scripts/optimization/qp.m scripts/plot/appearance/axis.m scripts/plot/appearance/legend.m scripts/plot/draw/hist.m scripts/polynomial/residue.m scripts/set/setdiff.m scripts/signal/fftshift.m scripts/signal/ifftshift.m scripts/specfun/nthroot.m scripts/special-matrix/magic.m scripts/statistics/base/median.m scripts/statistics/base/quantile.m scripts/strings/base2dec.m scripts/strings/strsplit.m scripts/time/datestr.m scripts/time/datevec.m
diffstat 55 files changed, 198 insertions(+), 230 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/bsxfun.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/bsxfun.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -810,12 +810,12 @@
 %!   endfor
 %! endfor
 
-## Automatic broadcasting with zero length dimensions (bug #47085)
-%!assert ([1 2 3] .+ zeros (0, 3), zeros (0, 3))
-%!assert (rand (3, 3, 1) .+ rand (3, 3, 0), zeros (3, 3, 0))
+## Automatic broadcasting with zero length dimensions
+%!assert <47085> ([1 2 3] .+ zeros (0, 3), zeros (0, 3))
+%!assert <47085> (rand (3, 3, 1) .+ rand (3, 3, 0), zeros (3, 3, 0))
 
-## In-place broadcasting with zero length dimensions (bug #47085)
-%!test
+## In-place broadcasting with zero length dimensions
+%!test <47085>
 %! a = zeros (0, 3);
 %! a .+= [1 2 3];
 %! assert (a, zeros (0, 3));
--- a/libinterp/corefcn/cellfun.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/cellfun.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -979,11 +979,10 @@
 %! assert (b, {"c", "g"});
 %! assert (c, {".d", ".h"});
 
-## Tests for bug #40467
-%!assert (cellfun (@isreal, {1 inf nan []}), [true, true, true, true])
-%!assert (cellfun (@isreal, {1 inf nan []}, "UniformOutput", false), {true, true, true, true})
-%!assert (cellfun (@iscomplex, {1 inf nan []}), [false, false, false, false])
-%!assert (cellfun (@iscomplex, {1 inf nan []}, "UniformOutput", false), {false, false, false, false})
+%!assert <40467> (cellfun (@isreal, {1 inf nan []}), [true, true, true, true])
+%!assert <40467> (cellfun (@isreal, {1 inf nan []}, "UniformOutput", false), {true, true, true, true})
+%!assert <40467> (cellfun (@iscomplex, {1 inf nan []}), [false, false, false, false])
+%!assert <40467> (cellfun (@iscomplex, {1 inf nan []}, "UniformOutput", false), {false, false, false, false})
 
 %!error cellfun (1)
 %!error cellfun ("isclass", 1)
--- a/libinterp/corefcn/conv2.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/conv2.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -255,10 +255,14 @@
 %!shared
 
 %% Test cases from Bug #34893
-%!assert (conv2 ([1:5;1:5], [1:2], "same"), [4 7 10 13 10; 4 7 10 13 10])
-%!assert (conv2 ([1:5;1:5]', [1:2]', "same"), [4 7 10 13 10; 4 7 10 13 10]')
-%!assert (conv2 ([1:5;1:5], [1:2], "valid"), [4 7 10 13; 4 7 10 13])
-%!assert (conv2 ([1:5;1:5]', [1:2]', "valid"), [4 7 10 13; 4 7 10 13]')
+%!assert <34893> (conv2 ([1:5;1:5], [1:2], "same"),
+%!                [4 7 10 13 10; 4 7 10 13 10])
+%!assert <34893> (conv2 ([1:5;1:5]', [1:2]', "same"),
+%!                [4 7 10 13 10; 4 7 10 13 10]')
+%!assert <34893> (conv2 ([1:5;1:5], [1:2], "valid"),
+%!                [4 7 10 13; 4 7 10 13])
+%!assert <34893> (conv2 ([1:5;1:5]', [1:2]', "valid"),
+%!                [4 7 10 13; 4 7 10 13]')
 
 %!test
 %! rand ("seed", 42);
@@ -377,8 +381,7 @@
 }
 
 /*
-## Check for bug #39314
-%!test
+%!test <39314>
 %! v = reshape ([1 2], [1 1 2]);
 %! assert (convn (v, v), reshape ([1 4 4], [1 1 3]));
 %! assert (convn (v, v, "same"), reshape ([4 4], [1 1 2]));
--- a/libinterp/corefcn/data.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/data.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -558,8 +558,7 @@
 %! assert (f, complex (zeros (3, 2), [0,-0.5; 0.5,-0.5; Inf,-Inf]));
 %! assert (e(1:2,:), [0,1; 2,3]);
 
-# bug #42583
-%!assert (all (log2 (pow2 (-1074:1023)) == -1074:1023))
+%!assert <42583> (all (log2 (pow2 (-1074:1023)) == -1074:1023))
 */
 
 DEFUN (rem, args, ,
@@ -725,12 +724,10 @@
 %! assert (nnz (y), 1);
 %! assert (y, sparse ([NaN 0 0 0]));
 
-## Bug #45587
-%!assert (signbit (rem (-0, 1)))
-%!assert (! signbit (rem (0, 1)))
-
-## bug #42627
-%!assert (rem (0.94, 0.01), 0.0)
+%!assert <45587> (signbit (rem (-0, 1)))
+%!assert <45587> (! signbit (rem (0, 1)))
+
+%!assert <42627> (rem (0.94, 0.01), 0.0)
 
 %!error rem (uint (8), int8 (5))
 %!error rem (uint8 ([1, 2]), uint8 ([3, 4, 5]))
@@ -906,12 +903,10 @@
 %!assert (mod (2.1, 0.1), 0)
 %!assert (mod (2.1, 0.2), 0.1, eps)
 
-## Bug #45587
-%!assert (signbit (mod (-0, 0)))
-%!assert (! signbit (mod (0, -0)))
-
-## Bug #42627
-%!assert (mod (0.94, 0.01), 0.0)
+%!assert <45587> (signbit (mod (-0, 0)))
+%!assert <45587> (! signbit (mod (0, -0)))
+
+%!assert <42627> (mod (0.94, 0.01), 0.0)
 */
 
 // FIXME: Macros NATIVE_REDUCTION_1 and NATIVE_REDUCTION seem to be unused.
@@ -1424,10 +1419,9 @@
 %!assert (diag (int8 ([0, 1, 0, 0; 0, 0, 2, 0; 0, 0, 0, 3; 0, 0, 0, 0]), 1), int8 ([1; 2; 3]))
 %!assert (diag (int8 ([0, 0, 0, 0; 1, 0, 0, 0; 0, 2, 0, 0; 0, 0, 3, 0]), -1), int8 ([1; 2; 3]))
 
-## bug #37411
-%!assert (diag (diag ([5, 2, 3])(:,1)), diag([5 0 0 ]))
-%!assert (diag (diag ([5, 2, 3])(:,1), 2),  [0 0 5 0 0; zeros(4, 5)])
-%!assert (diag (diag ([5, 2, 3])(:,1), -2), [[0 0 5 0 0]', zeros(5, 4)])
+%!assert <37411> (diag (diag ([5, 2, 3])(:,1)), diag([5 0 0 ]))
+%!assert <37411> (diag (diag ([5, 2, 3])(:,1), 2),  [0 0 5 0 0; zeros(4, 5)])
+%!assert <37411> (diag (diag ([5, 2, 3])(:,1), -2), [[0 0 5 0 0]', zeros(5, 4)])
 
 ## Test non-square size
 %!assert (diag ([1,2,3], 6, 3), [1 0 0; 0 2 0; 0 0 3; 0 0 0; 0 0 0; 0 0 0])
@@ -4260,7 +4254,7 @@
 ## Matlab requires the size to be a row vector.  In that logic, it supports
 ## n to be a 1x0 vector (returns 0x0) but not a 0x1 vector.  Octave supports
 ## any vector and therefore must support 0x1, 1x0, and 0x0x1 (but not 0x1x1).
-%!test
+%!test <47298>
 %! funcs = {@zeros, @ones, @inf, @nan, @NA, @i, @pi, @e};
 %! for idx = 1:numel (funcs)
 %!   func = funcs{idx};
@@ -5757,8 +5751,8 @@
 %!assert (norm (q, [], "rows"), norm (q, 2, "rows"))
 %!assert (norm (q, [], "cols"), norm (q, 2, "cols"))
 
-%!test
-%! ## Test for norm returning NaN on sparse matrix (bug #30631)
+%!test <30631>
+%! ## Test for norm returning NaN on sparse matrix
 %! A = sparse (2,2);
 %! A(2,1) = 1;
 %! assert (norm (A), 1);
--- a/libinterp/corefcn/ellipj.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/ellipj.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -816,8 +816,8 @@
 %! assert (cn, C, 8*eps);
 %! assert (dn, D, 8*eps);
 
-%!test
-%! ## Test continuity of dn when cn is near zero (bug #43344)
+%!test <43344>
+%! ## Test continuity of dn when cn is near zero
 %! m = 0.5;
 %! u = ellipke (0.5);
 %! x = [-1e-3, -1e-12, 0, 1e-12, 1e-3];
--- a/libinterp/corefcn/error.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/error.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -1729,9 +1729,7 @@
 }
 
 /*
-## Test for (bug #45753)
-
-%!test
+%!test <45753>
 %! warning ("error");
 %! assert (! isempty (help ("warning")));
 */
--- a/libinterp/corefcn/file-io.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/file-io.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -1746,14 +1746,13 @@
 #%! assert (R{1}, int32 (1));
 #%! assert (isempty (R{2}), true);
 
-## bug #37023
-%!test
+%!test <37023>
 %! data = textscan ("   1. 1 \n 2 3\n", '%f %f');
 %! assert (data{1}, [1; 2], 1e-15);
 %! assert (data{2}, [1; 3], 1e-15);
 
-## Whitespace test (bug #37333) using delimiter ";"
-%!test
+## Whitespace test using delimiter ";"
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = "C:/code/meas;";
 %! tc{1, end+1} = " C:/code/sim;";
@@ -1768,8 +1767,8 @@
 %!   assert (strcmp (lh, rh));
 %! endfor
 
-## Whitespace test (bug #37333), adding multipleDelimsAsOne true arg
-%!test
+## Whitespace test, adding multipleDelimsAsOne true arg
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = " C:/code/meas;";
 %! tc{1, end+1} = "C:/code/sim;;";
@@ -1785,7 +1784,7 @@
 %! endfor
 
 ## Whitespace test (bug #37333), adding multipleDelimsAsOne false arg
-%!test
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = " C:/code/meas;";
 %! tc{1, end+1} = "C:/code/sim;;";
@@ -1802,7 +1801,7 @@
 %! endfor
 
 ## Whitespace test (bug #37333) whitespace "" arg
-%!test
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = " C:/code/meas;";
 %! tc{1, end+1} = "C:/code/sim;";
@@ -1817,7 +1816,7 @@
 %! endfor
 
 ## Whitespace test (bug #37333), whitespace " " arg
-%!test
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = " C:/code/meas;";
 %! tc{1, end+1} = "C:/code/sim;";
@@ -1935,21 +1934,19 @@
 %! unlink (f);
 %! assert (msg1, lasterr);
 
-## Bug #41824
-%!assert (textscan ("123", "", "whitespace", " "){:}, 123);
-
-## Bug #42343-1, just test supplied emptyvalue
-%!assert (textscan (",NaN", "", "delimiter", "," ,"emptyValue" ,Inf),
-%!        {Inf, NaN})
-
-## Bug #42343-2, test padding with supplied emptyvalue
-%!test
+%!assert <41824> (textscan ("123", "", "whitespace", " "){:}, 123);
+
+## just test supplied emptyvalue
+%!assert <42343> (textscan (",NaN", "", "delimiter", "," ,"emptyValue" ,Inf),
+%!                {Inf, NaN})
+
+## test padding with supplied emptyvalue
+%!test <42343>
 %! c = textscan (",1,,4\nInf,  ,NaN\n", "", "delimiter", ",",
 %!               "emptyvalue", -10);
 %! assert (cell2mat (c), [-10, 1, -10, 4; Inf, -10, NaN, -10]);
 
-## Bug #42528
-%!test
+%!test <42528>
 %! assert (textscan ("1i", ""){1},  0+1i);
 %! C = textscan ("3, 2-4i, NaN\n -i, 1, 23.4+2.2i\n 1+1 1+1j", "",
 %!               "delimiter", ",");
@@ -1980,8 +1977,7 @@
 %! assert (c{2}', [12, 22]);
 %! assert (c{3}', [13, 23]);
 
-## Bug #44750
-%!test
+%!test <44750>
 %! c = textscan ("/home/foo/", "%s", "delimiter", "/",
 %!               "MultipleDelimsAsOne", 1);
 %! assert (c{1}, {"home"; "foo"});
@@ -2001,8 +1997,8 @@
 %!               "Total: %f %% (of cm values)");
 %! assert (c{1}, 32.5, 1e-5);
 
-## Test various forms of string format specifiers (bug #45712)
-%!test
+## Test various forms of string format specifiers
+%!test <45712>
 %! str = "14 :1 z:2 z:3 z:5 z:11";
 %! C = textscan (str, "%f %s %*s %3s %*3s %f", "delimiter", ":");
 %! assert (C, {14, {"1 z"}, {"3 z"}, 11});
@@ -2091,8 +2087,7 @@
 %! assert (C{1}, {"ab cd efg"; "a ce g"; "   "});
 %! assert (C{2}, {"1Any"; "2Trailing"; "3Junk"});
 
-## Bug #36464
-%!assert (textscan ("1 2 3 4 5 6", "%*n%n%*[^\n]"){1}, 2);
+%!assert <36464> (textscan ("1 2 3 4 5 6", "%*n%n%*[^\n]"){1}, 2);
 
 ## test %[]] and %[^]]
 %!test
--- a/libinterp/corefcn/graphics.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/graphics.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -6968,7 +6968,7 @@
 }
 
 /*
-%!test  # Bug #45356
+%!test <45356>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   plot (1:10);
--- a/libinterp/corefcn/hash.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/hash.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -198,19 +198,19 @@
 %!         "921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47", ...
 %!         "417a81a538327af927da3e"]);
 
-## Test special character behavior (bug #31689)
-%!assert (hash ("md2", "abc\0"), "5a636d615002a7874ac1c9e9a43361f7")
-%!assert (hash ("md4", "abc\0"), "0ee5201897ecb206c4eaba1d2da5224d")
-%!assert (hash ("md5", "abc\0"), "147a664a2ca9410911e61986d3f0d52a")
-%!assert (hash ("sha1", "abc\0"), "686483805ac47ca14e03514f7481a7973b401762")
-%!assert (hash ("sha224", "abc\0"),
+## Test special character behavior
+%!assert <31689> (hash ("md2", "abc\0"), "5a636d615002a7874ac1c9e9a43361f7")
+%!assert <31689> (hash ("md4", "abc\0"), "0ee5201897ecb206c4eaba1d2da5224d")
+%!assert <31689> (hash ("md5", "abc\0"), "147a664a2ca9410911e61986d3f0d52a")
+%!assert <31689> (hash ("sha1", "abc\0"), "686483805ac47ca14e03514f7481a7973b401762")
+%!assert <31689> (hash ("sha224", "abc\0"),
 %!        "fbc8e47920e108bb1d0b631d18b36ae9b1549d28362aa15ebe960cfb");
-%!assert (hash ("sha256", "abc\0"),
+%!assert <31689> (hash ("sha256", "abc\0"),
 %!        "dc1114cd074914bd872cc1f9a23ec910ea2203bc79779ab2e17da25782a624fc");
-%!assert (hash ("sha384", "abc\0"),
+%!assert <31689> (hash ("sha384", "abc\0"),
 %!        ["eba81f2dfba4ec60d3f786c89d91b08e6c0b63d55986874378e385", ...
 %!         "e6fac587cce7a520ca9437290fe626cbf75c855e17"]);
-%!assert (hash ("sha512", "abc\0"),
+%!assert <31689> (hash ("sha512", "abc\0"),
 %!        ["7ce05eda233e545a2d5c626862a5ddaafb09b9d8ec3bec08aa458b", ...
 %!         "7c9e7d939d84a57d5a20d8a9002983aabae2457b19c50ba326bf5b", ...
 %!         "081f75b41342f42c3383"]);
--- a/libinterp/corefcn/mappers.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/mappers.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -128,7 +128,7 @@
 ## Test large magnitude arguments (bug #45507)
 ## FIXME: Test fails with older versions of libm. Try to detect and work
 ##        around this, or wait until working version of libm is widespread?
-%!xtest
+%!xtest <45507>
 %! x = [1, -1, i, -i] .* 1e150;
 %! v = [0, pi, pi/2, pi/2];
 %! assert (real (acos (x)), v);
@@ -175,7 +175,7 @@
 ## Test large magnitude arguments (bug #45507)
 ## FIXME: Test fails with older versions of libm. Try to detect and work
 ##        around this, or wait until working version of libm is widespread?
-%!xtest
+%!xtest <45507>
 %! x = [1, -1, i, -i] .* 1e150;
 %! v = [0, pi, pi/2, -pi/2];
 %! assert (imag (acosh (x)), v);
@@ -296,7 +296,7 @@
 ## Test large magnitude arguments (bug #45507)
 ## FIXME: Test fails with older versions of libm. Try to detect and work
 ##        around this, or wait until working version of libm is widespread?
-%!xtest
+%!xtest <45507>
 %! x = [1, -1, i, -i] .* 1e150;
 %! v = [pi/2, -pi/2, 0, -0];
 %! assert (real (asin (x)), v);
@@ -332,7 +332,7 @@
 ## Test large magnitude arguments (bug #45507)
 ## FIXME: Test fails with older versions of libm. Try to detect and work
 ##        around this, or wait until working version of libm is widespread?
-%!xtest
+%!xtest <45507>
 %! x = [1, -1, i, -i] .* 1e150;
 %! v = [0, 0, pi/2, -pi/2];
 %! assert (imag (asinh (x)), v);
@@ -370,7 +370,7 @@
 %! assert (atan (x), v, sqrt (eps ("single")));
 
 ## Test large magnitude arguments (bug #44310, bug #45507)
-%!test
+%!test <44310>
 %! x = [1, -1, i, -i] .* 1e150;
 %! v = [pi/2, -pi/2, pi/2, -pi/2];
 %! assert (real (atan (x)), v);
@@ -405,7 +405,7 @@
 %! assert (atanh (x), v, sqrt (eps ("single")));
 
 ## Test large magnitude arguments (bug #44310, bug #45507)
-%!test
+%!test <44310>
 %! x = [1, -1, i, -i] .* 1e150;
 %! v = [pi/2, pi/2, pi/2, -pi/2];
 %! assert (imag (atanh (x)), v);
--- a/libinterp/corefcn/max.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/max.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -865,8 +865,9 @@
 %! assert (max (x, 2.1i), sparse ([2.1i 2.1i 3 4]));
 
 ## Test for bug #40743
-%!assert (max (zeros (1,0), ones (1,1)), zeros (1,0))
-%!assert (max (sparse (zeros (1,0)), sparse (ones (1,1))), sparse (zeros (1,0)))
+%!assert <40743> (max (zeros (1,0), ones (1,1)), zeros (1,0))
+%!assert <40743> (max (sparse (zeros (1,0)), sparse (ones (1,1))),
+                  sparse (zeros (1,0)))
 
 %!error max ()
 %!error max (1, 2, 3, 4)
--- a/libinterp/corefcn/rand.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/rand.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -1165,8 +1165,8 @@
 %!assert (sort (randperm (20)), 1:20)
 %!assert (length (randperm (20,10)), 10)
 
-## Test biggish N (bug #39378)
-%!assert (length (randperm (30000^2, 100000)), 100000)
+## Test biggish N
+%!assert <39378> (length (randperm (30000^2, 100000)), 100000)
 
 %!test
 %! rand ("seed", 0);
--- a/libinterp/corefcn/regexp.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/regexp.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -987,8 +987,8 @@
 %! ## Parenthesis in named token (ie (int)) causes a problem
 %! assert (regexp ('qwe int asd', ['(?<typestr>(int))'], 'names'), struct ('typestr', 'int'));
 
-%!test
-%! ## Mix of named and unnamed tokens can cause segfault (bug #35683)
+%!test <35683>
+%! ## Mix of named and unnamed tokens can cause segfault
 %! str = "abcde";
 %! ptn = '(?<T1>a)(\w+)(?<T2>d\w+)';
 %! tokens = regexp (str, ptn, "names");
@@ -1123,7 +1123,8 @@
 %!assert (regexp ("\n", '\n'), 1)
 %!assert (regexp ("\n", "\n"), 1)
 
-%!test  # Bug #45407, escape sequences are silently converted
+# Test escape sequences are silently converted
+%!test <45407> 
 %! assert (regexprep ('s', 's', 'x\.y'), 'x.y');
 %! assert (regexprep ('s', '(s)', 'x\$1y'), 'x$1y');
 %! assert (regexprep ('s', '(s)', 'x\\$1y'), 'x\sy');
--- a/libinterp/corefcn/symtab.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/corefcn/symtab.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -1915,7 +1915,7 @@
 If the first assert fails, this is no longer the case and the tests need to be
 updated to use some other function.
 
-%!assert (! strcmp (which ("bar"), ""))
+%!assert <34497> (! strcmp (which ("bar"), ""))
 
 %!function x = bar ()
 %!  x = 5;
--- a/libinterp/dldfcn/chol.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/dldfcn/chol.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -341,8 +341,7 @@
 %! assert (pd, pv)
 %! assert (qv, [1 2])
 
-%!testif HAVE_CHOLMOD
-%! ## Bug #42587
+%!testif HAVE_CHOLMOD <42587>
 %! A = sparse ([1 0 8;0 1 8;8 8 1]);
 %! [Q, p] = chol (A);
 %! assert (p != 0);
--- a/libinterp/dldfcn/gzip.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/dldfcn/gzip.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -716,7 +716,7 @@
 %!  assert (exist (z_z_file), 2) # bug #48597
 %!  assert (hash ("md5", fileread (z_file)), md5_z)
 %!endfunction
-%!xtest run_test_function (@test_z_z)
+%!xtest run_test_function (@test_z_z) <48597>
 
 %!function test_xzip_dir (test_dir, z) # bug #43431
 %!  fpaths = fullfile (test_dir, {"test1", "test2", "test3"});
--- a/libinterp/dldfcn/symbfact.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/dldfcn/symbfact.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -401,8 +401,8 @@
 %! [~, ~, ~, ~, l] = symbfact (A, "sym", "lower");
 %! assert (l, sparse (tril (true (3))));
 
-%!testif HAVE_CHOLMOD
-%! ## Bug #42587, singular matrix
+%!testif HAVE_CHOLMOD <42587>
+%! ## singular matrix
 %! A = sparse ([1 0 8;0 1 8;8 8 1]);
 %! [count, h, parent, post, r] = symbfact (A);
 
--- a/libinterp/octave-value/ov-cx-diag.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/octave-value/ov-cx-diag.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -252,8 +252,5 @@
 }
 
 /*
-
-%% bug #36368
-%!assert (diag ([1+i, 1-i])^2 , diag ([2i, -2i]), 4*eps)
-
+%!assert <36368> (diag ([1+i, 1-i])^2 , diag ([2i, -2i]), 4*eps)
 */
--- a/libinterp/octave-value/ov-fcn-handle.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/octave-value/ov-fcn-handle.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -1301,7 +1301,7 @@
 }
 
 /*
-%!test
+%!test <33857>
 %! a = 2;
 %! f = @(x) a + x;
 %! g = @(x) 2 * x;
@@ -1322,7 +1322,7 @@
 %!   mode = modes{i};
 %!   nm = tempname ();
 %!   unwind_protect
-%!     f2 (1); # bug #33857
+%!     f2 (1);
 %!     save (mode, nm, "f2", "g2", "hm2", "hdld2", "hbi2");
 %!     clear f2 g2 hm2 hdld2 hbi2
 %!     load (nm);
@@ -1353,8 +1353,7 @@
 %!  endif
 %!endfunction
 
-Test for bug #35876
-%!test
+%!test <35876>
 %! a = 2;
 %! f = @(x) a + x;
 %! g = @(x) 2 * x;
--- a/libinterp/octave-value/ov-java.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/libinterp/octave-value/ov-java.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -3222,8 +3222,8 @@
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint8 ([90 100 127]), uint8 (127)), 2);
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint16 ([90 100 128]), uint16 (128)), 2);
 
-## Check we can create objects that wrap java literals (bug #38821).
-%!testif HAVE_JAVA
+## Check we can create objects that wrap java literals
+%!testif HAVE_JAVA <38821>
 %! assert (class (javaObject ("java.lang.Byte",     uint8 (1))), "java.lang.Byte");
 %! assert (class (javaObject ("java.lang.Byte",      int8 (1))), "java.lang.Byte");
 %! assert (class (javaObject ("java.lang.Short",   uint16 (1))), "java.lang.Short");
@@ -3233,8 +3233,8 @@
 %! assert (class (javaObject ("java.lang.Long",    uint64 (1))), "java.lang.Long");
 %! assert (class (javaObject ("java.lang.Long",     int64 (1))), "java.lang.Long");
 
-## Test for automatic conversion of specific numeric classes (bug #48013)
-%!testif HAVE_JAVA
+## Test for automatic conversion of specific numeric classes
+%!testif HAVE_JAVA <48013>
 %! assert (javaMethod ("valueOf", "java.lang.Byte",     int8 (1)), 1)
 %! assert (javaMethod ("valueOf", "java.lang.Short",   int16 (1)), 1)
 %! assert (javaMethod ("valueOf", "java.lang.Integer", int32 (1)), 1)
@@ -3244,8 +3244,8 @@
 %! assert (class (javaMethod ("valueOf", "java.math.BigDecimal", double (1))), "java.math.BigDecimal")
 %! assert (class (javaMethod ("valueOf", "java.math.BigInteger",  int64 (1))), "java.math.BigInteger")
 
-## Automatic conversion from string cell array into String[] (bug #45290)
-%!testif HAVE_JAVA
+## Automatic conversion from string cell array into String[]
+%!testif HAVE_JAVA <45290>
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "aaa"), 0);
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "zzz"), 3);
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", {"aaa", "bbb", "ccc", "zzz"}, "hhh") < 0);
--- a/liboctave/array/Sparse.cc	Wed Sep 14 13:19:47 2016 -0700
+++ b/liboctave/array/Sparse.cc	Wed Sep 14 16:05:16 2016 -0700
@@ -2954,13 +2954,10 @@
 %!test test_sparse_slice ([2 2], 22, 3);
 %!test test_sparse_slice ([2 2], 22, 4);
 
-bug #35570:
-
-%!assert (speye (3,1)(3:-1:1), sparse ([0; 0; 1]))
-
-## Test removing columns (bug #36656)
-
-%!test
+%!assert <35570> (speye (3,1)(3:-1:1), sparse ([0; 0; 1]))
+
+## Test removing columns
+%!test <36656>
 %! s = sparse (magic (5));
 %! s(:,2:4) = [];
 %! assert (s, sparse (magic (5)(:, [1,5])));
@@ -2971,24 +2968,24 @@
 %! assert (s, sparse ([], [], [], 0, 1));
 
 ## Test (bug #37321)
-%!test a=sparse (0,0); assert (all (a) == sparse ([1]));
-%!test a=sparse (0,1); assert (all (a) == sparse ([1]));
-%!test a=sparse (1,0); assert (all (a) == sparse ([1]));
-%!test a=sparse (1,0); assert (all (a,2) == sparse ([1]));
-%!test a=sparse (1,0); assert (size (all (a,1)), [1 0]);
-%!test a=sparse (1,1);
+%!test <37321> a=sparse (0,0); assert (all (a) == sparse ([1]));
+%!test <37321> a=sparse (0,1); assert (all (a) == sparse ([1]));
+%!test <37321> a=sparse (1,0); assert (all (a) == sparse ([1]));
+%!test <37321> a=sparse (1,0); assert (all (a,2) == sparse ([1]));
+%!test <37321> a=sparse (1,0); assert (size (all (a,1)), [1 0]);
+%!test <37321> a=sparse (1,1);
 %! assert (all (a) == sparse ([0]));
 %! assert (size (all (a)), [1 1]);
-%!test a=sparse (2,1);
+%!test <37321> a=sparse (2,1);
 %! assert (all (a) == sparse ([0]));
 %! assert (size (all (a)), [1 1]);
-%!test a=sparse (1,2);
+%!test <37321> a=sparse (1,2);
 %! assert (all (a) == sparse ([0]));
 %! assert (size (all (a)), [1 1]);
-%!test a=sparse (2,2); assert (isequal (all (a), sparse ([0 0])));
-
-## Test assigning row to a column slice (bug #45589)
-%!test
+%!test <37321> a=sparse (2,2); assert (isequal (all (a), sparse ([0 0])));
+
+## Test assigning row to a column slice
+%!test <45589>
 %! a = sparse (magic (3));
 %! b = a;
 %! a(1,:) = 1:3;
--- a/scripts/general/accumarray.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/accumarray.m	Wed Sep 14 16:05:16 2016 -0700
@@ -433,8 +433,8 @@
 %!error (accumarray (1:5))
 %!error (accumarray ([1,2,3],1:2))
 
-## Handle empty arrays (bug #47287)
-%!test
+## Handle empty arrays
+%!test <47287>
 %! ## min, max, and sum are special cases within accumarray so test them.
 %! funcs = {@(x) length (x) > 1, @min, @max, @sum};
 %! for idx = 1:numel (funcs)
--- a/scripts/general/bitset.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/bitset.m	Wed Sep 14 16:05:16 2016 -0700
@@ -101,8 +101,8 @@
 %!   endfor
 %! endfor
 
-## Bug #36458
-%!assert (bitset (uint8 ([1, 2;3 4]), 1, [0 1; 0 1]), uint8 ([0, 3; 2 5]))
+%!assert <36458> (bitset (uint8 ([1, 2;3 4]), 1, [0 1; 0 1]),
+%!                uint8 ([0, 3; 2 5]))
 
 %!error bitset (1)
 %!error bitset (1, 2, 3, 4)
--- a/scripts/general/fieldnames.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/fieldnames.m	Wed Sep 14 16:05:16 2016 -0700
@@ -46,11 +46,11 @@
     ## Call internal C++ function for structs or Octave objects
     names = __fieldnames__ (obj);
   elseif (isjava (obj) || ischar (obj))
-    ## FIXME: Function prototype that excepts java obj exists, but doesn't
+    ## FIXME: Function prototype that accepts java obj exists, but doesn't
     ##        work if obj is java.lang.String.  Convert obj to classname.
     ## FIXME: this is now working for objects whose class is in the dynamic
     ##        classpath but will continue to fail if such classnames are used
-    ##        instead (see bug #42710)
+    ##        instead (see bug #42710).
     if (isa (obj, "java.lang.String"))
       obj = class (obj);
     endif
--- a/scripts/general/inputParser.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/inputParser.m	Wed Sep 14 16:05:16 2016 -0700
@@ -638,8 +638,8 @@
 %! assert ({r.req1, r.op1, r.op2, r.verbose, r.line},
 %!         {"file", "foo", 80,    true,      "circle"});
 
-## We must not perform validation of default values (bug #45837)
-%!test
+## We must not perform validation of default values
+%!test <45837>
 %! p = inputParser;
 %! p.addParameter ("Dir", [], @ischar);
 %! p.parse ();
--- a/scripts/general/interp2.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/interp2.m	Wed Sep 14 16:05:16 2016 -0700
@@ -539,9 +539,9 @@
 %! X = meshgrid (1:4);
 %! assert (interp2 (X, 2.5, 2.5, "nearest"), 3);
 
-## re-order monotonically decreasing (bug #41838).
-%!assert (interp2 ([1 2 3], [3 2 1], magic (3), 2.5, 3), 3.5)
-%!assert (interp2 ([3 2 1], [1 2 3], magic (3), 1.5, 1), 3.5)
+## re-order monotonically decreasing
+%!assert <41838> (interp2 ([1 2 3], [3 2 1], magic (3), 2.5, 3), 3.5)
+%!assert <41838> (interp2 ([3 2 1], [1 2 3], magic (3), 1.5, 1), 3.5)
 
 %!shared z, zout, tol
 %! z = [1 3 5; 3 5 7; 5 7 9];
--- a/scripts/general/interpft.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/interpft.m	Wed Sep 14 16:05:16 2016 -0700
@@ -122,8 +122,8 @@
 %!assert (interpft (y', n), y', 20*eps)
 %!assert (interpft ([y,y],n), [y,y], 20*eps)
 
-## Test case with complex input from bug #39566
-%!test
+## Test case with complex input
+%!test <39566>
 %! x = (1 + j) * [1:4]';
 %! y = ifft ([15 + 15*j; -6; -1.5 - 1.5*j; 0; -1.5 - 1.5*j; -6*j]);
 %! assert (interpft (x, 6), y, 10*eps);
--- a/scripts/general/num2str.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/num2str.m	Wed Sep 14 16:05:16 2016 -0700
@@ -115,7 +115,7 @@
           if (any (! valid))
             ndgt = max (ndgt, 5);     # Allow space for Inf/NaN
           endif
-          ## FIXME: Integers should be masked to show only 16 significant digits
+          ## FIXME: Integers must be masked to show only 16 significant digits
           ##        See test case for bug #36133 below
           fmt = sprintf ("%%%d.0f", ndgt);
         endif
@@ -160,7 +160,7 @@
       else
         ## Integer input
         ndgt += 3;
-        ## FIXME: Integers should be masked to show only 16 significant digits
+        ## FIXME: Integers must be masked to show only 16 significant digits
         ##        See test case for bug #36133 below
         fmt = sprintf ("%%%d.0f%%-+%d.0fi", ndgt, ndgt);
       endif
@@ -246,11 +246,10 @@
 %!test <36133>
 %! assert (num2str (1e23), "100000000000000000000000");
 
-## Test for bug #44864, extra rows generated from newlines in format
-%!assert (rows (num2str (magic (3), "%3d %3d %3d\n")), 3)
+## Test for extra rows generated from newlines in format
+%!assert <44864> (rows (num2str (magic (3), "%3d %3d %3d\n")), 3)
 
-## Test for bug #45174
-%!assert (num2str ([65 66 67], "%s"), "ABC")
+%!assert <45174> (num2str ([65 66 67], "%s"), "ABC")
 
 %!error num2str ()
 %!error num2str (1, 2, 3)
--- a/scripts/general/postpad.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/postpad.m	Wed Sep 14 16:05:16 2016 -0700
@@ -105,8 +105,8 @@
 %!assert (postpad ([1; 2], 2), [1; 2])
 %!assert (postpad ([1; 2], 2, 3, 2), [1 3; 2 3])
 
-%! ## Test with string concatenation (bug #44162)
-%!assert (postpad ("Octave", 16, "x"), "Octavexxxxxxxxxx")
+%! ## Test with string concatenation
+%!assert <44162> (postpad ("Octave", 16, "x"), "Octavexxxxxxxxxx")
 %!assert (postpad ("Octave", 4), "Octa")
 
 %!error postpad ()
--- a/scripts/general/prepad.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/prepad.m	Wed Sep 14 16:05:16 2016 -0700
@@ -108,8 +108,8 @@
 %!assert (prepad ([1,2], 2, 2, 3), reshape ([2,2,1,2], 1, 2, 2))
 %!assert (prepad ([1;2], 2, 2, 3), reshape ([2;2;1;2], 2, 1, 2))
 
-%! ## Test with string concatenation (bug #44162)
-%!assert (prepad ("Octave", 16, "x"), "xxxxxxxxxxOctave")
+%! ## Test with string concatenation
+%!assert <44162> (prepad ("Octave", 16, "x"), "xxxxxxxxxxOctave")
 %!assert (prepad ("Octave", 4), "tave")
 
 ## FIXME: We need tests for multidimensional arrays.
--- a/scripts/general/rat.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/general/rat.m	Wed Sep 14 16:05:16 2016 -0700
@@ -159,8 +159,7 @@
 %! assert (n, [1, 3, 1]);
 %! assert (d, [2, 10, 3]);
 
-## bug #43374
-%!assert (eval (rat (0.75)), [0.75])
+%!assert <43374> (eval (rat (0.75)), [0.75])
 
 %!error rat ()
 %!error rat (1, 2, 3)
--- a/scripts/geometry/rectint.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/geometry/rectint.m	Wed Sep 14 16:05:16 2016 -0700
@@ -94,11 +94,10 @@
 %!assert (rectint ([0 0 1 1;0.5 0.5 1 1;-1 -1 2 2], [1 1 2 2]), [0;0.25;0])
 %!assert (rectint ([1 1 2 2], [0 0 1 1;0.5 0.5 1 1;-1 -1 2 2]), [0 0.25 0])
 
-## bug #44904
-%!assert (rectint ([0 0 5 5], [6 6 5 5]), 0)
-%!assert (rectint ([0 0 5 5], [0 6 5 5]), 0)
-%!assert (rectint ([0 0 5 5], [6 0 5 5]), 0)
-%!assert (rectint ([0 0 0 5 5 5], [0 0 6 5 5 5]), 0)
+%!assert <44904> (rectint ([0 0 5 5], [6 6 5 5]), 0)
+%!assert <44904> (rectint ([0 0 5 5], [0 6 5 5]), 0)
+%!assert <44904> (rectint ([0 0 5 5], [6 0 5 5]), 0)
+%!assert <44904> (rectint ([0 0 0 5 5 5], [0 0 6 5 5 5]), 0)
 
 ## Test volumes
 %!shared r1, r2, r3, r4, r5
--- a/scripts/image/image.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/image/image.m	Wed Sep 14 16:05:16 2016 -0700
@@ -227,8 +227,8 @@
 %!  h = image (-x, -y, img);
 %!  title ("image (-x, -y, img)");
 
-%!test
-%! ## test hidden properties x/ydatamode (bug #42121)
+## test hidden properties x/ydatamode
+%!test <42121>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   nx = 64; ny = 64;
--- a/scripts/image/imread.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/image/imread.m	Wed Sep 14 16:05:16 2016 -0700
@@ -204,7 +204,7 @@
 %! end_unwind_protect
 
 ## Test for bug #41584 (some GM coders report saturated channels as binary)
-%!testif HAVE_MAGICK
+%!testif HAVE_MAGICK <41584>
 %! im = zeros ([16 16 3], "uint8");
 %! im(:,:,1) = 255;
 %! im(:,:,3) = repmat (0:16:255, [16 1]);
--- a/scripts/image/imwrite.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/image/imwrite.m	Wed Sep 14 16:05:16 2016 -0700
@@ -229,8 +229,8 @@
 %!  end_unwind_protect
 %!endfunction
 
-## BMP images must be saved uncompressed by default (bug #45565)
-%!testif HAVE_MAGICK
+## BMP images must be saved uncompressed by default
+%!testif HAVE_MAGICK <45565>
 %! assert (get_bmp_compression ("", [], "BMP"), 0);
 %! assert (get_bmp_compression ("", [], "bmp"), 0);
 %! assert (get_bmp_compression (".BMP"), 0);
--- a/scripts/io/importdata.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/io/importdata.m	Wed Sep 14 16:05:16 2016 -0700
@@ -519,8 +519,8 @@
 %! assert (d, "\t");
 %! assert (h, 0);
 
-%!test
-%! ## Distinguish double from complex when no delimiter is supplied (bug #43393)
+%!test <43393>
+%! ## Distinguish double from complex when no delimiter is supplied
 %! fn  = tmpnam ();
 %! fid = fopen (fn, "w");
 %! fputs (fid, "2.0000e+02   4.0000e-04");
--- a/scripts/io/strread.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/io/strread.m	Wed Sep 14 16:05:16 2016 -0700
@@ -907,14 +907,13 @@
 %! assert (a, int32 (10));
 %! assert (b, {"a"});
 
-## Bug #33536
-%!test
+%!test <33536>
 %! [a, b, c] = strread ("1,,2", "%s%s%s", "delimiter", ",");
 %! assert (a{1}, "1");
 %! assert (b{1}, "");
 %! assert (c{1}, "2");
 
-## Bug #33536
+%!test <33536>
 %!test
 %! a = strread ("[SomeText]", "[%s", "delimiter", "]");
 %! assert (a{1}, "SomeText");
@@ -969,9 +968,8 @@
 %! assert (c', [13, 24, 34]);
 %! assert (d', [15, 25, 35]);
 
-## Bug #44750
-%!assert (strread ('/home/foo/','%s','delimiter','/','MultipleDelimsAsOne',1),
-%!        {"home"; "foo"})
+%!assert <44750> (strread ('/home/foo/','%s','delimiter','/','MultipleDelimsAsOne',1),
+%!                {"home"; "foo"})
 
 ## delimiter as sq_string and dq_string
 %!assert (strread ("1\n2\n3", "%d", "delimiter", "\n"),
@@ -1027,15 +1025,13 @@
 %! assert (a, NaN);
 %! assert (b, NaN);
 
-## Bug #35999
-%!test
+%!test <35999>
 %! [a, b, c] = strread ("", "%f");
 %! assert (isempty (a));
 %! assert (isempty (b));
 %! assert (isempty (c));
 
-## Bug #37023
-%!test
+%!test <37023>
 %! [a, b] = strread (" 1. 1 \n  2 3 \n", "%f %f", "endofline", "\n");
 %! assert (a, [1; 2], 1e-15);
 %! assert (b, [1; 3], 1e-15);
@@ -1045,28 +1041,28 @@
 %!        [NaN; 2; NaN; 4; 5; NaN; 7])
 
 ## Test #1 bug #42609
-%!test
+%!test <42609>
 %! [a, b, c] = strread ("1 2 3\n4 5 6\n7 8 9\n", "%f %f %f\n");
 %! assert (a, [1; 4; 7]);
 %! assert (b, [2; 5; 8]);
 %! assert (c, [3; 6; 9]);
 
 ## Test #2 bug #42609
-%!test
+%!test <42609>
 %! [a, b, c] = strread ("1 2\n3\n4 5\n6\n7 8\n9\n", "%f %f\n%f");
 %! assert (a, [1;4;7]);
 %! assert (b, [2; 5; 8]);
 %! assert (c, [3; 6; 9]);
 
 ## Test #3 bug #42609
-%!test
+%!test <42609>
 %! [a, b, c] = strread ("1 2 3\n4 5 6\n7 8 9\n", '%f %f %f\n');
 %! assert (a, [1; 4; 7]);
 %! assert (b, [2; 5; 8]);
 %! assert (c, [3; 6; 9]);
 
 ## Test #4 bug #42609
-%!test
+%!test <42609>
 %! [a, b, c] = strread ("1 2\n3\n4 5\n6\n7 8\n9\n", '%f %f\n%f');
 %! assert (a, [1;4;7]);
 %! assert (b, [2; 5; 8]);
@@ -1094,8 +1090,8 @@
 ## Test for false positives in check for non-supported format specifiers
 %!assert (strread ("Total: 32.5 % (of cm values)","Total: %f % (of cm values)"), 32.5, 1e-5)
 
-## Test various forms of string format specifiers (bug #45712)
-%!test
+## Test various forms of string format specifiers
+%!test <45712>
 %! str = "14 :1 z:2 z:3 z:5 z:11";
 %! [a, b, c, d] = strread (str, "%f %s %*s %3s %*3s %f", "delimiter", ":");
 %! assert ({a, b, c, d}, {14, {"1 z"}, {"3 z"}, 11});
--- a/scripts/io/textread.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/io/textread.m	Wed Sep 14 16:05:16 2016 -0700
@@ -476,7 +476,7 @@
 #%! assert (A, [0 2 0 4; 5 0 0 0], 1e-6);
 
 ### Test endofline
-#%!test
+#%!test <45046>
 #%! f = tempname ();
 #%! fid = fopen (f, "w");
 #%! fprintf (fid, "a\rb\rc");
@@ -489,8 +489,8 @@
 #%! assert (d, {"a"; "b"; "c"});
 #%! unlink (f);
 
-### Properly process single-quoted EOL args (bug #46477)
-#%!test
+### Properly process single-quoted EOL args
+#%!test <46477>
 #%! f = tempname ();
 #%! fid = fopen (f, "w");
 #%! fprintf (fid, "hello, world!");
--- a/scripts/miscellaneous/orderfields.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/miscellaneous/orderfields.m	Wed Sep 14 16:05:16 2016 -0700
@@ -215,8 +215,8 @@
 %! assert (aa(2).x, 8);
 %! assert (aa(2).y{1}, 6);
 
-## Corner case of empty struct, bug #40224
-%!assert (orderfields (struct ()), struct ())
+## Corner case of empty struct
+%!assert <40224> (orderfields (struct ()), struct ())
 %!test
 %! s(2,2).a = 1;
 %! s(1,1).b = 2;
--- a/scripts/optimization/qp.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/optimization/qp.m	Wed Sep 14 16:05:16 2016 -0700
@@ -420,8 +420,8 @@
 endfunction
 
 
-## Test infeasible initial guess (bug #40536)
-%!testif HAVE_GLPK
+## Test infeasible initial guess
+%!testif HAVE_GLPK <40536>
 %!
 %! H = 1;  q = 0;                # objective: x -> 0.5 x^2
 %! A = 1;  lb = 1;  ub = +inf;   # constraint: x >= 1
--- a/scripts/plot/appearance/axis.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/plot/appearance/axis.m	Wed Sep 14 16:05:16 2016 -0700
@@ -635,8 +635,7 @@
 %! end_unwind_protect
 
 ## Test 'axis tight' with differently oriented, differently numbered data vecs
-## Bug #40036.
-%!test
+%!test <40036>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   Z = peaks (linspace (-3, 3, 49), linspace (-2, 2, 29));
--- a/scripts/plot/appearance/legend.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/plot/appearance/legend.m	Wed Sep 14 16:05:16 2016 -0700
@@ -1619,8 +1619,7 @@
 %!   graphics_toolkit (toolkit);
 %! end_unwind_protect
 
-%!test
-%! ## bug #42035
+%!test <42035>
 %! h = figure ("visible", "off");
 %! unwind_protect
 %!   hax1 = subplot (1,2,1);
--- a/scripts/plot/draw/hist.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/plot/draw/hist.m	Wed Sep 14 16:05:16 2016 -0700
@@ -218,12 +218,10 @@
 %! endfor
 %!assert (hist (1,1), 1)
 %!assert (size (hist (randn (750,240), 200)), [200,240])
-## Test bug #42394
-%!assert (isempty (hist (rand (10,2), 0:5, 1)), false)
-%!assert (isempty (hist (rand (10,2), 0:5, [1 1])), false)
+%!assert <42394> (isempty (hist (rand (10,2), 0:5, 1)), false)
+%!assert <42394> (isempty (hist (rand (10,2), 0:5, [1 1])), false)
 
-## Test bug #47707
-%!test
+%!test <47707>
 %! y = [1  9  2  2  9  3  8  9  1  7  1  1  3  2  4  4  8  2  1  9  4  1 ...
 %!      2  3  1  1  6  5  5  3  9  9  1  1  8  7  7  2  4  1];
 %! [n, x] = hist (y, 10);
--- a/scripts/polynomial/residue.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/polynomial/residue.m	Wed Sep 14 16:05:16 2016 -0700
@@ -415,7 +415,7 @@
 %! assert (br, b, 1e-12);
 %! assert (ar, a, 1e-12);
 
-## The following test is due to Bernard Grung (bug #34266)
+## The following test is due to Bernard Grung
 %!test <34266>
 %! z1 =  7.0372976777e6;
 %! p1 = -3.1415926536e9;
--- a/scripts/set/setdiff.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/set/setdiff.m	Wed Sep 14 16:05:16 2016 -0700
@@ -114,13 +114,13 @@
 %! assert (c, [5]);
 %! assert (c, a(ia));
 
-## Test output orientation compatibility (bug #42577)
-%!assert (setdiff ([1:5], 2), [1,3,4,5])
-%!assert (setdiff ([1:5]', 2), [1;3;4;5])
-%!assert (setdiff ([1:5], [2:3]), [1,4,5])
-%!assert (setdiff ([1:5], [2:3]'), [1,4,5])
-%!assert (setdiff ([1:5]', [2:3]), [1;4;5])
-%!assert (setdiff ([1:5]', [2:3]'), [1;4;5])
+## Test output orientation compatibility
+%!assert <42577> (setdiff ([1:5], 2), [1,3,4,5])
+%!assert <42577> (setdiff ([1:5]', 2), [1;3;4;5])
+%!assert <42577> (setdiff ([1:5], [2:3]), [1,4,5])
+%!assert <42577> (setdiff ([1:5], [2:3]'), [1,4,5])
+%!assert <42577> (setdiff ([1:5]', [2:3]), [1;4;5])
+%!assert <42577> (setdiff ([1:5]', [2:3]'), [1;4;5])
 
 %!test
 %! a = rand (3,3,3);
--- a/scripts/signal/fftshift.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/signal/fftshift.m	Wed Sep 14 16:05:16 2016 -0700
@@ -138,8 +138,8 @@
 %! assert (y, "efgabcd");
 %! assert (fftshift (y), "bcdefga");
 
-## Test N-dimensional input (bug #45207)
-%!test
+## Test N-dimensional input
+%!test <45207>
 %! x = [0:3];
 %! x = x + x' + reshape (x, [1 1 4]);
 %! y1 = [4 5 2 3; 5 6 3 4; 2 3 0 1; 3 4 1 2];
--- a/scripts/signal/ifftshift.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/signal/ifftshift.m	Wed Sep 14 16:05:16 2016 -0700
@@ -123,8 +123,8 @@
 %! assert (y, "abcdefg");
 %! assert (ifftshift (y), "defgabc");
 
-## Test N-dimensional input (bug #45207)
-%!test
+## Test N-dimensional input
+%!test <45207>
 %! x = [0:3];
 %! x = x + x' + reshape (x, [1 1 4]);
 %! y1 = [4 5 2 3; 5 6 3 4; 2 3 0 1; 3 4 1 2];
--- a/scripts/specfun/nthroot.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/specfun/nthroot.m	Wed Sep 14 16:05:16 2016 -0700
@@ -93,8 +93,8 @@
 %!assert (nthroot (-Inf, 7), -Inf)
 %!assert (nthroot (-Inf, -7), 0)
 
-## Bug #43492.  This should not generate a division by zero warning
-%!test
+## This should not generate a division by zero warning
+%!test <43492>
 %! warnmsg = lastwarn ();
 %! assert (nthroot (0, 2), 0);
 %! assert (lastwarn (), warnmsg);
--- a/scripts/special-matrix/magic.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/special-matrix/magic.m	Wed Sep 14 16:05:16 2016 -0700
@@ -85,10 +85,10 @@
 %!   assert (norm(diff([sum(diag(A)),sum(diag(flipud(A))),sum(A),sum(A')])),0);
 %! endfor
 
-## Not a magic square but we must return something (bug #46672)
+## Not a magic square but we must return something (bug #46672).
 ## While one day we may change the actual return of magic (2),
 ## this properties still must be true.
-%!test
+%!test <46672>
 %! m = magic (2);
 %! assert (size (m), [2 2]);
 %! assert (unique (m), [1; 2; 3; 4]);
--- a/scripts/statistics/base/median.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/statistics/base/median.m	Wed Sep 14 16:05:16 2016 -0700
@@ -111,15 +111,15 @@
 %!assert (median ([1,2,NaN;4,5,6;NaN,8,9]), [NaN, 5, NaN])
 %!assert (median ([1,2], 3), [1,2])
 
-## Test multidimensional arrays (bug #35679)
+## Test multidimensional arrays
 %!shared a, b, x, y
 %! rand ("seed", 2);
 %! a = rand (2,3,4,5);
 %! b = rand (3,4,6,5);
 %! x = sort (a, 4);
 %! y = sort (b, 3);
-%!assert (median (a, 4), x(:, :, :, 3))
-%!assert (median (b, 3), (y(:, :, 3, :) + y(:, :, 4, :))/2)
+%!assert <35679> (median (a, 4), x(:, :, :, 3))
+%!assert <35679> (median (b, 3), (y(:, :, 3, :) + y(:, :, 4, :))/2)
 
 ## Test non-floating point types
 %!assert (median ([true, false]), true)
--- a/scripts/statistics/base/quantile.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/statistics/base/quantile.m	Wed Sep 14 16:05:16 2016 -0700
@@ -321,8 +321,7 @@
 %! yexp = median (x, dim);
 %! assert (yobs, yexp);
 
-## Bug #45455
-%!assert (quantile ([1 3 2], 0.5, 1), [1 3 2])
+%!assert <45455> (quantile ([1 3 2], 0.5, 1), [1 3 2])
 
 ## Test input validation
 %!error quantile ()
--- a/scripts/strings/base2dec.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/strings/base2dec.m	Wed Sep 14 16:05:16 2016 -0700
@@ -121,8 +121,7 @@
 %!assert (base2dec ("-1", 2), NaN)
 %!assert (base2dec ({"A1", "1A"}, 16), [161; 26])
 
-## Bug #35621
-%!assert (base2dec (["0"; "1"], 2), [0; 1])
+%!assert <35621> (base2dec (["0"; "1"], 2), [0; 1])
 
 ## Test input validation
 %!error base2dec ()
--- a/scripts/strings/strsplit.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/strings/strsplit.m	Wed Sep 14 16:05:16 2016 -0700
@@ -297,12 +297,10 @@
 %! assert (strsplit ("aa", "a"), {"", ""});
 %! assert (strsplit ("aaa", "a"), {"", ""});
 
-## Bug #44641
-%!assert (strsplit ("xxx<yyy", "<"), {"xxx", "yyy"})
-%!assert (strsplit ('xxx\yyy', '\'), {"xxx", "yyy"})
+%!assert <44641> (strsplit ("xxx<yyy", "<"), {"xxx", "yyy"})
+%!assert <44641> (strsplit ('xxx\yyy', '\'), {"xxx", "yyy"})
 
-## Bug #47403
-%!assert (strsplit ('xxx+yyy', '+'), {"xxx", "yyy"})
+%!assert <47403> (strsplit ('xxx+yyy', '+'), {"xxx", "yyy"})
 
 ## Test input validation
 %!error strsplit ()
--- a/scripts/time/datestr.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/time/datestr.m	Wed Sep 14 16:05:16 2016 -0700
@@ -324,7 +324,7 @@
 %!test
 %! obs = toupper (datestr (testtime,16));
 %! assert (obs, " 2:33 AM");
-%!test  # bug #48071
+%!test <48071>
 %! testtime2 = testtime;
 %! testtime2(4) = 15;
 %! obs = toupper (datestr (testtime2,16));
--- a/scripts/time/datevec.m	Wed Sep 14 13:19:47 2016 -0700
+++ b/scripts/time/datevec.m	Wed Sep 14 16:05:16 2016 -0700
@@ -361,8 +361,8 @@
 %!assert (datevec ("06/01/2015 3:07:12.12 PM", "mm/dd/yyyy HH:MM:SS.FFF PM"),
 %!        [2015,6,1,15,7,12.12])
 
-## Test structure of return value (bug #42334)
-%!test
+## Test structure of return value
+%!test <42334>
 %! [~, ~, d] = datevec ([1 2; 3 4]);
 %! assert (d, [1 2; 3 4]);