diff test/fntests.m @ 13192:968e89b45bbf

move tests for classes into subdirectories * classes/test_classes.m: Rename from test_classes.m. * classes/module.mk: New file with contents from @Blork/module.mk, @Dork/module.mk, @Pork/module.mk, @Snork/module.mk, @Cork/module.mk, @Gork/module.mk, @Sneetch/module.mk, and @Spork/module.mk. (classes_FCN_FILES): Include test_classes.m in the list. * @Blork/module.mk, @Dork/module.mk, @Pork/module.mk, @Snork/module.mk, @Cork/module.mk, @Gork/module.mk, @Sneetch/module.mk, @Spork/module.mk: Delete. * ctor-vs-method/test_ctor_vs_method.m: Rename from test_ctor_vs_method.m. * ctor-vs-method/module.mk (ctor_vs_method_FCN_FILES): Include test_ctor_vs_method.m in the list. * test/Makefile.am (FCN_FILES): Remove test_classes.m and test_ctor_vs_method.m from the list. Don't include @Blork/module.mk, @Dork/module.mk, @Pork/module.mk, @Snork/module.mk, @Cork/module.mk, @Gork/module.mk, @Sneetch/module.mk, @Spork/module.mk. Do include classes/module.mk and ctor-vs-method/module.mk. * fntests.m (run_test_dir): Also skip private directories and directories with names that begin with "@". Work recursively. Change to test directory when running tests.
author John W. Eaton <jwe@octave.org>
date Thu, 22 Sep 2011 16:44:54 -0400
parents 48c94e21b57f
children 0a28c49cb477
line wrap: on
line diff
--- a/test/fntests.m
+++ b/test/fntests.m
@@ -115,26 +115,45 @@
   dp = dn = dxf = dsk = 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 = xf = sk = 0;
-      ffnm = fullfile (d, nm);
-      if (has_tests (ffnm))
-        print_test_file_name (nm);
-        [p, n, xf, sk] = test (nm(1:(end-2)), "quiet", fid);
-        print_pass_fail (n, p);
-        files_with_tests(end+1) = ffnm;
-      ##elseif (has_demos (ffnm))
-      ##  files_with_tests(end+1) = ffnm;
-      else
-        files_with_no_tests(end+1) = ffnm;
-      endif
+    if (lst(i).isdir
+        && ! strcmp (nm, ".") && ! strcmp (nm, "..")
+        && ! strcmp (nm, "private") && nm(1) != "@"
+        && ! strcmp (nm, "CVS"))
+      [p, n, xf, sk] = run_test_dir (fid, [d, "/", nm]);
       dp += p;
       dn += n;
       dxf += xf;
       dsk += sk;
     endif
   endfor
+  saved_dir = pwd ();
+  unwind_protect
+    chdir (d);
+    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 = xf = sk = 0;
+        ffnm = fullfile (d, nm);
+        if (has_tests (ffnm))
+          print_test_file_name (nm);
+          [p, n, xf, sk] = test (nm(1:(end-2)), "quiet", fid);
+          print_pass_fail (n, p);
+          files_with_tests(end+1) = ffnm;
+        ##elseif (has_demos (ffnm))
+        ##  files_with_tests(end+1) = ffnm;
+        else
+          files_with_no_tests(end+1) = ffnm;
+        endif
+        dp += p;
+        dn += n;
+        dxf += xf;
+        dsk += sk;
+      endif
+    endfor
+  unwind_protect_cleanup
+    chdir (saved_dir);
+  end_unwind_protect
 endfunction
 
 function [dp, dn, dxf, dsk] = run_test_script (fid, d);