diff --git a/src/modules/Image/mktests.pike b/src/modules/Image/mktests.pike
index 2fbc83f83768e279147ebb8d512b0c315218729a..ddda5dbf8936eeff67ce7a1f61dce169b5e40eac 100644
--- a/src/modules/Image/mktests.pike
+++ b/src/modules/Image/mktests.pike
@@ -5,6 +5,7 @@ array chapters=({});
 array tests=({});
 
 int mode=0;
+int n=0;
 
 void finish_test()
 {
@@ -33,11 +34,25 @@ void finish_test()
 	       "}\n\n");
 	 break;
       case 1:
-	 test=cpp("#define ok(S) return \"ok\"\n"
-		  "#define fail(S) return (S)\n"+
-		  replace(test,"ok()","ok(\"ok\")"));
+	 test=replace(cpp("#define ok(S) return \"ok\"\n"
+			  "#define fail(S) return (S)\n"+
+			  replace(test,({"#","ok()"}),({"½·½","ok(\"ok\")"})),
+			  ),"½·½","#");
 	 write("test_any([["+test+"]], \"ok\")\n");
 	 break;
+      case 2:
+	 test=replace(cpp("#define ok(S) return 1\n"
+			  "#define fail(S) do { werror(\"failure; "+module+"/"+chapter+"/"+name+": \"+(S)+\"\\n\"); return 0; } while (0)\n"+
+			  replace(test,({"#","ok()"}),({"½·½","ok(\"ok\")"})),
+			  ),"½·½","#");
+	 write("test "+(++n)+", expected result: EQ\n"
+	       "mixed a()"
+	       "{\n"+
+	       test+
+	       "}\n"
+	       "mixed b() { return 1; }\n"
+	       "\n....\n");
+	 break;
    }
    name=0;
 }
@@ -112,7 +127,7 @@ int main(int ac,array am)
 {
    int n;
 
-   if (ac>=2 && am[1]=="-t") mode=1,am=am[..0]+am[2..];
+   if (ac>=2 && am[1]=="-t") mode=2,am=am[..0]+am[2..];
 
    if (ac<2) 
    {
diff --git a/src/modules/Image/testsuite.in.in b/src/modules/Image/testsuite.in.in
index c8823bcafe90a930292a75c3995ad31f7965ab20..22c292ba177417dc8bc23564097cc2c7a25eb012 100644
--- a/src/modules/Image/testsuite.in.in
+++ b/src/modules/Image/testsuite.in.in
@@ -1,7 +1,7 @@
 #module Image.image
 {
 //-----------------------------------------------------------------------
-#chapter testuite
+#chapter testsuite
 
 #test Image.PNM.decode, ==
    object img1=Image.PNM.decode("P1\n5 5\n0 1 1 1 1\n1 0 1 1 1\n1 1 0 1 1\n1 1 1 0 1\n1 1 1 1 0");
@@ -91,7 +91,7 @@
    ok();
 
 //-----------------------------------------------------------------------
-#chapter testuite III
+#chapter testsuite III
 
 #test equal, copy_value
    array a=({0,0,0});
diff --git a/src/modules/Makefile.in b/src/modules/Makefile.in
index f62a977bf1c0a8724388cc5c8fcd74c68e99c62d..9f9ba8258cf17bf6f947f70af5327180354a8198 100644
--- a/src/modules/Makefile.in
+++ b/src/modules/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.20 1998/04/26 11:45:58 hubbe Exp $
+# $Id: Makefile.in,v 1.21 1998/04/29 20:55:04 mirar Exp $
 
 @SET_MAKE@
 
@@ -54,8 +54,11 @@ verify:
 verbose_verify:
 	for a in $(MODULES) ; do ( cd $$a ; ${MAKE} $(MAKE_FLAGS) MODNAME=$$a verbose_verify ) || exit $$? ; done
 
+fdtestsuites:
+	for a in $(MODULES) ; do echo $$a ; $(TMP_BINDIR)/mktestsuite $(SRCDIR)/$$a/testsuite.in >$$a/module_testsuite -DSRCDIR=$(SRCDIR)/$$a || exit $$? ; done	
+
 testsuites:
-	for a in $(MODULES) ; do echo $$a ; $(TMP_BINDIR)/mktestsuite $(SRCDIR)/$$a/testsuite.in >$$a/module_testsuite -DSRCDIR=$(SRCDIR)/$$a || exit $$? ; done
+	for a in $(MODULES) ; do (cd $$a; make module_testsuite) ; done	
 
 extra_tests:
 	for a in $(MODULES) ; do ( cd $$a ; ${MAKE} $(MAKE_FLAGS) MODNAME=$$a extra_tests ) || exit $$? ; done