annotate test/fntests.m @ 8710:739141cde75a ss-3-1-52

fix typo in Array-f.cc
author Jaroslav Hajek <highegg@gmail.com>
date Mon, 09 Feb 2009 21:51:31 +0100
parents 6e764b7317bd
children eb63fbe60fab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6731
diff changeset
1 ## Copyright (C) 2005, 2006, 2007 David Bateman
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
8423
869e4213d5d9 fntests.m: use fread instead of fscanf to preserve whitespace
John W. Eaton <jwe@octave.org>
parents: 7762
diff changeset
71 ## FIXME -- should we only try match the keyword at the start of a line?
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
72 function y = hastests (f)
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
73 fid = fopen (f);
8699
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
74 if (fid < 0)
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
75 error ("fopen failed: %s", f);
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
76 else
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
77 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
78 fclose (fid);
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
79 y = (findstr (str, "%!test") || findstr (str, "%!assert")
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
80 || findstr (str, "%!error") || findstr (str, "%!warning"));
6e764b7317bd test/fntests.m, scripts/test/demo.m: error on fopen failures
John W. Eaton <jwe@octave.org>
parents: 8423
diff changeset
81 endif
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
82 endfunction
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
83
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
84 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
85 global files_with_tests;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
86 global files_with_no_tests;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
87 lst = dir (d);
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
88 dp = dn = dxf = dsk = 0;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
89 for i = 1:length (lst)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
90 nm = lst(i).name;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
91 if (length (nm) > 5 && strcmp (nm(1:5), "test_")
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
92 && strcmp (nm((end-1):end), ".m"))
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
93 p = n = 0;
5845
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
94 ffnm = fullfile (d, nm);
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
95 if (hastests (ffnm))
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
96 print_test_file_name (nm);
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
97 [p, n, xf, sk] = test (nm(1:(end-2)), "quiet", fid);
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
98 print_pass_fail (n, p);
5845
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
99 files_with_tests(end+1) = ffnm;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
100 else
5845
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
101 files_with_no_tests(end+1) = ffnm;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
102 endif
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
103 dp += p;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
104 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
105 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
106 dsk += sk;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
107 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
108 endfor
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
109 endfunction
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
110
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
111 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
112 global files_with_tests;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
113 global files_with_no_tests;
5781
faafc2d98b8d [project @ 2006-05-02 19:40:19 by jwe]
jwe
parents: 5667
diff changeset
114 global topsrcdir;
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
115 global topbuilddir;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
116 lst = dir (d);
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
117 dp = dn = dxf = dsk = 0;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
118 for i = 1:length (lst)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
119 nm = lst(i).name;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
120 if (lst(i).isdir && ! strcmp (nm, ".") && ! strcmp (nm, "..")
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
121 && ! strcmp (nm, "CVS"))
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
122 [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
123 dp += p;
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
124 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
125 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
126 dsk += sk;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
127 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
128 endfor
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
129 for i = 1:length (lst)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
130 nm = lst(i).name;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
131 if ((length (nm) > 3 && strcmp (nm((end-2):end), ".cc"))
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
132 || (length (nm) > 2 && strcmp (nm((end-1):end), ".m")))
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
133 f = fullfile (d, nm);
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
134 p = n = xf = 0;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
135 ## Only run if it contains %!test, %!assert %!error or %!warning
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
136 if (hastests (f))
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
137 tmp = strrep (f, [topsrcdir, "/"], "");
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
138 tmp = strrep (tmp, [topbuilddir, "/"], "../");
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents: 6162
diff changeset
139 print_test_file_name (tmp);
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
140 [p, n, xf, sk] = test (f, "quiet", fid);
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
141 print_pass_fail (n, p);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
142 dp += p;
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
143 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
144 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
145 dsk += sk;
5845
8b4a99ae3b5e [project @ 2006-06-07 18:11:24 by jwe]
jwe
parents: 5840
diff changeset
146 files_with_tests(end+1) = f;
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
147 else
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
148 files_with_no_tests(end+1) = f;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
149 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
150 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
151 endfor
5667
ec3ffbf9982b [project @ 2006-03-15 02:51:39 by jwe]
jwe
parents: 5590
diff changeset
152 ## 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
153 endfunction
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
154
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
155 function printf_assert (varargin)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
156 global _assert_printf;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
157 _assert_printf = cat (2, _assert_printf, sprintf (varargin{:}));
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
158 endfunction
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
159
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
160 function ret = prog_output_assert (str)
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
161 global _assert_printf;
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
162 if (isempty (_assert_printf))
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
163 ret = isempty (str);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
164 elseif (_assert_printf(end) == "\n")
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
165 ret = strcmp (_assert_printf(1:(end-1)), str);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
166 else
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
167 ret = strcmp (_assert_printf, str);
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
168 endif
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
169 _assert_printf = "";
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
170 endfunction
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
171
7645
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
172 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
173 n = 0;
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
174 for i = 1:length (lst)
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
175 if (! isempty (regexp (lst{i}, pat)))
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
176 n++;
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
177 endif
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
178 endfor
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
179 endfunction
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
180
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
181 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
182 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
183 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
184 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
185 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
186 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
187 endfunction
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
188
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
189 pso = page_screen_output ();
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
190 warn_state = warning ("query", "quiet");
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
191 warning ("on", "quiet");
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
192 try
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
193 page_screen_output (0);
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
194 fid = fopen ("fntests.log", "wt");
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
195 if (fid < 0)
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
196 error ("could not open fntests.log for writing");
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
197 endif
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
198 test ("", "explain", fid);
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
199 dp = dn = dxf = dsk = 0;
7762
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
200 puts ("\nIntegrated test scripts:\n\n");
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
201 for i = 1:length (fundirs)
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
202 [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
203 dp += p;
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
204 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
205 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
206 dsk += sk;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
207 endfor
7762
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
208 puts ("\nFixed test scripts:\n\n");
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
209 for i = 1:length (testdirs)
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
210 [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
211 dp += p;
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
212 dn += n;
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
213 dxf += xf;
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
214 dsk += sk;
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
215 endfor
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
216 printf ("\nSummary:\n\n PASS %6d\n", dp);
5667
ec3ffbf9982b [project @ 2006-03-15 02:51:39 by jwe]
jwe
parents: 5590
diff changeset
217 nfail = dn - dp;
ec3ffbf9982b [project @ 2006-03-15 02:51:39 by jwe]
jwe
parents: 5590
diff changeset
218 printf (" FAIL %6d\n", nfail);
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
219 if (dxf > 0)
7291
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
220 if (dxf > 1)
7300
11c781ef004a [project @ 2007-12-12 00:29:19 by jwe]
jwe
parents: 7291
diff changeset
221 t1 = "were";
11c781ef004a [project @ 2007-12-12 00:29:19 by jwe]
jwe
parents: 7291
diff changeset
222 t2 = "failures";
7291
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
223 else
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
224 t1 = "was";
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
225 t2 = "failure";
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
226 endif
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
227 printf ("\nThere %s %d expected %s (see fntests.log for details).\n",
de593fd63ecf [project @ 2007-12-11 18:10:19 by jwe]
jwe
parents: 7243
diff changeset
228 t1, dxf, t2);
7762
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
229 puts ("\nExpected failures are known bugs. Please help improve\n");
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
230 puts ("Octave by contributing fixes for them.\n");
6730
230f9c49857e [project @ 2007-06-15 04:22:13 by jwe]
jwe
parents: 6277
diff changeset
231 endif
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
232 if (dsk > 0)
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
233 printf ("\nThere were %d skipped tests (see fntest.log for details).\n", dsk);
7762
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
234 puts ("Skipped tests are features that are disabled in this version\n");
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
235 puts ("of Octave as the needed libraries were not present when Octave\n");
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
236 puts ("was built\n");
7243
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
237 endif
e8d7eed42935 [project @ 2007-12-04 02:10:17 by jwe]
jwe
parents: 7016
diff changeset
238
7645
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
239 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
240 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
241
7762
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
242 puts ("\nPlease help improve Octave by contributing tests for\n");
9c24ca8761f7 fntests.m: minor cleanups
John W. Eaton <jwe@octave.org>
parents: 7645
diff changeset
243 puts ("these files (see the list in the file fntests.log).\n");
7645
734854f21c94 fntests.m: report number .m and .cc files without tests separately
John W. Eaton <jwe@octave.org>
parents: 7300
diff changeset
244
5840
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
245 fprintf (fid, "\nFiles with no tests:\n\n%s",
257643fc806b [project @ 2006-06-01 22:08:00 by jwe]
jwe
parents: 5836
diff changeset
246 list_in_columns (files_with_no_tests, 80));
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
247 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
248
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
249 page_screen_output (pso);
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
250 warning (warn_state.state, "quiet");
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
251 catch
5836
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
252 page_screen_output (pso);
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
253 warning (warn_state.state, "quiet");
ed69a3b5b3d0 [project @ 2006-06-01 16:16:00 by jwe]
jwe
parents: 5781
diff changeset
254 disp (lasterr ());
5590
1ad66ea35fe5 [project @ 2006-01-06 00:24:05 by jwe]
jwe
parents:
diff changeset
255 end_try_catch