changeset 23572:0703d31e1ec0

new script for updating test status for fixed bugs * build-aux/update-bug-status.sh: New script. * build-aux/module.mk: New file. * Makefile.am: Include it. * scripts/module.mk (FCN_FILES_WITH_TESTS): New variable.
author John W. Eaton <jwe@octave.org>
date Fri, 09 Jun 2017 17:40:34 -0400
parents b6144e6dda9e
children 1b4f4ec53b4a
files Makefile.am build-aux/module.mk build-aux/update-bug-status.sh libinterp/corefcn/bsxfun.cc libinterp/corefcn/cellfun.cc libinterp/corefcn/conv2.cc libinterp/corefcn/data.cc libinterp/corefcn/dlmread.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/svd.cc libinterp/dldfcn/chol.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 libinterp/parse-tree/pt-mat.cc scripts/general/accumarray.m scripts/general/bitset.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/geometry/voronoi.m scripts/image/image.m scripts/image/imwrite.m scripts/io/importdata.m scripts/io/strread.m scripts/io/textread.m scripts/miscellaneous/orderfields.m scripts/module.mk scripts/optimization/qp.m scripts/plot/appearance/axis.m scripts/plot/appearance/grid.m scripts/plot/appearance/legend.m scripts/plot/appearance/title.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/strcat.m scripts/strings/strmatch.m scripts/strings/strsplit.m scripts/time/datestr.m scripts/time/datevec.m
diffstat 62 files changed, 180 insertions(+), 282 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.am	Fri Jun 09 15:34:03 2017 -0400
+++ b/Makefile.am	Fri Jun 09 17:40:34 2017 -0400
@@ -244,6 +244,7 @@
 include examples/module.mk
 include m4/module.mk
 include test/module.mk
+include build-aux/module.mk
 
 DIST_HOOKS := \
   doc-interpreter-dist-hook \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build-aux/module.mk	Fri Jun 09 17:40:34 2017 -0400
@@ -0,0 +1,14 @@
+## utility rules to aid development
+
+EXTRA_DIST += \
+  %reldir%/update-bug-status.sh
+
+ALL_TEST_FILES = \
+  $(addprefix $(srcdir)/, $(LIBINTERP_TST_FILES_SRC)) \
+  $(addprefix $(srcdir)/, $(FCN_FILES_WITH_TESTS)) \
+  $(addprefix $(srcdir)/, $(TEST_FILES))
+
+## Tag bug IDs in tests as fixed
+update-bug-status:
+	$(SHELL) $(srcdir)/%reldir%/update-bug-status.sh $(ALL_TEST_FILES)
+.PHONY: update-bug-status
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build-aux/update-bug-status.sh	Fri Jun 09 17:40:34 2017 -0400
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+bug_numbers=$(for file in "$@"; do
+  sed -n "s/.*<\([0-9][0-9][0-9][0-9]*\)>.*/\1/p" "$file"
+done | sort -u)
+
+fixed_bug_numbers=$(for num in $bug_numbers; do
+  status=$(wget -q -O - http://octave.org/testfailure/?$num | sed -n 's/.*>Status:<\/span><\/span>&nbsp;<\/td><td valign="middle" width="35%">\([^<]*\)<.*/\1/p');
+  if [ "$status" = "Fixed" ]; then echo "$num"; fi
+done)
+
+if [ -z "$fixed_bug_numbers" ]; then
+  echo "no change in bug status"
+  exit 0;
+fi
+
+fixed_bug_pattern=`echo $fixed_bug_numbers | sed 's/ /\\\\|/g; s/^/<\\\\(/; s/$/\\\\)>/'`
+
+for file in "$@"; do
+   sed -i "s/$fixed_bug_pattern/<*\1>/" "$file"
+done
--- a/libinterp/corefcn/bsxfun.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/bsxfun.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -811,14 +811,11 @@
 %! endfor
 
 ## Automatic broadcasting with zero length dimensions
-%!assert <*47085> ([1 2 3] .+ zeros (0, 3), zeros (0, 3))
-%!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))
-%!assert <*47085> (rand (3, 3, 1) .+ rand (3, 3, 0), zeros (3, 3, 0))
+%!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
-%!test <*47085>
-%!test <*47085>
+%!test <47085>
 %! a = zeros (0, 3);
 %! a .+= [1 2 3];
 %! assert (a, zeros (0, 3));
--- a/libinterp/corefcn/cellfun.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/cellfun.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -979,14 +979,10 @@
 %! assert (b, {"c", "g"});
 %! assert (c, {".d", ".h"});
 
-%!assert <*40467> (cellfun (@isreal, {1 inf nan []}), [true, true, true, true])
-%!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 (@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 []}), [false, false, false, false])
-%!assert <*40467> (cellfun (@iscomplex, {1 inf nan []}, "UniformOutput", false), {false, false, false, false})
-%!assert <*40467> (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	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/conv2.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -255,17 +255,13 @@
 %!shared
 
 ## Test cases from Bug #34893
-%!assert <*34893> (conv2 ([1:5;1:5], [1:2], "same"),
-%!assert <*34893> (conv2 ([1:5;1:5], [1:2], "same"),
+%!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"),
-%!assert <*34893> (conv2 ([1:5;1:5]', [1:2]', "same"),
+%!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"),
-%!assert <*34893> (conv2 ([1:5;1:5], [1:2], "valid"),
+%!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"),
-%!assert <*34893> (conv2 ([1:5;1:5]', [1:2]', "valid"),
+%!assert <34893> (conv2 ([1:5;1:5]', [1:2]', "valid"),
 %!                [4 7 10 13; 4 7 10 13]')
 
 %!test
--- a/libinterp/corefcn/data.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/data.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -559,8 +559,7 @@
 %! assert (f, complex (zeros (3, 2), [0,-0.5; 0.5,-0.5; Inf,-Inf]));
 %! assert (e(1:2,:), [0,1; 2,3]);
 
-%!assert <*42583> (all (log2 (pow2 (-1074:1023)) == -1074:1023))
-%!assert <*42583> (all (log2 (pow2 (-1074:1023)) == -1074:1023))
+%!assert <42583> (all (log2 (pow2 (-1074:1023)) == -1074:1023))
 */
 
 DEFUN (rem, args, ,
@@ -726,13 +725,10 @@
 %! assert (nnz (y), 1);
 %! assert (y, sparse ([NaN 0 0 0]));
 
-%!assert <*45587> (signbit (rem (-0, 1)))
-%!assert <*45587> (signbit (rem (-0, 1)))
-%!assert <*45587> (! signbit (rem (0, 1)))
-%!assert <*45587> (! signbit (rem (0, 1)))
-
-%!assert <*42627> (rem (0.94, 0.01), 0.0)
-%!assert <*42627> (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]))
@@ -908,13 +904,10 @@
 %!assert (mod (2.1, 0.1), 0)
 %!assert (mod (2.1, 0.2), 0.1, eps)
 
-%!assert <*45587> (signbit (mod (-0, 0)))
-%!assert <*45587> (signbit (mod (-0, 0)))
-%!assert <*45587> (! signbit (mod (0, -0)))
-%!assert <*45587> (! signbit (mod (0, -0)))
-
-%!assert <*42627> (mod (0.94, 0.01), 0.0)
-%!assert <*42627> (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)
 */
 
 #define DATA_REDUCTION(FCN)                                             \
@@ -1273,12 +1266,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]))
 
-%!assert <*37411> (diag (diag ([5, 2, 3])(:,1)), diag([5 0 0 ]))
-%!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(4, 5)])
-%!assert <*37411> (diag (diag ([5, 2, 3])(:,1), -2), [[0 0 5 0 0]', zeros(5, 4)])
-%!assert <*37411> (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])
@@ -2212,8 +2202,7 @@
 
 %!error horzcat (struct ("foo", "bar"), cell (1))
 
-%!test <*39041> assert (class (horzcat (cell(0), struct())), "cell")
-%!test <*39041> assert (class (horzcat (cell(0), struct())), "cell")
+%!test <39041> assert (class (horzcat (cell(0), struct())), "cell")
 %!test <51086> assert (class (horzcat (struct(), cell(0))), "struct")
 */
 
@@ -2437,8 +2426,7 @@
 %!assert ([zeros(3,2,2); ones(1,2,2)], repmat ([0;0;0;1],[1,2,2]))
 %!assert ([zeros(3,2,2); ones(1,2,2)], vertcat (zeros (3,2,2), ones (1,2,2)))
 
-%!test <*49759>
-%!test <*49759>
+%!test <49759>
 %! A = [];
 %! B = {1; 2};
 %! assert (cat (1, A, B), {1; 2});
@@ -4240,8 +4228,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 <*47298>
-%!test <*47298>
+%!test <47298>
 %! funcs = {@zeros, @ones, @inf, @nan, @NA, @i, @pi, @e};
 %! for idx = 1:numel (funcs)
 %!   func = funcs{idx};
--- a/libinterp/corefcn/dlmread.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/dlmread.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -551,8 +551,7 @@
 %!   unlink (file);
 %! end_unwind_protect
 
-%!test <*42025>
-%!test <*42025>
+%!test <42025>
 %! file = tempname ();
 %! unwind_protect
 %!   fid = fopen (file, "wt");
@@ -568,8 +567,7 @@
 %!   unlink (file);
 %! end_unwind_protect
 
-%!test <*50589>
-%!test <*50589>
+%!test <50589>
 %! file = tempname ();
 %! unwind_protect
 %!   fid = fopen (file, "wt");
--- a/libinterp/corefcn/ellipj.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/ellipj.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -816,8 +816,7 @@
 %! assert (cn, C, 8*eps);
 %! assert (dn, D, 8*eps);
 
-%!test <*43344>
-%!test <*43344>
+%!test <43344>
 %! ## Test continuity of dn when cn is near zero
 %! m = 0.5;
 %! u = ellipke (0.5);
--- a/libinterp/corefcn/error.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/error.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -1751,8 +1751,7 @@
 }
 
 /*
-%!test <*45753>
-%!test <*45753>
+%!test <45753>
 %! warning ("error");
 %! assert (! isempty (help ("warning")));
 */
--- a/libinterp/corefcn/file-io.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/file-io.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -1761,15 +1761,13 @@
 %! assert (R{1}, int32 (1));
 %! assert (isempty (R{2}), true);
 
-%!test <*37023>
-%!test <*37023>
+%!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 using delimiter ";"
-%!test <*37333>
-%!test <*37333>
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = "C:/code/meas;";
 %! tc{1, end+1} = " C:/code/sim;";
@@ -1785,8 +1783,7 @@
 %! endfor
 
 ## Whitespace test, adding multipleDelimsAsOne true arg
-%!test <*37333>
-%!test <*37333>
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = " C:/code/meas;";
 %! tc{1, end+1} = "C:/code/sim;;";
@@ -1802,8 +1799,7 @@
 %! endfor
 
 ## Whitespace test (bug #37333), adding multipleDelimsAsOne false arg
-%!test <*37333>
-%!test <*37333>
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = " C:/code/meas;";
 %! tc{1, end+1} = "C:/code/sim;;";
@@ -1820,8 +1816,7 @@
 %! endfor
 
 ## Whitespace test (bug #37333) whitespace "" arg
-%!test <*37333>
-%!test <*37333>
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = " C:/code/meas;";
 %! tc{1, end+1} = "C:/code/sim;";
@@ -1836,8 +1831,7 @@
 %! endfor
 
 ## Whitespace test (bug #37333), whitespace " " arg
-%!test <*37333>
-%!test <*37333>
+%!test <37333>
 %! tc{1, 1} = "C:/code;";
 %! tc{1, end+1} = " C:/code/meas;";
 %! tc{1, end+1} = "C:/code/sim;";
@@ -1955,23 +1949,19 @@
 %! unlink (f);
 %! assert (msg1, lasterr);
 
-%!assert <*41824> (textscan ("123", "", "whitespace", " "){:}, 123);
-%!assert <*41824> (textscan ("123", "", "whitespace", " "){:}, 123);
+%!assert <41824> (textscan ("123", "", "whitespace", " "){:}, 123);
 
 ## just test supplied emptyvalue
-%!assert <*42343> (textscan (",NaN", "", "delimiter", "," ,"emptyValue" ,Inf),
-%!assert <*42343> (textscan (",NaN", "", "delimiter", "," ,"emptyValue" ,Inf),
+%!assert <42343> (textscan (",NaN", "", "delimiter", "," ,"emptyValue" ,Inf),
 %!                {Inf, NaN})
 
 ## test padding with supplied emptyvalue
-%!test <*42343>
-%!test <*42343>
+%!test <42343>
 %! c = textscan (",1,,4\nInf,  ,NaN\n", "", "delimiter", ",",
 %!               "emptyvalue", -10);
 %! assert (cell2mat (c), [-10, 1, -10, 4; Inf, -10, NaN, -10]);
 
-%!test <*42528>
-%!test <*42528>
+%!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", ",");
@@ -2002,8 +1992,7 @@
 %! assert (c{2}', [12, 22]);
 %! assert (c{3}', [13, 23]);
 
-%!test <*44750>
-%!test <*44750>
+%!test <44750>
 %! c = textscan ("/home/foo/", "%s", "delimiter", "/",
 %!               "MultipleDelimsAsOne", 1);
 %! assert (c{1}, {"home"; "foo"});
@@ -2025,8 +2014,7 @@
 %! assert (c{1}, 32.5, 1e-5);
 
 ## Test various forms of string format specifiers
-%!test <*45712>
-%!test <*45712>
+%!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});
@@ -2115,8 +2103,7 @@
 %! assert (C{1}, {"ab cd efg"; "a ce g"; "   "});
 %! assert (C{2}, {"1Any"; "2Trailing"; "3Junk"});
 
-%!assert <*36464> (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);
+%!assert <36464> (textscan ("1 2 3 4 5 6", "%*n%n%*[^\n]"){1}, 2);
 
 ## test %[]] and %[^]]
 %!test
--- a/libinterp/corefcn/graphics.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/graphics.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -7230,8 +7230,7 @@
 }
 
 /*
-%!test <*45356>
-%!test <*45356>
+%!test <45356>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   plot (1:10);
--- a/libinterp/corefcn/hash.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/hash.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -199,26 +199,18 @@
 %!         "417a81a538327af927da3e"]);
 
 ## Test special character behavior
-%!assert <*31689> (hash ("md2", "abc\0"), "5a636d615002a7874ac1c9e9a43361f7")
-%!assert <*31689> (hash ("md2", "abc\0"), "5a636d615002a7874ac1c9e9a43361f7")
-%!assert <*31689> (hash ("md4", "abc\0"), "0ee5201897ecb206c4eaba1d2da5224d")
-%!assert <*31689> (hash ("md4", "abc\0"), "0ee5201897ecb206c4eaba1d2da5224d")
-%!assert <*31689> (hash ("md5", "abc\0"), "147a664a2ca9410911e61986d3f0d52a")
-%!assert <*31689> (hash ("md5", "abc\0"), "147a664a2ca9410911e61986d3f0d52a")
-%!assert <*31689> (hash ("sha1", "abc\0"), "686483805ac47ca14e03514f7481a7973b401762")
-%!assert <*31689> (hash ("sha1", "abc\0"), "686483805ac47ca14e03514f7481a7973b401762")
-%!assert <*31689> (hash ("sha224", "abc\0"),
-%!assert <*31689> (hash ("sha224", "abc\0"),
+%!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 <*31689> (hash ("sha256", "abc\0"),
-%!assert <*31689> (hash ("sha256", "abc\0"),
+%!assert <31689> (hash ("sha256", "abc\0"),
 %!        "dc1114cd074914bd872cc1f9a23ec910ea2203bc79779ab2e17da25782a624fc");
-%!assert <*31689> (hash ("sha384", "abc\0"),
-%!assert <*31689> (hash ("sha384", "abc\0"),
+%!assert <31689> (hash ("sha384", "abc\0"),
 %!        ["eba81f2dfba4ec60d3f786c89d91b08e6c0b63d55986874378e385", ...
 %!         "e6fac587cce7a520ca9437290fe626cbf75c855e17"]);
-%!assert <*31689> (hash ("sha512", "abc\0"),
-%!assert <*31689> (hash ("sha512", "abc\0"),
+%!assert <31689> (hash ("sha512", "abc\0"),
 %!        ["7ce05eda233e545a2d5c626862a5ddaafb09b9d8ec3bec08aa458b", ...
 %!         "7c9e7d939d84a57d5a20d8a9002983aabae2457b19c50ba326bf5b", ...
 %!         "081f75b41342f42c3383"]);
--- a/libinterp/corefcn/mappers.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/mappers.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -374,8 +374,7 @@
 %! assert (atan (x), v, sqrt (eps ("single")));
 
 ## Test large magnitude arguments (bug #44310, bug #45507)
-%!test <*44310>
-%!test <*44310>
+%!test <44310>
 %! x = [1, -1, i, -i] .* 1e150;
 %! v = [pi/2, -pi/2, pi/2, -pi/2];
 %! assert (real (atan (x)), v);
@@ -410,8 +409,7 @@
 %! assert (atanh (x), v, sqrt (eps ("single")));
 
 ## Test large magnitude arguments (bug #44310, bug #45507)
-%!test <*44310>
-%!test <*44310>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/max.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -865,10 +865,8 @@
 %! assert (max (x, 2.1i), sparse ([2.1i 2.1i 3 4]));
 
 ## Test for bug #40743
-%!assert <*40743> (max (zeros (1,0), ones (1,1)), 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))),
-%!assert <*40743> (max (sparse (zeros (1,0)), sparse (ones (1,1))),
+%!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 ()
--- a/libinterp/corefcn/rand.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/rand.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -1166,8 +1166,7 @@
 %!assert (length (randperm (20,10)), 10)
 
 ## Test biggish N
-%!assert <*39378> (length (randperm (30000^2, 100000)), 100000)
-%!assert <*39378> (length (randperm (30000^2, 100000)), 100000)
+%!assert <39378> (length (randperm (30000^2, 100000)), 100000)
 
 %!test
 %! rand ("seed", 0);
--- a/libinterp/corefcn/regexp.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/regexp.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -980,8 +980,7 @@
 %! ## Parenthesis in named token (ie (int)) causes a problem
 %! assert (regexp ('qwe int asd', ['(?<typestr>(int))'], 'names'), struct ('typestr', 'int'));
 
-%!test <*35683>
-%!test <*35683>
+%!test <35683>
 %! ## Mix of named and unnamed tokens can cause segfault
 %! str = "abcde";
 %! ptn = '(?<T1>a)(\w+)(?<T2>d\w+)';
@@ -1118,8 +1117,7 @@
 %!assert (regexp ("\n", "\n"), 1)
 
 # Test escape sequences are silently converted
-%!test <*45407>
-%!test <*45407>
+%!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/svd.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/corefcn/svd.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -352,8 +352,7 @@
 %! assert (size (s), [0, 0]);
 %! assert (size (v), [0, 0]);
 
-%!test <*49309>
-%!test <*49309>
+%!test <49309>
 %! [~,~,v] = svd ([1, 1, 1], 0);
 %! assert (size (v), [3 3]);
 %! [~,~,v] = svd ([1, 1, 1], "econ");
--- a/libinterp/dldfcn/chol.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/dldfcn/chol.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -339,8 +339,7 @@
 %! assert (pd, pv)
 %! assert (qv, [1 2])
 
-%!testif HAVE_CHOLMOD <*42587>
-%!testif HAVE_CHOLMOD <*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/symbfact.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/dldfcn/symbfact.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -406,8 +406,7 @@
 %! [~, ~, ~, ~, l] = symbfact (A, "sym", "lower");
 %! assert (l, sparse (tril (true (3))));
 
-%!testif HAVE_CHOLMOD <*42587>
-%!testif HAVE_CHOLMOD <*42587>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/octave-value/ov-cx-diag.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -252,6 +252,5 @@
 }
 
 /*
-%!assert <*36368> (diag ([1+i, 1-i])^2 , diag ([2i, -2i]), 4*eps)
-%!assert <*36368> (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	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/octave-value/ov-fcn-handle.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -1294,8 +1294,7 @@
 }
 
 /*
-%!test <*33857>
-%!test <*33857>
+%!test <33857>
 %! a = 2;
 %! f = @(x) a + x;
 %! g = @(x) 2 * x;
@@ -1347,8 +1346,7 @@
 %!  endif
 %!endfunction
 
-%!test <*35876>
-%!test <*35876>
+%!test <35876>
 %! a = 2;
 %! f = @(x) a + x;
 %! g = @(x) 2 * x;
--- a/libinterp/octave-value/ov-java.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/octave-value/ov-java.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -3223,8 +3223,7 @@
 %! assert (javaMethod ("binarySearch", "java.util.Arrays", uint16 ([90 100 128]), uint16 (128)), 2);
 
 ## Check we can create objects that wrap java literals
-%!testif HAVE_JAVA; usejava ("jvm") <*38821>
-%!testif HAVE_JAVA; usejava ("jvm") <*38821>
+%!testif HAVE_JAVA; usejava ("jvm") <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");
@@ -3235,8 +3234,7 @@
 %! assert (class (javaObject ("java.lang.Long",     int64 (1))), "java.lang.Long");
 
 ## Test for automatic conversion of specific numeric classes
-%!testif HAVE_JAVA; usejava ("jvm") <*48013>
-%!testif HAVE_JAVA; usejava ("jvm") <*48013>
+%!testif HAVE_JAVA; usejava ("jvm") <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)
@@ -3247,8 +3245,7 @@
 %! assert (class (javaMethod ("valueOf", "java.math.BigInteger",  int64 (1))), "java.math.BigInteger")
 
 ## Automatic conversion from string cell array into String[]
-%!testif HAVE_JAVA; usejava ("jvm") <*45290>
-%!testif HAVE_JAVA; usejava ("jvm") <*45290>
+%!testif HAVE_JAVA; usejava ("jvm") <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/libinterp/parse-tree/pt-mat.cc	Fri Jun 09 15:34:03 2017 -0400
+++ b/libinterp/parse-tree/pt-mat.cc	Fri Jun 09 17:40:34 2017 -0400
@@ -343,8 +343,7 @@
 %!assert (class ([cell(1), struct("foo", "bar")]), "cell")
 %!error [struct("foo", "bar"), cell(1)]
 
-%!test <*39041> assert (class ([cell(0), struct()]), "cell")
-%!test <*39041> assert (class ([cell(0), struct()]), "cell")
+%!test <39041> assert (class ([cell(0), struct()]), "cell")
 %!test <51086> assert (class ([struct(), cell(0)]), "struct")
 
 %!assert ([,1], 1)
--- a/scripts/general/accumarray.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/accumarray.m	Fri Jun 09 17:40:34 2017 -0400
@@ -440,8 +440,7 @@
 %!error (accumarray ([1,2,3],1:2))
 
 ## Handle empty arrays
-%!test <*47287>
-%!test <*47287>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/bitset.m	Fri Jun 09 17:40:34 2017 -0400
@@ -101,8 +101,7 @@
 %!   endfor
 %! endfor
 
-%!assert <*36458> (bitset (uint8 ([1, 2;3 4]), 1, [0 1; 0 1]),
-%!assert <*36458> (bitset (uint8 ([1, 2;3 4]), 1, [0 1; 0 1]),
+%!assert <36458> (bitset (uint8 ([1, 2;3 4]), 1, [0 1; 0 1]),
 %!                uint8 ([0, 3; 2 5]))
 
 %!error bitset (1)
--- a/scripts/general/inputParser.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/inputParser.m	Fri Jun 09 17:40:34 2017 -0400
@@ -658,8 +658,7 @@
 %!         {"file", "foo", 80,    true,      "circle"});
 
 ## We must not perform validation of default values
-%!test <*45837>
-%!test <*45837>
+%!test <45837>
 %! p = inputParser;
 %! p.addParameter ("Dir", [], @ischar);
 %! p.parse ();
@@ -745,8 +744,7 @@
 ## This behaviour means that a positional option can never be a string
 ## that is the name of a parameter key.  This is required for Matlab
 ## compatibility.
-%!test <*50752>
-%!test <*50752>
+%!test <50752>
 %! p = inputParser ();
 %! p.addOptional ("op1", "val");
 %! p.addParameter ("line", "tree");
@@ -786,8 +784,7 @@
 %! fail ('p.parse ("line", "line", 89)',
 %!       "non-string for Parameter name or Switch")
 
-%!test <*50752>
-%!test <*50752>
+%!test <50752>
 %! ## This fails in Matlab but works in Octave.  It is a bug there
 %! ## that we do not replicate.
 %! p = inputParser ();
@@ -796,8 +793,7 @@
 %! p.parse ("line");
 %! assert (p.Results, struct ("op1", "line", "line", "circle"))
 
-%!test <*50752>
-%!test <*50752>
+%!test <50752>
 %! p = inputParser;
 %! p.addOptional ("op1", "val1");
 %! p.addSwitch ("line");
--- a/scripts/general/interp2.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/interp2.m	Fri Jun 09 17:40:34 2017 -0400
@@ -519,14 +519,11 @@
 %! assert (interp2 (X, 2.5, 2.5, "nearest"), 3);
 
 ## re-order monotonically decreasing
-%!assert <*41838> (interp2 ([1 2 3], [3 2 1], magic (3), 2.5, 3), 3.5)
-%!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)
-%!assert <*41838> (interp2 ([3 2 1], [1 2 3], magic (3), 1.5, 1), 3.5)
+%!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)
 
 ## Linear interpretation with vector XI doesn't lead to matrix output
-%!assert <*49506> (interp2 ([2 3], [2 3 4], [1 2; 3 4; 5 6], [2 3], 3, "linear"), [3 4])
-%!assert <*49506> (interp2 ([2 3], [2 3 4], [1 2; 3 4; 5 6], [2 3], 3, "linear"), [3 4])
+%!assert <49506> (interp2 ([2 3], [2 3 4], [1 2; 3 4; 5 6], [2 3], 3, "linear"), [3 4])
 
 %!shared z, zout, tol
 %! z = [1 3 5; 3 5 7; 5 7 9];
--- a/scripts/general/interpft.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/interpft.m	Fri Jun 09 17:40:34 2017 -0400
@@ -123,8 +123,7 @@
 %!assert (interpft ([y,y],n), [y,y], 20*eps)
 
 ## Test case with complex input
-%!test <*39566>
-%!test <*39566>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/num2str.m	Fri Jun 09 17:40:34 2017 -0400
@@ -247,11 +247,9 @@
 %! assert (num2str (1e23), "100000000000000000000000");
 
 ## Test for extra rows generated from newlines in format
-%!assert <*44864> (rows (num2str (magic (3), "%3d %3d %3d\n")), 3)
-%!assert <*44864> (rows (num2str (magic (3), "%3d %3d %3d\n")), 3)
+%!assert <44864> (rows (num2str (magic (3), "%3d %3d %3d\n")), 3)
 
-%!assert <*45174> (num2str ([65 66 67], "%s"), "ABC")
-%!assert <*45174> (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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/postpad.m	Fri Jun 09 17:40:34 2017 -0400
@@ -106,8 +106,7 @@
 %!assert (postpad ([1; 2], 2, 3, 2), [1 3; 2 3])
 
 %! ## Test with string concatenation
-%!assert <*44162> (postpad ("Octave", 16, "x"), "Octavexxxxxxxxxx")
-%!assert <*44162> (postpad ("Octave", 16, "x"), "Octavexxxxxxxxxx")
+%!assert <44162> (postpad ("Octave", 16, "x"), "Octavexxxxxxxxxx")
 %!assert (postpad ("Octave", 4), "Octa")
 
 %!error postpad ()
--- a/scripts/general/prepad.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/prepad.m	Fri Jun 09 17:40:34 2017 -0400
@@ -109,8 +109,7 @@
 %!assert (prepad ([1;2], 2, 2, 3), reshape ([2;2;1;2], 2, 1, 2))
 
 %! ## Test with string concatenation
-%!assert <*44162> (prepad ("Octave", 16, "x"), "xxxxxxxxxxOctave")
-%!assert <*44162> (prepad ("Octave", 16, "x"), "xxxxxxxxxxOctave")
+%!assert <44162> (prepad ("Octave", 16, "x"), "xxxxxxxxxxOctave")
 %!assert (prepad ("Octave", 4), "tave")
 
 ## FIXME: We need tests for multidimensional arrays.
--- a/scripts/general/rat.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/general/rat.m	Fri Jun 09 17:40:34 2017 -0400
@@ -159,8 +159,7 @@
 %! assert (n, [1, 3, 1]);
 %! assert (d, [2, 10, 3]);
 
-%!assert <*43374> (eval (rat (0.75)), [0.75])
-%!assert <*43374> (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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/geometry/rectint.m	Fri Jun 09 17:40:34 2017 -0400
@@ -94,14 +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])
 
-%!assert <*44904> (rectint ([0 0 5 5], [6 6 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], [0 6 5 5]), 0)
-%!assert <*44904> (rectint ([0 0 5 5], [6 0 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)
-%!assert <*44904> (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/geometry/voronoi.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/geometry/voronoi.m	Fri Jun 09 17:40:34 2017 -0400
@@ -200,22 +200,19 @@
 %! assert (vx(2,:), zeros (1, columns (vx)), eps);
 %! assert (vy(2,:), zeros (1, columns (vy)), eps);
 
-%!testif HAVE_QHULL <*40996>
-%!testif HAVE_QHULL <*40996>
+%!testif HAVE_QHULL <40996>
 %! ## Special case of just 2 points
 %! x = [0 1];  y = [1 0];
 %! [vx, vy] = voronoi (x,y);
 %! assert (vx, [-0.7; 1.7], eps);
 %! assert (vy, [-0.7; 1.7], eps);
 
-%!testif HAVE_QHULL <*38295>
-%!testif HAVE_QHULL <*38295>
+%!testif HAVE_QHULL <38295>
 %! x = [1,2,3];  y = [2,3,1];
 %! [vx, vy] = voronoi (x,y);
 %! assert (columns (vx), 3);
 
-%!testif HAVE_QHULL <*37270>
-%!testif HAVE_QHULL <*37270>
+%!testif HAVE_QHULL <37270>
 %! ## Duplicate points can cause an internal error
 %! x = [1,2,3, 3];  y = [2,3,1, 1];
 %! [vx, vy] = voronoi (x,y);
--- a/scripts/image/image.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/image/image.m	Fri Jun 09 17:40:34 2017 -0400
@@ -228,8 +228,7 @@
 %!  title ("image (-x, -y, img)");
 
 ## test hidden properties x/ydatamode
-%!test <*42121>
-%!test <*42121>
+%!test <42121>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   nx = 64; ny = 64;
--- a/scripts/image/imwrite.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/image/imwrite.m	Fri Jun 09 17:40:34 2017 -0400
@@ -230,8 +230,7 @@
 %!endfunction
 
 ## BMP images must be saved uncompressed by default
-%!testif HAVE_MAGICK <*45565>
-%!testif HAVE_MAGICK <*45565>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/io/importdata.m	Fri Jun 09 17:40:34 2017 -0400
@@ -529,8 +529,7 @@
 %! assert (d, "\t");
 %! assert (h, 0);
 
-%!test <*43393>
-%!test <*43393>
+%!test <43393>
 %! ## Distinguish double from complex when no delimiter is supplied
 %! fn  = tmpnam ();
 %! fid = fopen (fn, "w");
--- a/scripts/io/strread.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/io/strread.m	Fri Jun 09 17:40:34 2017 -0400
@@ -894,8 +894,7 @@
 %!                  "commentstyle", "shell"), ...
 %!         {"Hello"; "World!"});
 
-%!test <*49454>
-%!test <*49454>
+%!test <49454>
 %! assert (strread ("hello%foo\nworld, another%bar\r\nday", "%s", ...
 %!                  "commentstyle", "matlab", "delimiter", " ,"),...
 %!         {"hello"; "world"; "another"; "day"});
@@ -924,15 +923,13 @@
 %! assert (a, int32 (10));
 %! assert (b, {"a"});
 
-%!test <*33536>
-%!test <*33536>
+%!test <33536>
 %! [a, b, c] = strread ("1,,2", "%s%s%s", "delimiter", ",");
 %! assert (a{1}, "1");
 %! assert (b{1}, "");
 %! assert (c{1}, "2");
 
-%!test <*33536>
-%!test <*33536>
+%!test <33536>
 %!test
 %! a = strread ("[SomeText]", "[%s", "delimiter", "]");
 %! assert (a{1}, "SomeText");
@@ -987,8 +984,7 @@
 %! assert (c', [13, 24, 34]);
 %! assert (d', [15, 25, 35]);
 
-%!assert <*44750> (strread ('/home/foo/','%s','delimiter','/','MultipleDelimsAsOne',1),
-%!assert <*44750> (strread ('/home/foo/','%s','delimiter','/','MultipleDelimsAsOne',1),
+%!assert <44750> (strread ('/home/foo/','%s','delimiter','/','MultipleDelimsAsOne',1),
 %!                {"home"; "foo"})
 
 ## delimiter as sq_string and dq_string
@@ -1045,15 +1041,13 @@
 %! assert (a, NaN);
 %! assert (b, NaN);
 
-%!test <*35999>
-%!test <*35999>
+%!test <35999>
 %! [a, b, c] = strread ("", "%f");
 %! assert (isempty (a));
 %! assert (isempty (b));
 %! assert (isempty (c));
 
-%!test <*37023>
-%!test <*37023>
+%!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);
@@ -1063,32 +1057,28 @@
 %!        [NaN; 2; NaN; 4; 5; NaN; 7])
 
 ## Test #1 bug #42609
-%!test <*42609>
-%!test <*42609>
+%!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 <*42609>
-%!test <*42609>
+%!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 <*42609>
-%!test <*42609>
+%!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 <*42609>
-%!test <*42609>
+%!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]);
@@ -1117,8 +1107,7 @@
 %!assert (strread ("Total: 32.5 % (of cm values)","Total: %f % (of cm values)"), 32.5, 1e-5)
 
 ## Test various forms of string format specifiers
-%!test <*45712>
-%!test <*45712>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/io/textread.m	Fri Jun 09 17:40:34 2017 -0400
@@ -476,8 +476,7 @@
 #%! assert (A, [0 2 0 4; 5 0 0 0], 1e-6);
 
 ### Test endofline
-#%!test <*45046>
-#%!test <*45046>
+#%!test <45046>
 #%! f = tempname ();
 #%! fid = fopen (f, "w");
 #%! fprintf (fid, "a\rb\rc");
@@ -491,8 +490,7 @@
 #%! unlink (f);
 
 ### Properly process single-quoted EOL args
-#%!test <*46477>
-#%!test <*46477>
+#%!test <46477>
 #%! f = tempname ();
 #%! fid = fopen (f, "w");
 #%! fprintf (fid, "hello, world!");
--- a/scripts/miscellaneous/orderfields.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/miscellaneous/orderfields.m	Fri Jun 09 17:40:34 2017 -0400
@@ -195,8 +195,7 @@
 %! assert (aa(2).y{1}, 6);
 
 ## Corner case of empty struct
-%!assert <*40224> (orderfields (struct ()), struct ())
-%!assert <*40224> (orderfields (struct ()), struct ())
+%!assert <40224> (orderfields (struct ()), struct ())
 %!test
 %! s(2,2).a = 1;
 %! s(1,1).b = 2;
--- a/scripts/module.mk	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/module.mk	Fri Jun 09 17:40:34 2017 -0400
@@ -88,6 +88,8 @@
   $(GEN_FCN_FILES) \
   $(PKG_ADD_FILES)
 
+FCN_FILES_WITH_TESTS = $(shell $(SHELL) $(srcdir)/build-aux/find-files-with-tests.sh "$(srcdir)" $(FCN_FILES) $(GEN_FCN_FILES_IN))
+
 define PKG_ADD_FILE_TEMPLATE
 $(1)/PKG_ADD: $$($(2)_FCN_FILES) $$($(2)_GEN_FCN_FILES) $(1)/$(octave_dirstamp) %reldir%/mk-pkg-add
 	$$(AM_V_GEN)rm -f $$@-t $$@ && \
--- a/scripts/optimization/qp.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/optimization/qp.m	Fri Jun 09 17:40:34 2017 -0400
@@ -421,8 +421,7 @@
 
 
 ## Test infeasible initial guess
-%!testif HAVE_GLPK <*40536>
-%!testif HAVE_GLPK <*40536>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/plot/appearance/axis.m	Fri Jun 09 17:40:34 2017 -0400
@@ -673,8 +673,7 @@
 %! end_unwind_protect
 
 ## Test 'axis tight' with differently oriented, differently numbered data vecs
-%!test <*40036>
-%!test <*40036>
+%!test <40036>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   Z = peaks (linspace (-3, 3, 49), linspace (-2, 2, 29));
--- a/scripts/plot/appearance/grid.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/plot/appearance/grid.m	Fri Jun 09 17:40:34 2017 -0400
@@ -192,8 +192,7 @@
 %! title ("Minor grid adapts to xticks (bug #45850)")
 
 ## linear scaling
-%!test <*48533>
-%!test <*48533>
+%!test <48533>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   hax = axes ();
@@ -252,8 +251,7 @@
 %! end_unwind_protect
 
 ## semilog scaling
-%!test <*48533>
-%!test <*48533>
+%!test <48533>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   hax = axes ();
--- a/scripts/plot/appearance/legend.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/plot/appearance/legend.m	Fri Jun 09 17:40:34 2017 -0400
@@ -1629,8 +1629,7 @@
 %!   graphics_toolkit (toolkit);
 %! end_unwind_protect
 
-%!test <*42035>
-%!test <*42035>
+%!test <42035>
 %! h = figure ("visible", "off");
 %! unwind_protect
 %!   hax1 = subplot (1,2,1);
--- a/scripts/plot/appearance/title.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/plot/appearance/title.m	Fri Jun 09 17:40:34 2017 -0400
@@ -113,8 +113,7 @@
 %!   close (hf);
 %! end_unwind_protect
 
-%!test <*49469>
-%!test <*49469>
+%!test <49469>
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   ht = title ("Test FontSize Property");
--- a/scripts/plot/draw/hist.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/plot/draw/hist.m	Fri Jun 09 17:40:34 2017 -0400
@@ -218,13 +218,10 @@
 %! endfor
 %!assert (hist (1,1), 1)
 %!assert (size (hist (randn (750,240), 200)), [200,240])
-%!assert <*42394> (isempty (hist (rand (10,2), 0:5, 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)
-%!assert <*42394> (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 <*47707>
-%!test <*47707>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/polynomial/residue.m	Fri Jun 09 17:40:34 2017 -0400
@@ -406,8 +406,7 @@
 %! assert (ar, a, 1e-12);
 
 ## The following test is due to Bernard Grung
-%!test <*34266>
-%!test <*34266>
+%!test <34266>
 %! z1 =  7.0372976777e6;
 %! p1 = -3.1415926536e9;
 %! p2 = -4.9964813512e8;
@@ -425,8 +424,7 @@
 %! assert (br, [0,0,b], 1e-7);
 %! assert (ar, a, 1e-8);
 
-%!test <*49291>
-%!test <*49291>
+%!test <49291>
 %! rf = [1e3, 2e3, 1e3, 2e3];
 %! cf = [316.2e-9, 50e-9, 31.6e-9, 5e-9];
 %! [num, den] = residue (1./cf,-1./(rf.*cf),0);
@@ -434,8 +432,7 @@
 %! assert (numel (den), 5);
 %! assert (den(1), 1);
 
-%!test <*51148>
-%!test <*51148>
+%!test <51148>
 %! r = [1.0000e+18, 3.5714e+12, 2.2222e+11, 2.1739e+10];
 %! pin = [-1.9231e+15, -1.6234e+09, -4.1152e+07, -1.8116e+06];
 %! k = 0;
--- a/scripts/set/setdiff.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/set/setdiff.m	Fri Jun 09 17:40:34 2017 -0400
@@ -115,18 +115,12 @@
 %! assert (c, a(ia));
 
 ## 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), [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])
-%!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])
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/signal/fftshift.m	Fri Jun 09 17:40:34 2017 -0400
@@ -139,8 +139,7 @@
 %! assert (fftshift (y), "bcdefga");
 
 ## Test N-dimensional input
-%!test <*45207>
-%!test <*45207>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/signal/ifftshift.m	Fri Jun 09 17:40:34 2017 -0400
@@ -124,8 +124,7 @@
 %! assert (ifftshift (y), "defgabc");
 
 ## Test N-dimensional input
-%!test <*45207>
-%!test <*45207>
+%!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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/specfun/nthroot.m	Fri Jun 09 17:40:34 2017 -0400
@@ -94,8 +94,7 @@
 %!assert (nthroot (-Inf, -7), 0)
 
 ## This should not generate a division by zero warning
-%!test <*43492>
-%!test <*43492>
+%!test <43492>
 %! warnmsg = lastwarn ();
 %! assert (nthroot (0, 2), 0);
 %! assert (lastwarn (), warnmsg);
--- a/scripts/special-matrix/magic.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/special-matrix/magic.m	Fri Jun 09 17:40:34 2017 -0400
@@ -88,8 +88,7 @@
 ## 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 <*46672>
-%!test <*46672>
+%!test <46672>
 %! m = magic (2);
 %! assert (size (m), [2 2]);
 %! assert (unique (m), [1; 2; 3; 4]);
--- a/scripts/statistics/base/median.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/statistics/base/median.m	Fri Jun 09 17:40:34 2017 -0400
@@ -118,10 +118,8 @@
 %! b = rand (3,4,6,5);
 %! x = sort (a, 4);
 %! y = sort (b, 3);
-%!assert <*35679> (median (a, 4), x(:, :, :, 3))
-%!assert <*35679> (median (a, 4), x(:, :, :, 3))
-%!assert <*35679> (median (b, 3), (y(:, :, 3, :) + y(:, :, 4, :))/2)
-%!assert <*35679> (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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/statistics/base/quantile.m	Fri Jun 09 17:40:34 2017 -0400
@@ -321,8 +321,7 @@
 %! yexp = median (x, dim);
 %! assert (yobs, yexp);
 
-%!assert <*45455> (quantile ([1 3 2], 0.5, 1), [1 3 2])
-%!assert <*45455> (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	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/strings/base2dec.m	Fri Jun 09 17:40:34 2017 -0400
@@ -121,8 +121,7 @@
 %!assert (base2dec ("-1", 2), NaN)
 %!assert (base2dec ({"A1", "1A"}, 16), [161; 26])
 
-%!assert <*35621> (base2dec (["0"; "1"], 2), [0; 1])
-%!assert <*35621> (base2dec (["0"; "1"], 2), [0; 1])
+%!assert <35621> (base2dec (["0"; "1"], 2), [0; 1])
 
 ## Test input validation
 %!error base2dec ()
--- a/scripts/strings/strcat.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/strings/strcat.m	Fri Jun 09 17:40:34 2017 -0400
@@ -151,10 +151,8 @@
 %!assert (all (strcmp (strcat ("a", {"bb", "ccc"}), {"abb", "accc"})))
 
 ## test with a single string or cell input
-%!assert <*49094> (strcat ("foo    "), "foo")
-%!assert <*49094> (strcat ("foo    "), "foo")
-%!assert <*49094> (strcat ({"foo"}), {"foo"})
-%!assert <*49094> (strcat ({"foo"}), {"foo"})
+%!assert <49094> (strcat ("foo    "), "foo")
+%!assert <49094> (strcat ({"foo"}), {"foo"})
 
 %!assert (strcat (1), char (1))
 %!assert (strcat (1, 2), strcat (char (1), char (2)))
--- a/scripts/strings/strmatch.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/strings/strmatch.m	Fri Jun 09 17:40:34 2017 -0400
@@ -114,8 +114,7 @@
 %!assert (strmatch ('', { '', '% comment', 'var a = 5', ''}, "exact"), [1,4])
 
 ## Weird Matlab corner cases
-%!test <*49601>
-%!test <*49601>
+%!test <49601>
 %! assert (strmatch (" ", " "), 1);
 %! assert (strmatch (" ", "   "), 1);
 %! assert (strmatch ("  ", " "), []);
--- a/scripts/strings/strsplit.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/strings/strsplit.m	Fri Jun 09 17:40:34 2017 -0400
@@ -297,13 +297,10 @@
 %! assert (strsplit ("aa", "a"), {"", ""});
 %! assert (strsplit ("aaa", "a"), {"", ""});
 
-%!assert <*44641> (strsplit ("xxx<yyy", "<"), {"xxx", "yyy"})
-%!assert <*44641> (strsplit ("xxx<yyy", "<"), {"xxx", "yyy"})
-%!assert <*44641> (strsplit ('xxx\yyy', '\'), {"xxx", "yyy"})
-%!assert <*44641> (strsplit ('xxx\yyy', '\'), {"xxx", "yyy"})
+%!assert <44641> (strsplit ("xxx<yyy", "<"), {"xxx", "yyy"})
+%!assert <44641> (strsplit ('xxx\yyy', '\'), {"xxx", "yyy"})
 
-%!assert <*47403> (strsplit ('xxx+yyy', '+'), {"xxx", "yyy"})
-%!assert <*47403> (strsplit ('xxx+yyy', '+'), {"xxx", "yyy"})
+%!assert <47403> (strsplit ('xxx+yyy', '+'), {"xxx", "yyy"})
 
 ## Test input validation
 %!error strsplit ()
--- a/scripts/time/datestr.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/time/datestr.m	Fri Jun 09 17:40:34 2017 -0400
@@ -332,8 +332,7 @@
 %!test
 %! obs = toupper (datestr (testtime,16));
 %! assert (obs, " 2:33 AM");
-%!test <*48071>
-%!test <*48071>
+%!test <48071>
 %! testtime2 = testtime;
 %! testtime2(4) = 15;
 %! obs = toupper (datestr (testtime2,16));
--- a/scripts/time/datevec.m	Fri Jun 09 15:34:03 2017 -0400
+++ b/scripts/time/datevec.m	Fri Jun 09 17:40:34 2017 -0400
@@ -362,8 +362,7 @@
 %!        [2015,6,1,15,7,12.12])
 
 ## Test structure of return value
-%!test <*42334>
-%!test <*42334>
+%!test <42334>
 %! [~, ~, d] = datevec ([1 2; 3 4]);
 %! assert (d, [1 2; 3 4]);