annotate test/fntests.m @ 12312:b10ea6efdc58 release-3-4-x ss-3-3-91

version is now 3.3.91
author John W. Eaton <jwe@octave.org>
date Mon, 31 Jan 2011 08:36:58 -0500
parents fd0a3ac60b0e
children e4dbfe3019b1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 11227
diff changeset
1 ## Copyright (C) 2005-2011 David Bateman
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
2 ##
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
3 ## This file is part of Octave.
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
4 ##
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
6 ## under the terms of the GNU General Public License as published by
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
8 ## your option) any later version.
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
9 ##
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
13 ## General Public License for more details.
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
14 ##
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
15 ## You should have received a copy of the GNU General Public License
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
17 ## <http://www.gnu.org/licenses/>.
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
18
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
19 clear all;
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
20
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
21 global files_with_no_tests = {};
5845
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
22 global files_with_tests = {};
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
23 global topsrcdir;
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
24 global topbuilddir;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
25
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
26 currdir = canonicalize_file_name (".");
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
27
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
28 if (nargin == 1)
5781
faafc2d98b8d [project @ 2006-05-02 19:40:19 by jwe]
jwe
parents: 5667
diff changeset
29 xdir = argv(){1};
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
30 else
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
31 xdir = ".";
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
32 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
33
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
34 srcdir = canonicalize_file_name (xdir);
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
35 topsrcdir = canonicalize_file_name (fullfile (xdir, ".."));
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
36 topbuilddir = canonicalize_file_name (fullfile (currdir, ".."));
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
37
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
38 if (strcmp (currdir, srcdir))
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
39 testdirs = {srcdir};
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
40 else
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
41 testdirs = {currdir, srcdir};
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
42 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
43
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
44 src_tree = canonicalize_file_name (fullfile (topsrcdir, "src"));
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
45 liboctave_tree = canonicalize_file_name (fullfile (topsrcdir, "liboctave"));
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
46 script_tree = canonicalize_file_name (fullfile (topsrcdir, "scripts"));
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
47 local_script_tree = canonicalize_file_name (fullfile (currdir, "../scripts"));
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
48
6162
b3c425131211 [project @ 2006-11-14 15:33:22 by jwe]
jwe
parents: 5845
diff changeset
49 fundirs = {src_tree, liboctave_tree, script_tree};
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
50
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
51 if (! strcmp (currdir, srcdir))
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
52 fundirs{end+1} = local_script_tree;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
53 endif
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
54
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
55 function print_test_file_name (nm)
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
56 filler = repmat (".", 1, 55-length (nm));
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
57 printf (" %s %s", nm, filler);
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
58 endfunction
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
59
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
60 function print_pass_fail (n, p)
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
61 if (n > 0)
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
62 printf (" PASS %4d/%-4d", p, n);
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
63 nfail = n - p;
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
64 if (nfail > 0)
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
65 printf (" FAIL %d", nfail);
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
66 endif
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
67 endif
7762
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
68 puts ("\n");
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
69 endfunction
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
70
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
71 function retval = has_functions (f)
10220
04f2b4d68eba test/fntests.m (hasfunctions): assume .m files have functions
John W. Eaton <jwe@octave.org>
parents: 10112
diff changeset
72 n = length (f);
04f2b4d68eba test/fntests.m (hasfunctions): assume .m files have functions
John W. Eaton <jwe@octave.org>
parents: 10112
diff changeset
73 if (n > 3 && strcmp (f((end-2):end), ".cc"))
04f2b4d68eba test/fntests.m (hasfunctions): assume .m files have functions
John W. Eaton <jwe@octave.org>
parents: 10112
diff changeset
74 fid = fopen (f);
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
75 if (fid >= 0)
10220
04f2b4d68eba test/fntests.m (hasfunctions): assume .m files have functions
John W. Eaton <jwe@octave.org>
parents: 10112
diff changeset
76 str = fread (fid, "*char")';
04f2b4d68eba test/fntests.m (hasfunctions): assume .m files have functions
John W. Eaton <jwe@octave.org>
parents: 10112
diff changeset
77 fclose (fid);
11032
c9b0a75b02e8 Make all regexp in Octave compatible with both POSIX and PCRE.
Rik <octave@nomad.inbox5.com>
parents: 11024
diff changeset
78 retval = ! isempty (regexp (str,"[\r\n](DEFUN|DEFUN_DLD)\\b", "once"));
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
79 else
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
80 error ("fopen failed: %s", f);
10220
04f2b4d68eba test/fntests.m (hasfunctions): assume .m files have functions
John W. Eaton <jwe@octave.org>
parents: 10112
diff changeset
81 endif
04f2b4d68eba test/fntests.m (hasfunctions): assume .m files have functions
John W. Eaton <jwe@octave.org>
parents: 10112
diff changeset
82 elseif (n > 2 && strcmp (f((end-1):end), ".m"))
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
83 retval = true;
9742
9f8ff01abc65 .cc files are now included in the list of files requiring
Rik <rdrider0-list@yahoo.com>
parents: 9741
diff changeset
84 else
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
85 retval = false;
9742
9f8ff01abc65 .cc files are now included in the list of files requiring
Rik <rdrider0-list@yahoo.com>
parents: 9741
diff changeset
86 endif
9f8ff01abc65 .cc files are now included in the list of files requiring
Rik <rdrider0-list@yahoo.com>
parents: 9741
diff changeset
87 endfunction
9f8ff01abc65 .cc files are now included in the list of files requiring
Rik <rdrider0-list@yahoo.com>
parents: 9741
diff changeset
88
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
89 function retval = has_tests (f)
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
90 fid = fopen (f);
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
91 if (fid >= 0)
8699
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
92 str = fread (fid, "*char")';
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
93 fclose (fid);
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
94 ## Avoid PCRE 'lineanchors' by searching for newline followed by PTN.
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
95 ## Equivalent to regexp ('^PTN','lineanchors')
11032
c9b0a75b02e8 Make all regexp in Octave compatible with both POSIX and PCRE.
Rik <octave@nomad.inbox5.com>
parents: 11024
diff changeset
96 retval = ! isempty (regexp (str, "[\r\n]\\s*%!(test|assert|error|warning)", "once"));
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
97 else
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
98 error ("fopen failed: %s", f);
8699
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
99 endif
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
100 endfunction
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
101
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
102 function [dp, dn, dxf, dsk] = run_test_dir (fid, d);
5845
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
103 global files_with_tests;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
104 global files_with_no_tests;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
105 lst = dir (d);
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
106 dp = dn = dxf = dsk = 0;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
107 for i = 1:length (lst)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
108 nm = lst(i).name;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
109 if (length (nm) > 5 && strcmp (nm(1:5), "test_")
11033
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
110 && strcmp (nm((end-1):end), ".m"))
10026
9b3a100922a6 fntests.m: use regexp instead of findstr and only recognize tests that are the first thing on a line
John W. Eaton <jwe@octave.org>
parents: 9742
diff changeset
111 p = n = xf = sk = 0;
5845
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
112 ffnm = fullfile (d, nm);
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
113 if (has_tests (ffnm))
11033
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
114 print_test_file_name (nm);
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
115 [p, n, xf, sk] = test (nm(1:(end-2)), "quiet", fid);
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
116 print_pass_fail (n, p);
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
117 files_with_tests(end+1) = ffnm;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
118 else
11033
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
119 files_with_no_tests(end+1) = ffnm;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
120 endif
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
121 dp += p;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
122 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
123 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
124 dsk += sk;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
125 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
126 endfor
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
127 endfunction
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
128
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
129 function [dp, dn, dxf, dsk] = run_test_script (fid, d);
5845
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
130 global files_with_tests;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
131 global files_with_no_tests;
5781
faafc2d98b8d [project @ 2006-05-02 19:40:19 by jwe]
jwe
parents: 5667
diff changeset
132 global topsrcdir;
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
133 global topbuilddir;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
134 lst = dir (d);
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
135 dp = dn = dxf = dsk = 0;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
136 for i = 1:length (lst)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
137 nm = lst(i).name;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
138 if (lst(i).isdir && ! strcmp (nm, ".") && ! strcmp (nm, "..")
11227
84846912f3c1 test/fntests.m: run tests for deprecated functions
John W. Eaton <jwe@octave.org>
parents: 11054
diff changeset
139 && ! strcmp (nm, "CVS"))
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
140 [p, n, xf, sk] = run_test_script (fid, [d, "/", nm]);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
141 dp += p;
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
142 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
143 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
144 dsk += sk;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
145 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
146 endfor
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
147 for i = 1:length (lst)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
148 nm = lst(i).name;
10112
fddfebeeb33a Run tests in all *.cc files.
David Grundberg <davidg@cs.umu.se>
parents: 10026
diff changeset
149 ## Ignore hidden files
fddfebeeb33a Run tests in all *.cc files.
David Grundberg <davidg@cs.umu.se>
parents: 10026
diff changeset
150 if (nm(1) == '.')
fddfebeeb33a Run tests in all *.cc files.
David Grundberg <davidg@cs.umu.se>
parents: 10026
diff changeset
151 continue
fddfebeeb33a Run tests in all *.cc files.
David Grundberg <davidg@cs.umu.se>
parents: 10026
diff changeset
152 endif
9742
9f8ff01abc65 .cc files are now included in the list of files requiring
Rik <rdrider0-list@yahoo.com>
parents: 9741
diff changeset
153 f = fullfile (d, nm);
9f8ff01abc65 .cc files are now included in the list of files requiring
Rik <rdrider0-list@yahoo.com>
parents: 9741
diff changeset
154 if ((length (nm) > 2 && strcmp (nm((end-1):end), ".m")) ||
10112
fddfebeeb33a Run tests in all *.cc files.
David Grundberg <davidg@cs.umu.se>
parents: 10026
diff changeset
155 (length (nm) > 3 && strcmp (nm((end-2):end), ".cc")))
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
156 p = n = xf = 0;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
157 ## Only run if it contains %!test, %!assert %!error or %!warning
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
158 if (has_tests (f))
11033
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
159 tmp = strrep (f, [topsrcdir, "/"], "");
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
160 tmp = strrep (tmp, [topbuilddir, "/"], "../");
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
161 print_test_file_name (tmp);
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
162 [p, n, xf, sk] = test (f, "quiet", fid);
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
163 print_pass_fail (n, p);
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
164 dp += p;
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
165 dn += n;
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
166 dxf += xf;
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
167 dsk += sk;
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
168 files_with_tests(end+1) = f;
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
169 elseif (has_functions (f))
11033
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
170 ## To reduce the list length, only mark .cc files that contain
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
171 ## DEFUN definitions.
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
172 files_with_no_tests(end+1) = f;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
173 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
174 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
175 endfor
5667
ec3ffbf9982b [project @ 2006-03-15 02:51:39 by jwe]
jwe
parents: 5590
diff changeset
176 ## printf("%s%s -> passes %d of %d tests\n", ident, d, dp, dn);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
177 endfunction
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
178
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
179 function printf_assert (varargin)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
180 global _assert_printf;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
181 _assert_printf = cat (2, _assert_printf, sprintf (varargin{:}));
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
182 endfunction
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
183
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
184 function ret = prog_output_assert (str)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
185 global _assert_printf;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
186 if (isempty (_assert_printf))
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
187 ret = isempty (str);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
188 elseif (_assert_printf(end) == "\n")
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
189 ret = strcmp (_assert_printf(1:(end-1)), str);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
190 else
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
191 ret = strcmp (_assert_printf, str);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
192 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
193 _assert_printf = "";
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
194 endfunction
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
195
7645
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
196 function n = num_elts_matching_pattern (lst, pat)
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
197 n = 0;
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
198 for i = 1:length (lst)
11024
fa56fd98c0c5 Remove requirement for PCRE in Octave. (Bug #31025)
Rik <octave@nomad.inbox5.com>
parents: 11019
diff changeset
199 if (! isempty (regexp (lst{i}, pat, "once")))
7645
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
200 n++;
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
201 endif
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
202 endfor
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
203 endfunction
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
204
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
205 function report_files_with_no_tests (with, without, typ)
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
206 pat = cstrcat ("\\", typ, "$");
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
207 n_with = num_elts_matching_pattern (with, pat);
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
208 n_without = num_elts_matching_pattern (without, pat);
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
209 n_tot = n_with + n_without;
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
210 printf ("\n%d (of %d) %s files have no tests.\n", n_without, n_tot, typ);
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
211 endfunction
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
212
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
213 pso = page_screen_output ();
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
214 warn_state = warning ("query", "quiet");
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
215 warning ("on", "quiet");
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
216 try
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
217 page_screen_output (0);
11227
84846912f3c1 test/fntests.m: run tests for deprecated functions
John W. Eaton <jwe@octave.org>
parents: 11054
diff changeset
218 warning ("off", "Octave:deprecated-functions");
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
219 fid = fopen ("fntests.log", "wt");
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
220 if (fid < 0)
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
221 error ("could not open fntests.log for writing");
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
222 endif
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
223 test ("", "explain", fid);
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
224 dp = dn = dxf = dsk = 0;
7762
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
225 puts ("\nIntegrated test scripts:\n\n");
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
226 for i = 1:length (fundirs)
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
227 [p, n, xf, sk] = run_test_script (fid, fundirs{i});
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
228 dp += p;
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
229 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
230 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
231 dsk += sk;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
232 endfor
7762
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
233 puts ("\nFixed test scripts:\n\n");
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
234 for i = 1:length (testdirs)
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
235 [p, n, xf, sk] = run_test_dir (fid, testdirs{i});
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
236 dp += p;
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
237 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
238 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
239 dsk += sk;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
240 endfor
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
241 printf ("\nSummary:\n\n PASS %6d\n", dp);
5667
ec3ffbf9982b [project @ 2006-03-15 02:51:39 by jwe]
jwe
parents: 5590
diff changeset
242 nfail = dn - dp;
ec3ffbf9982b [project @ 2006-03-15 02:51:39 by jwe]
jwe
parents: 5590
diff changeset
243 printf (" FAIL %6d\n", nfail);
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
244 if (dxf > 0)
7291
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
245 if (dxf > 1)
7300
11c781ef004a [project @ 2007-12-12 00:29:19 by jwe]
jwe
parents: 7291
diff changeset
246 t1 = "were";
11c781ef004a [project @ 2007-12-12 00:29:19 by jwe]
jwe
parents: 7291
diff changeset
247 t2 = "failures";
7291
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
248 else
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
249 t1 = "was";
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
250 t2 = "failure";
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
251 endif
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
252 printf ("\nThere %s %d expected %s (see fntests.log for details).\n",
11033
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
253 t1, dxf, t2);
11054
3b8817c91e31 fntests.m: Break output text differently for better readability.
Rik <octave@nomad.inbox5.com>
parents: 11033
diff changeset
254 puts ("\nExpected failures are known bugs. Please help improve Octave\n");
3b8817c91e31 fntests.m: Break output text differently for better readability.
Rik <octave@nomad.inbox5.com>
parents: 11033
diff changeset
255 puts ("by contributing fixes for them.\n");
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
256 endif
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
257 if (dsk > 0)
9696
01a1fd9167e0 Fix typo directing users to the wrong log file
Rik <rdrider0-list@yahoo.com>
parents: 8920
diff changeset
258 printf ("\nThere were %d skipped tests (see fntests.log for details).\n", dsk);
11054
3b8817c91e31 fntests.m: Break output text differently for better readability.
Rik <octave@nomad.inbox5.com>
parents: 11033
diff changeset
259 puts ("Skipped tests are features that are disabled in this version of Octave\n");
3b8817c91e31 fntests.m: Break output text differently for better readability.
Rik <octave@nomad.inbox5.com>
parents: 11033
diff changeset
260 puts ("because the needed libraries were not present when Octave was built.\n");
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
261 endif
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
262
7645
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
263 report_files_with_no_tests (files_with_tests, files_with_no_tests, ".m");
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
264 report_files_with_no_tests (files_with_tests, files_with_no_tests, ".cc");
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
265
9710
519e164dde1e Fix typo of an extra space in instructions to user
Rik <rdrider0-list@yahoo.com>
parents: 9696
diff changeset
266 puts ("\nPlease help improve Octave by contributing tests for\n");
10899
686e3bc432a2 fntests.m: Add extra newline for more readable output during make.
Rik <octave@nomad.inbox5.com>
parents: 10220
diff changeset
267 puts ("these files (see the list in the file fntests.log).\n\n");
7645
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
268
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
269 fprintf (fid, "\nFiles with no tests:\n\n%s",
11033
d9c8916bb9dd Untabify a few remaining .m scripts.
Rik <octave@nomad.inbox5.com>
parents: 11032
diff changeset
270 list_in_columns (files_with_no_tests, 80));
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
271 fclose (fid);
7645
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
272
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
273 page_screen_output (pso);
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
274 warning (warn_state.state, "quiet");
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
275 catch
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
276 page_screen_output (pso);
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
277 warning (warn_state.state, "quiet");
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
278 disp (lasterr ());
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
279 end_try_catch