Mercurial > hg > octave-nkf
view test/fntests.m @ 5600:c5737b060f6c
[project @ 2006-01-19 16:39:37 by jwe]
author | jwe |
---|---|
date | Thu, 19 Jan 2006 16:39:37 +0000 |
parents | 1ad66ea35fe5 |
children | ec3ffbf9982b |
line wrap: on
line source
clear all; global topsrcdir; currdir = canonicalize_file_name ("."); if (nargin == 1) xdir = argv{1}; else xdir = "."; endif srcdir = canonicalize_file_name (xdir); topsrcdir = canonicalize_file_name (fullfile (xdir, "..")); if (strcmp (currdir, srcdir)) testdirs = {srcdir}; else testdirs = {currdir, srcdir}; endif src_tree = canonicalize_file_name (fullfile (topsrcdir, "src")); script_tree = canonicalize_file_name (fullfile (topsrcdir, "scripts")); fundirs = {src_tree, script_tree}; function [dp, dn] = runtestdir (fid, d); lst = dir(d); dp = dn = 0; for i = 1:length(lst) nm = lst(i).name; if (length(nm) > 5 && strcmp(nm(1:5),"test_") && strcmp(nm((end-1):end),".m")) [p,n] = test(nm(1:(end-2)),"quiet",fid); printf(" %s -> passes %d of %d\n",nm,p,n); dp +=p; dn += n; endif endfor endfunction function y = hastests (f) fid = fopen(f); str = fscanf(fid,"%s"); if (findstr(str,"%!test") || findstr(str,"%!assert") || findstr(str,"%!error") || findstr(str,"%!warning")) y = 1; else y = 0; endif fclose(fid); endfunction function [dp, dn] = runtestscript (fid, d, ident); global topsrcdir lst = dir(d); dp = dn = 0; for i=1:length(lst) nm = lst(i).name; if (lst(i).isdir && !strcmp(nm,".") && !strcmp(nm,"..") && !strcmp(nm,"CVS")) [p, n] = runtestscript (fid, [d, "/",nm], [ident," "]); dp += p; dn += n; endif endfor for i=1:length(lst) nm = lst(i).name; if ((length(nm) > 3 && strcmp(nm((end-2):end),".cc")) || (length(nm) > 2 && strcmp(nm((end-1):end),".m"))) f = fullfile (d, nm); ## Only run if it contains %!test, %!assert %!error or %!warning if (hastests(f)) [p, n] = test(f,"quiet",fid); dp += p; dn += n; endif endif endfor printf("%s%s -> passes %d of %d tests\n", ident, strrep (d, topsrcdir, "..."), dp, dn); ## printf("%s%s -> passes %d of %d tests\n", ident, d, dp, dn); endfunction function printf_assert(varargin) global _assert_printf; _assert_printf=cat(2,_assert_printf,sprintf(varargin{:})); endfunction function ret = prog_output_assert(str) global _assert_printf; if (isempty(_assert_printf)) ret = isempty(str); elseif (_assert_printf(end) == "\n") ret = strcmp(_assert_printf(1:(end-1)),str); else ret = strcmp(_assert_printf,str); endif _assert_printf = ""; endfunction pso = page_screen_output; warn_state = warning("query","quiet"); warning("on","quiet"); try page_screen_output =0; fid=fopen("fntests.log","wt"); if (fid < 0) error("could not open fntests.log for writing"); endif test("","explain",fid); dp=dn=0; printf("\nIntegrated test scripts\n"); for i=1:length(fundirs) [p,n] = runtestscript(fid,fundirs{i}," "); dp+=p; dn+=n; endfor printf("\nFixed test scripts\n"); for i=1:length(testdirs) [p, n] = runtestdir (fid, testdirs{i}); dp+=p; dn+=n; endfor printf("---> passes %d out of %d tests",dp,dn); if dp==dn printf("\n---> success"); endif; disp(""); printf("see fntests.log for details"); disp(""); fclose(fid); page_screen_output = pso; warning(warn_state.state,"quiet"); catch page_screen_output = pso; warning(warn_state.state,"quiet"); disp(lasterr()); end_try_catch