diff --git a/tests/REC2/Makefile.am b/tests/REC2/Makefile.am
index 185aacde..06c679bd 100644
--- a/tests/REC2/Makefile.am
+++ b/tests/REC2/Makefile.am
@@ -11,7 +11,9 @@ valgrind:
 	@echo '## Running the regression tests under Valgrind'
 	$(MAKE) CHECKER='valgrind -q' tests
 
+# Just 3 specific files tested, they either work or don't!
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running REC2 tests'
 	@(echo > .memdump)
 	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/vrml.xsl $(srcdir)/data.xml > vrml.res ; \
 	diff $(srcdir)/vrml.xml vrml.res ; \
diff --git a/tests/XSLTMark/Makefile.am b/tests/XSLTMark/Makefile.am
index ed80f7d8..5f68d024 100644
--- a/tests/XSLTMark/Makefile.am
+++ b/tests/XSLTMark/Makefile.am
@@ -47,18 +47,21 @@ EXTRA_DIST = \
   xslbench3.out xslbench3.xsl \
   xslbenchdream.xml
 
+ALL_TESTS=	alphabetize attsets avts axis backwards bottles breadth brutal chart \
+  creation current dbonerow dbtail decoy depth encrypt functions game \
+  html identity inventory metric number oddtemplate patterns prettyprint \
+  priority products queens reverser stringsort summarize total tower trend \
+  union xpath xslbench1 xslbench2 xslbench3
+
+
 $(top_builddir)/xsltproc/xsltproc:
 	@(cd ../../xsltproc ; $(MAKE) xsltproc)
 
 all:
 
-tests test: \
-  alphabetize attsets avts axis backwards bottles breadth brutal chart \
-  creation current dbonerow dbtail decoy depth encrypt functions game \
-  html identity inventory metric number oddtemplate patterns prettyprint \
-  priority products queens reverser stringsort summarize total tower trend \
-  union xpath xslbench1 xslbench2 xslbench3
-	rm -f *.tmp
+test tests:
+	@echo '## Running XSLTMark tests'
+	@for i in $(ALL_TESTS); do $(MAKE) $$i; done
 
 valgrind:
 	@echo '## Running the regression tests under Valgrind'
@@ -78,402 +81,660 @@ db1000.xml: $(srcdir)/dbgen.pl
 db10000.xml: $(srcdir)/dbgen.pl
 	$(PERL) $(srcdir)/dbgen.pl 10000 > db10000.xml
 
-alphabetize: db100.xml
+alphabetize:	db100.xml
 	@(echo > .memdump)
-	@(echo alphabetize)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/alphabetize.xsl db100.xml > alphabetize.tmp; \
-	  if [ ! -f $(srcdir)/alphabetize.out ] ; then cp alphabetize.tmp $(srcdir)/alphabetize.out ; \
-	  else diff $(srcdir)/alphabetize.out alphabetize.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-
-# reference=alphabetize.ref
-
-avts: db100.xml
+avts:			db100.xml
 	@(echo > .memdump)
-	@(echo avts)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/avts.xsl db100.xml > avts.tmp; \
-	  if [ ! -f $(srcdir)/avts.out ] ; then cp avts.tmp $(srcdir)/avts.out ; \
-	  else diff $(srcdir)/avts.out avts.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=avts.ref
-
-creation: db100.xml
+creation:		db100.xml
 	@(echo > .memdump)
-	@(echo creation)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/creation.xsl db100.xml > creation.tmp; \
-	  if [ ! -f $(srcdir)/creation.out ] ; then cp creation.tmp $(srcdir)/creation.out ; \
-	  else diff $(srcdir)/creation.out creation.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=creation.ref
-
-dbonerow: db10000.xml
+dbonerow:		db10000.xml
 	@(echo > .memdump)
-	@(echo dbonerow)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/dbonerow.xsl db10000.xml > dbonerow.tmp; \
-	  if [ ! -f $(srcdir)/dbonerow.out ] ; then cp dbonerow.tmp $(srcdir)/dbonerow.out ; \
-	  else diff $(srcdir)/dbonerow.out dbonerow.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=dbonerow.ref
-
-dbtail: db100.xml
+dbtail:		db100.xml
 	@(echo > .memdump)
-	@(echo dbtail)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/dbtail.xsl db100.xml > dbtail.tmp; \
-	  if [ ! -f $(srcdir)/dbtail.out ] ; then cp dbtail.tmp $(srcdir)/dbtail.out ; \
-	  else diff $(srcdir)/dbtail.out dbtail.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=dbtail.ref
-
-decoy: db100.xml
+decoy:		db100.xml
 	@(echo > .memdump)
-	@(echo decoy)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/decoy.xsl db100.xml > decoy.tmp; \
-	  if [ ! -f $(srcdir)/decoy.out ] ; then cp decoy.tmp $(srcdir)/decoy.out ; \
-	  else diff $(srcdir)/decoy.out decoy.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=patterns.ref
-
-encrypt: db100.xml
+encrypt:		db100.xml
 	@(echo > .memdump)
-	@(echo encrypt)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/encrypt.xsl db100.xml > encrypt.tmp; \
-	  if [ ! -f $(srcdir)/encrypt.out ] ; then cp encrypt.tmp $(srcdir)/encrypt.out ; \
-	  else diff $(srcdir)/encrypt.out encrypt.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=encrypt.ref
-
-functions: db100.xml
+functions:		db100.xml
 	@(echo > .memdump)
-	@(echo functions)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/functions.xsl db100.xml > functions.tmp; \
-	  if [ ! -f $(srcdir)/functions.out ] ; then cp functions.tmp $(srcdir)/functions.out ; \
-	  else diff $(srcdir)/functions.out functions.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=functions.ref
-
-identity: db1000.xml
+identity:		db1000.xml
 	@(echo > .memdump)
-	@(echo identity)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/identity.xsl db1000.xml > identity.tmp; \
-	  if [ ! -f $(srcdir)/identity.out ] ; then cp identity.tmp $(srcdir)/identity.out ; \
-	  else diff $(srcdir)/identity.out identity.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=identity.ref
-
-inventory:
+patterns:		db100.xml
 	@(echo > .memdump)
-	@(echo inventory)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/inventory.xsl $(srcdir)/inventory.xml > inventory.tmp; \
-	  if [ ! -f $(srcdir)/inventory.out ] ; then cp inventory.tmp $(srcdir)/inventory.out ; \
-	  else diff $(srcdir)/inventory.out inventory.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=inventory.ref
-
-patterns: db100.xml
+prettyprint:	db100.xml
 	@(echo > .memdump)
-	@(echo patterns)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/patterns.xsl db100.xml > patterns.tmp; \
-	  if [ ! -f $(srcdir)/patterns.out ] ; then cp patterns.tmp $(srcdir)/patterns.out ; \
-	  else diff $(srcdir)/patterns.out patterns.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=patterns.ref
-
-prettyprint: db100.xml
+stringsort:		db1000.xml
 	@(echo > .memdump)
-	@(echo prettyprint)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/prettyprint.xsl db100.xml > prettyprint.tmp; \
-	  if [ ! -f $(srcdir)/prettyprint.out ] ; then cp prettyprint.tmp $(srcdir)/prettyprint.out ; \
-	  else diff $(srcdir)/prettyprint.out prettyprint.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
+else
 
-# reference=prettyprint.ref
-
-stringsort: db1000.xml
-	@(echo > .memdump)
-	@(echo stringsort)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/stringsort.xsl db1000.xml > stringsort.tmp; \
-	  if [ ! -f $(srcdir)/stringsort.out ] ; then cp stringsort.tmp $(srcdir)/stringsort.out ; \
-	  else diff $(srcdir)/stringsort.out stringsort.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
-
-# reference=stringsort.ref
+alphabetize:
+avts:
+creation:
+dbonerow:
+dbtail:
+decoy:
+encrypt:
+functions:
+identity:
+patterns:
+prettyprint:
+stringsort:
 
 endif
 
-attsets:
+attsets:		chart.xml
 	@(echo > .memdump)
-	@(echo attsets)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/attsets.xsl $(srcdir)/chart.xml > attsets.tmp; \
-	  if [ ! -f $(srcdir)/attsets.out ] ; then cp attsets.tmp $(srcdir)/attsets.out ; \
-	  else diff $(srcdir)/attsets.out attsets.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=attsets.ref
-
-axis:
+axis:			axis.xml
 	@(echo > .memdump)
-	@(echo axis)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/axis.xsl $(srcdir)/axis.xml > axis.tmp; \
-	  if [ ! -f $(srcdir)/axis.out ] ; then cp axis.tmp $(srcdir)/axis.out ; \
-	  else diff $(srcdir)/axis.out axis.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=axis.ref
-
-backwards:
+backwards:		game.xml
 	@(echo > .memdump)
-	@(echo backwards)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/backwards.xsl $(srcdir)/game.xml > backwards.tmp; \
-	  if [ ! -f $(srcdir)/backwards.out ] ; then cp backwards.tmp $(srcdir)/backwards.out ; \
-	  else diff $(srcdir)/backwards.out backwards.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=backwards.ref
-
-bottles:
+bottles:		bottles.xml
 	@(echo > .memdump)
-	@(echo bottles)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/bottles.xsl $(srcdir)/bottles.xml > bottles.tmp; \
-	  if [ ! -f $(srcdir)/bottles.out ] ; then cp bottles.tmp $(srcdir)/bottles.out ; \
-	  else diff $(srcdir)/bottles.out bottles.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=bottles.ref
-
-breadth:
+brutal:		brutal.xml
 	@(echo > .memdump)
-	@(echo breadth)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/find.xsl $(srcdir)/breadth.xml > breadth.tmp; \
-	  if [ ! -f $(srcdir)/breadth.out ] ; then cp breadth.tmp $(srcdir)/breadth.out ; \
-	  else diff $(srcdir)/breadth.out breadth.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=breadth.ref
-
-brutal:
+chart:		chart.xml
 	@(echo > .memdump)
-	@(echo brutal)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/brutal.xsl $(srcdir)/brutal.xml > brutal.tmp; \
-	  if [ ! -f $(srcdir)/brutal.out ] ; then cp brutal.tmp $(srcdir)/brutal.out ; \
-	  else diff $(srcdir)/brutal.out brutal.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=brutal.ref
-
-chart:
+current:		current.xml
 	@(echo > .memdump)
-	@(echo chart)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/chart.xsl $(srcdir)/chart.xml > chart.tmp; \
-	  if [ ! -f $(srcdir)/chart.out ] ; then cp chart.tmp $(srcdir)/chart.out ; \
-	  else diff $(srcdir)/chart.out chart.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=chart.ref
-
-current:
+game:			game.xml
 	@(echo > .memdump)
-	@(echo current)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/current.xsl $(srcdir)/current.xml > current.tmp; \
-	  if [ ! -f $(srcdir)/current.out ] ; then cp current.tmp $(srcdir)/current.out ; \
-	  else diff $(srcdir)/current.out current.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=current.ref
-
-depth:
+html:			html.xml
 	@(echo > .memdump)
-	@(echo depth)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/find.xsl $(srcdir)/depth.xml > depth.tmp; \
-	  if [ ! -f $(srcdir)/depth.out ] ; then cp depth.tmp $(srcdir)/depth.out ; \
-	  else diff $(srcdir)/depth.out depth.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=depth.ref
-
-game:
+inventory:		inventory.xml
 	@(echo > .memdump)
-	@(echo game)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/game.xsl $(srcdir)/game.xml > game.tmp; \
-	  if [ ! -f $(srcdir)/game.out ] ; then cp game.tmp $(srcdir)/game.out ; \
-	  else diff $(srcdir)/game.out game.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=game.ref
-
-html:
+metric:		metric.xml
 	@(echo > .memdump)
-	@(echo html)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/html.xsl $(srcdir)/html.xml > html.tmp; \
-	  if [ ! -f $(srcdir)/html.out ] ; then cp html.tmp $(srcdir)/html.out ; \
-	  else diff $(srcdir)/html.out html.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=html.ref
-
-metric:
+number:		number.xml
 	@(echo > .memdump)
-	@(echo metric)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/metric.xsl $(srcdir)/metric.xml > metric.tmp; \
-	  if [ ! -f $(srcdir)/metric.out ] ; then cp metric.tmp $(srcdir)/metric.out ; \
-	  else diff $(srcdir)/metric.out metric.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=metric.ref
-
-number:
+oddtemplate:	oddtemplate.xml
 	@(echo > .memdump)
-	@(echo number)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/number.xsl $(srcdir)/number.xml > number.tmp; \
-	  if [ ! -f $(srcdir)/number.out ] ; then cp number.tmp $(srcdir)/number.out ; \
-	  else diff $(srcdir)/number.out number.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
-iterations=100
-skipdriver=ExternalDriver:txdriver
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-oddtemplate:
+priority:		priority.xml
 	@(echo > .memdump)
-	@(echo oddtemplate)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/oddtemplate.xsl $(srcdir)/oddtemplate.xml > oddtemplate.tmp; \
-	  if [ ! -f $(srcdir)/oddtemplate.out ] ; then cp oddtemplate.tmp $(srcdir)/oddtemplate.out ; \
-	  else diff $(srcdir)/oddtemplate.out oddtemplate.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=oddtemplate.ref
-
-priority:
+products:		products.xml
 	@(echo > .memdump)
-	@(echo priority)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/priority.xsl $(srcdir)/priority.xml > priority.tmp; \
-	  if [ ! -f $(srcdir)/priority.out ] ; then cp priority.tmp $(srcdir)/priority.out ; \
-	  else diff $(srcdir)/priority.out priority.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=priority.ref
-
-products:
+queens:		queens.xml
 	@(echo > .memdump)
-	@(echo products)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/products.xsl $(srcdir)/products.xml > products.tmp; \
-	  if [ ! -f $(srcdir)/products.out ] ; then cp products.tmp $(srcdir)/products.out ; \
-	  else diff $(srcdir)/products.out products.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=products.ref
-
-queens:
+reverser:		gettysburg.xml
 	@(echo > .memdump)
-	@(echo queens)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/queens.xsl $(srcdir)/queens.xml > queens.tmp; \
-	  if [ ! -f $(srcdir)/queens.out ] ; then cp queens.tmp $(srcdir)/queens.out ; \
-	  else diff $(srcdir)/queens.out queens.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=queens.ref
-
-reverser:
+summarize:		queens.xsl
 	@(echo > .memdump)
-	@(echo reverser)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/reverser.xsl $(srcdir)/gettysburg.xml > reverser.tmp; \
-	  if [ ! -f $(srcdir)/reverser.out ] ; then cp reverser.tmp $(srcdir)/reverser.out ; \
-	  else diff $(srcdir)/reverser.out reverser.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=reverser.ref
-
-summarize:
+total:		chart.xml
 	@(echo > .memdump)
-	@(echo summarize)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/summarize.xsl $(srcdir)/queens.xsl > summarize.tmp; \
-	  if [ ! -f $(srcdir)/summarize.out ] ; then cp summarize.tmp $(srcdir)/summarize.out ; \
-	  else diff $(srcdir)/summarize.out summarize.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=summarize.ref
-
-total:
+tower:		tower.xml
 	@(echo > .memdump)
-	@(echo total)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/total.xsl $(srcdir)/chart.xml > total.tmp; \
-	  if [ ! -f $(srcdir)/total.out ] ; then cp total.tmp $(srcdir)/total.out ; \
-	  else diff $(srcdir)/total.out total.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=total.ref
-
-tower:
+trend:		trend.xml
 	@(echo > .memdump)
-	@(echo tower)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/tower.xsl $(srcdir)/tower.xml > tower.tmp; \
-	  if [ ! -f $(srcdir)/tower.out ] ; then cp tower.tmp $(srcdir)/tower.out ; \
-	  else diff $(srcdir)/tower.out tower.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=tower.ref
-
-trend:
+union:		union.xml
 	@(echo > .memdump)
-	@(echo trend)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/trend.xsl $(srcdir)/trend.xml > trend.tmp; \
-	  if [ ! -f $(srcdir)/trend.out ] ; then cp trend.tmp $(srcdir)/trend.out ; \
-	  else diff $(srcdir)/trend.out trend.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=trend.ref
-
-union:
+xpath:		xpath.xml
 	@(echo > .memdump)
-	@(echo union)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/union.xsl $(srcdir)/union.xml > union.tmp; \
-	  if [ ! -f $(srcdir)/union.out ] ; then cp union.tmp $(srcdir)/union.out ; \
-	  else diff $(srcdir)/union.out union.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=union.ref
-
-xpath:
+xslbench1:		xslbench1.xml
 	@(echo > .memdump)
-	@(echo xpath)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/xpath.xsl $(srcdir)/xpath.xml > xpath.tmp; \
-	  if [ ! -f $(srcdir)/xpath.out ] ; then cp xpath.tmp $(srcdir)/xpath.out ; \
-	  else diff $(srcdir)/xpath.out xpath.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-# reference=xpath.ref
-
-xslbench1:
+xslbench2:		xslbenchdream.xml
 	@(echo > .memdump)
-	@(echo xslbench1)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/xslbench1.xsl $(srcdir)/xslbench1.xml > xslbench1.tmp; \
-	  if [ ! -f $(srcdir)/xslbench1.out ] ; then cp xslbench1.tmp $(srcdir)/xslbench1.out ; \
-	  else diff $(srcdir)/xslbench1.out xslbench1.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-xslbench2:
+xslbench3:		xslbenchdream.xml
 	@(echo > .memdump)
-	@(echo xslbench2)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/xslbench2.xsl $(srcdir)/xslbenchdream.xml > xslbench2.tmp; \
-	  if [ ! -f $(srcdir)/xslbench2.out ] ; then cp xslbench2.tmp $(srcdir)/xslbench2.out ; \
-	  else diff $(srcdir)/xslbench2.out xslbench2.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$@.xsl $< > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
-xslbench3:
+breadth:		
 	@(echo > .memdump)
-	@(echo xslbench3)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/xslbench3.xsl $(srcdir)/xslbenchdream.xml > xslbench3.tmp; \
-	  if [ ! -f $(srcdir)/xslbench3.out ] ; then cp xslbench3.tmp $(srcdir)/xslbench3.out ; \
-	  else diff $(srcdir)/xslbench3.out xslbench3.tmp ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true )
-
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/find.xsl $@.xml > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
+
+depth:		
+	@(echo > .memdump)
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/find.xsl $@.xml > $@.tmp; \
+	  if [ ! -f $(srcdir)/$@.out ] ; then \
+		cp $@.tmp $(srcdir)/$@.out ; \
+	  else \
+		diff $(srcdir)/$@.out $@.tmp ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo $@ result ; \
+		echo $$log ; \
+	fi
+	@rm -f $@.tmp
 
 
diff --git a/tests/docbook/Makefile.am b/tests/docbook/Makefile.am
index 12e8c0e8..9c9425c5 100644
--- a/tests/docbook/Makefile.am
+++ b/tests/docbook/Makefile.am
@@ -2,7 +2,10 @@
 
 all:
 
-tests: single xtchunk # Avoid doing the test in normal pass
+tests:
+	@echo -n '## Running docbook tests: '
+	$(MAKE) single
+	$(MAKE) xtchunk
 
 valgrind:
 	@echo '## Running the regression tests under Valgrind'
@@ -21,64 +24,104 @@ full: tests htmltests xhtmltests fotests
 single:
 	@(echo > .memdump)
 	@(for i in $(srcdir)/test/gdp-handbook.xml ; do \
-	  echo -n "$$i : html " ; \
+	  echo -n "$(basename $$i) : html " ; \
 	  out=$(srcdir)/result/html/`basename $$i .xml`.tst; \
 	  html=$(srcdir)/result/html/`basename $$i .xml`.html; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet $(srcdir)/html/docbook.xsl $$i > $$out ; \
-	  if [ -f $$html ] ; then \
-	      grep -v id < $$html > $$html.noid ; \
-	      grep -v id < $$out > $$out.noid ; \
-	      diff $$html.noid $$out.noid ; \
-	      rm -f $$html.noid $$out.noid ; \
-	  else mv $$out $$html ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet \
+		$(srcdir)/html/docbook.xsl $$i > $$out ; \
+	    if [ -f $$html ] ; then \
+	  	grep -v id < $$html > $$html.noid ; \
+		grep -v id < $$out > $$out.noid ; \
+		diff $$html.noid $$out.noid ; \
+		rm -f $$html.noid $$out.noid ; \
+	    else \
+		mv $$out $$html ; \
+	    fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
+	  if [ -n "$$log" ] ; then \
+		echo ; \
+	  	echo result ; \
+		echo $$log ; \
+	  fi ; \
 	  rm -f $$out ; \
 	  echo -n "fo " ; \
 	  out=$(srcdir)/result/fo/`basename $$i .xml`.tst; \
 	  fo=$(srcdir)/result/fo/`basename $$i .xml`.fo; \
 	  msg=$(srcdir)/result/fo/`basename $$i .xml`.msg; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet $(srcdir)/fo/docbook.xsl $$i > $$out 2> $$msg ; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet \
+		$(srcdir)/fo/docbook.xsl $$i > $$out 2> $$msg ; \
 	  if [ -f $$fo ] ; then \
 	      grep -v id < $$fo > $$fo.noid ; \
 	      grep -v id < $$out > $$out.noid ; \
 	      diff $$fo.noid $$out.noid ; \
 	      rm -f $$fo.noid $$out.noid ; \
-	  else mv $$out $$fo ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true; \
+	  else \
+		mv $$out $$fo ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
+	  if [ -n "$$log" ] ; then \
+		echo ; \
+	  	echo result ; \
+		echo $$log ; \
+	  fi ; \
 	  rm -f $$out $$msg ; \
 	  echo -n "xhtml " ; \
 	  out=$(srcdir)/result/xhtml/`basename $$i .xml`.tst; \
 	  xhtml=$(srcdir)/result/xhtml/`basename $$i .xml`.xhtml; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet $(srcdir)/xhtml/docbook.xsl $$i > $$out ; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nonet \
+		$(srcdir)/xhtml/docbook.xsl $$i > $$out ; \
 	  if [ -f $$xhtml ] ; then \
 	      grep -v id < $$xhtml > $$xhtml.noid ; \
 	      grep -v id < $$out > $$out.noid ; \
 	      diff $$xhtml.noid $$out.noid ; \
 	      rm -f $$xhtml.noid $$out.noid ; \
-	  else mv $$out $$xhtml ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true; \
+	  else \
+		mv $$out $$xhtml ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
+	  if [ -n "$$log" ] ; then \
+		echo ; \
+	  	echo result ; \
+		echo $$log ; \
+	  fi ; \
 	  rm -f $$out ; \
-	  echo ; \
 	  done )
 
 xtchunk:
 	@(echo > .memdump)
+	@echo -n html-chunking
 	@(for i in $(srcdir)/test/gdp-handbook.xml ; do \
-	  echo "Testing HTML chunking on $$i :" ; \
-	  html=$(srcdir)/result/html/`basename $$i .xml`.html; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc -o $(srcdir)/result/xtchunk/html/gdp-handbook $(srcdir)/html/xtchunk.xsl $$i ; \
-	  for html in $(srcdir)/result/xtchunk/html/*.html ; do \
-	      orig=$(srcdir)/result/xtchunk/html/`basename $$html .html`.orig ;\
+	  base=`basename $$i .xml` ; \
+	  html=$(srcdir)/result/html/$$base.html; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		-o $(srcdir)/result/xtchunk/html/gdp-handbook \
+		$(srcdir)/html/xtchunk.xsl $$i 2> $$base.err ; \
+	    if [ -f $(srcdir)/result/html/base.err ] ; then \
+		diff $(srcdir)/result/html/base.err $$base.err ; \
+		rm $$base.err ; \
+	    else \
+		mv $$base.err $(srcdir)/result/html/$$base.err ; \
+	    fi ; \
+	    for html in $(srcdir)/result/xtchunk/html/*.html ; do \
+	      orig=$(srcdir)/result/xtchunk/html/\`basename $$html .html\`.orig ;\
 	      if [ -f $$orig ] ; then \
 		  grep -v id < $$html > $$html.noid ; \
 		  grep -v id < $$orig > $$orig.noid ; \
 		  diff $$orig.noid $$html.noid ; \
 		  rm -f $$html.noid $$orig.noid $$html; \
-	      else mv $$html $$orig ; fi ; \
-	  done ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true; \
+	      else \
+		  mv $$html $$orig ; \
+		fi ; \
+	    done ; \
+	    grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
+	  if [ -n "$$log" ] ; then \
+		echo ; \
+	  	echo result ; \
+		echo $$log ; \
+	  fi ; \
 	  rm -f $(srcdir)/result/xtchunk/html/gdp-handbook ; \
 	  done )
+	@echo
 
 #
 # The full set of tests
diff --git a/tests/docbook/result/html/gdp-handbook.err b/tests/docbook/result/html/gdp-handbook.err
new file mode 100644
index 00000000..755fbe8b
--- /dev/null
+++ b/tests/docbook/result/html/gdp-handbook.err
@@ -0,0 +1,18 @@
+Writing indexs02.html for sect1
+Writing indexs03.html for sect1
+Writing indexs04.html for sect1
+Writing indexs05.html for sect1
+Writing indexs06.html for sect1
+Writing indexs07.html for sect1
+Writing indexs08.html for sect1
+Writing indexs09.html for sect1
+Writing indexs10.html for sect1
+Writing indexs11.html for sect1
+Writing indexs12.html for sect1
+Writing indexs13.html for sect1
+Writing indexs14.html for sect1
+Writing indexs15.html for sect1
+Writing apas02.html for sect1
+Writing apas03.html for sect1
+Writing apa.html for appendix
+Writing index.html for article
diff --git a/tests/docs/Makefile.am b/tests/docs/Makefile.am
index 04f555ff..6572ce1e 100644
--- a/tests/docs/Makefile.am
+++ b/tests/docs/Makefile.am
@@ -144,6 +144,7 @@ EXTRA_DIST =	\
 	bug-142.xml \
 	bug-143.xml \
 	bug-144.xml \
+	bug-145.xml \
 	character.xml \
 	array.xml \
 	items.xml
diff --git a/tests/docs/bug-145.xml b/tests/docs/bug-145.xml
new file mode 100644
index 00000000..14061a1d
--- /dev/null
+++ b/tests/docs/bug-145.xml
@@ -0,0 +1,10 @@
+
+
+
+   
+        
+   
+
+
+
diff --git a/tests/exslt/common/Makefile.am b/tests/exslt/common/Makefile.am
index 759f27ab..be7850cb 100644
--- a/tests/exslt/common/Makefile.am
+++ b/tests/exslt/common/Makefile.am
@@ -19,15 +19,34 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running exslt common tests'
 	@(echo > .memdump)
 	@(for i in $(srcdir)/*.xsl ; do \
 	  name=`basename $$i .xsl` ; \
 	  if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
-	  echo $$name.xml ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\
-	  if [ ! -f $(srcdir)/$$name.out ] ; then cp $$name.res $(srcdir)/$$name.out ; \
-	  else if  [ ! -s $$name.res ] ; then echo "Fatal error, no $$name.res\n" ; \
-	  else diff $(srcdir)/$$name.out $$name.res ; fi ; fi; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f $$name.res ; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
+	  if [ ! -f $(srcdir)/$$name.out ] ; then \
+		cp $$name.res $(srcdir)/$$name.out ; \
+		if [ -s $$name.bad ] ; then \
+			mv $$name.bad $(srcdir)/$$name.err ; \
+		fi ; \
+	  else \
+		if  [ ! -s $$name.res ] ; then \
+			echo "Fatal error, no $$name.res\n" ; \
+	  	else \
+			diff $(srcdir)/$$name.out $$name.res ; \
+			if [ -s $(srcdir)/$$name.err ] ; then \
+	  			diff $(srcdir)/$$name.err $$name.bad; \
+			else \
+				diff /dev/null $$name.bad; \
+			fi ; \
+		fi ; \
+	  fi; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f $$name.res $$name.bad; \
 	  done)
diff --git a/tests/exslt/date/Makefile.am b/tests/exslt/date/Makefile.am
index 2740680d..e208064a 100644
--- a/tests/exslt/date/Makefile.am
+++ b/tests/exslt/date/Makefile.am
@@ -48,18 +48,38 @@ test-current:
 	  done)
 	@rm -f current.xml
 
-test tests: $(top_builddir)/xsltproc/xsltproc test-current
+test-logall:
+	@echo '## Running exslt date tests'
+
+test tests: $(top_builddir)/xsltproc/xsltproc test-logall test-current
+	@echo '## Running exslt common tests'
 	@(echo > .memdump)
 	@(for i in $(srcdir)/*.xsl ; do \
 	  name=`basename $$i .xsl` ; \
 	  if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
-	  echo $$name.xml ; \
-	  $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\
-	  if [ ! -f $(srcdir)/$$name.out ] ; then cp $$name.res $(srcdir)/$$name.out ; \
-	  else if  [ ! -s $$name.res ] ; then echo "Fatal error, no $$name.res\n" ; \
-	  else diff $(srcdir)/$$name.out $$name.res ; fi ; fi; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f $$name.res ; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
+	  if [ ! -f $(srcdir)/$$name.out ] ; then \
+		cp $$name.res $(srcdir)/$$name.out ; \
+		if [ -s $$name.bad ] ; then \
+			mv $$name.bad $(srcdir)/$$name.err ; \
+		fi ; \
+	  else \
+		if  [ ! -s $$name.res ] ; then \
+			echo "Fatal error, no $$name.res\n" ; \
+	  	else \
+			diff $(srcdir)/$$name.out $$name.res ; \
+			if [ -s $(srcdir)/$$name.err ] ; then \
+	  			diff $(srcdir)/$$name.err $$name.bad; \
+			else \
+				diff /dev/null $$name.bad; \
+			fi ; \
+		fi ; \
+	  fi; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f $$name.res $$name.bad; \
 	  done)
-
-
diff --git a/tests/exslt/functions/Makefile.am b/tests/exslt/functions/Makefile.am
index d2c27c00..d5dc12fc 100644
--- a/tests/exslt/functions/Makefile.am
+++ b/tests/exslt/functions/Makefile.am
@@ -20,15 +20,34 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running exslt function tests'
 	@(echo > .memdump)
 	@(for i in $(srcdir)/*.xsl ; do \
 	  name=`basename $$i .xsl` ; \
 	  if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
-	  echo $$name.xml ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\
-	  if [ ! -f $(srcdir)/$$name.out ] ; then cp $$name.res $(srcdir)/$$name.out ; \
-	  else if  [ ! -s $$name.res ] ; then echo "Fatal error, no $$name.res\n" ; \
-	  else diff $(srcdir)/$$name.out $$name.res ; fi ; fi; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f $$name.res ; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
+	  if [ ! -f $(srcdir)/$$name.out ] ; then \
+		cp $$name.res $(srcdir)/$$name.out ; \
+		if [ -s $$name.bad ] ; then \
+			mv $$name.bad $(srcdir)/$$name.err ; \
+		fi ; \
+	  else \
+		if  [ ! -s $$name.res ] ; then \
+			echo "Fatal error, no $$name.res\n" ; \
+	  	else \
+			diff $(srcdir)/$$name.out $$name.res ; \
+			if [ -s $(srcdir)/$$name.err ] ; then \
+	  			diff $(srcdir)/$$name.err $$name.bad; \
+			else \
+				diff /dev/null $$name.bad; \
+			fi ; \
+		fi ; \
+	  fi; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f $$name.res $$name.bad ; \
 	  done)
diff --git a/tests/exslt/math/Makefile.am b/tests/exslt/math/Makefile.am
index f3bae1f3..117901c2 100644
--- a/tests/exslt/math/Makefile.am
+++ b/tests/exslt/math/Makefile.am
@@ -24,15 +24,34 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running exslt math tests'
 	@(echo > .memdump)
 	@(for i in $(srcdir)/*.xsl ; do \
 	  name=`basename $$i .xsl` ; \
 	  if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
-	  echo $$name.xml ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\
-	  if [ ! -f $(srcdir)/$$name.out ] ; then cp $$name.res $(srcdir)/$$name.out ; \
-	  else if  [ ! -s $$name.res ] ; then echo "Fatal error, no $$name.res\n" ; \
-	  else diff $(srcdir)/$$name.out $$name.res ; fi ; fi; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f $$name.res ; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
+	  if [ ! -f $(srcdir)/$$name.out ] ; then \
+		cp $$name.res $(srcdir)/$$name.out ; \
+		if [ -s $$name.bad ] ; then \
+			mv $$name.bad $(srcdir)/$$name.err ; \
+		fi ; \
+	  else \
+		if  [ ! -s $$name.res ] ; then \
+			echo "Fatal error, no $$name.res\n" ; \
+	  	else \
+			diff $(srcdir)/$$name.out $$name.res ; \
+			if [ -s $(srcdir)/$$name.err ] ; then \
+	  			diff $(srcdir)/$$name.err $$name.bad; \
+			else \
+				diff /dev/null $$name.bad; \
+			fi ; \
+		fi ; \
+	  fi; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f $$name.res $$name.bad ; \
 	  done)
diff --git a/tests/exslt/sets/Makefile.am b/tests/exslt/sets/Makefile.am
index 6c1a7a38..3eaac3cb 100644
--- a/tests/exslt/sets/Makefile.am
+++ b/tests/exslt/sets/Makefile.am
@@ -17,15 +17,34 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running exslt sets tests'
 	@(echo > .memdump)
 	@(for i in $(srcdir)/*.xsl ; do \
 	  name=`basename $$i .xsl` ; \
 	  if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
-	  echo $$name.xml ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\
-	  if [ ! -f $(srcdir)/$$name.out ] ; then cp $$name.res $(srcdir)/$$name.out ; \
-	  else if  [ ! -s $$name.res ] ; then echo "Fatal error, no $$name.res\n" ; \
-	  else diff $(srcdir)/$$name.out $$name.res ; fi ; fi; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f $$name.res ; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
+	  if [ ! -f $(srcdir)/$$name.out ] ; then \
+		cp $$name.res $(srcdir)/$$name.out ; \
+		if [ -s $$name.bad ] ; then \
+			mv $$name.bad $(srcdir)/$$name.err ; \
+		fi ; \
+	  else \
+		if  [ ! -s $$name.res ] ; then \
+			echo "Fatal error, no $$name.res\n" ; \
+	  	else \
+			diff $(srcdir)/$$name.out $$name.res ; \
+			if [ -s $(srcdir)/$$name.err ] ; then \
+	  			diff $(srcdir)/$$name.err $$name.bad; \
+			else \
+				diff /dev/null $$name.bad; \
+			fi ; \
+		fi ; \
+	  fi; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f $$name.res $$name.bad ; \
 	  done)
diff --git a/tests/exslt/strings/Makefile.am b/tests/exslt/strings/Makefile.am
index 76125223..69268027 100644
--- a/tests/exslt/strings/Makefile.am
+++ b/tests/exslt/strings/Makefile.am
@@ -16,15 +16,34 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running exslt string tests'
 	@(echo > .memdump)
 	@(for i in $(srcdir)/*.xsl ; do \
 	  name=`basename $$i .xsl` ; \
 	  if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
-	  echo $$name.xml ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res;\
-	  if [ ! -f $(srcdir)/$$name.out ] ; then cp $$name.res $(srcdir)/$$name.out ; \
-	  else if  [ ! -s $$name.res ] ; then echo "Fatal error, no $$name.res\n" ; \
-	  else diff $(srcdir)/$$name.out $$name.res ; fi ; fi; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f $$name.res ; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+		$(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
+	  if [ ! -f $(srcdir)/$$name.out ] ; then \
+		cp $$name.res $(srcdir)/$$name.out ; \
+		if [ -s $$name.bad ] ; then \
+			mv $$name.bad $(srcdir)/$$name.err ; \
+		fi ; \
+	  else \
+		if  [ ! -s $$name.res ] ; then \
+			echo "Fatal error, no $$name.res\n" ; \
+	  	else \
+			diff $(srcdir)/$$name.out $$name.res ; \
+			if [ -s $(srcdir)/$$name.err ] ; then \
+	  			diff $(srcdir)/$$name.err $$name.bad; \
+			else \
+				diff /dev/null $$name.bad; \
+			fi ; \
+		fi ; \
+	  fi; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f $$name.res $$name.bad ; \
 	  done)
diff --git a/tests/extensions/Makefile.am b/tests/extensions/Makefile.am
index ec8fa94f..c2b9f542 100644
--- a/tests/extensions/Makefile.am
+++ b/tests/extensions/Makefile.am
@@ -15,8 +15,9 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running extensions tests'
 	@(echo > .memdump)
-	@(for i in $(srcdir)/*.xml ; do \
+	-@(for i in $(srcdir)/../docs/*.xml ; do \
 	  if [ -d $$i ] ; then continue ; fi ; \
 	  doc=`basename $$i .xml` ; \
 	  for j in $(srcdir)/$$doc*.xsl ; do \
@@ -24,11 +25,27 @@ test tests: $(top_builddir)/xsltproc/xsltproc
 	  if [ -d $$j ] ; then continue ; fi ; \
 	  name=`basename $$j .xsl`; \
 	  out=$(srcdir)/"$$name".out; \
-	  echo Running $$j on $$i ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc $$j $$i > result.$$name;\
-	  if [ ! -f $$out ] ; then cp result.$$name $$out ; \
-	  else diff $$out result.$$name; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f result.$$name ; \
+	  err=$(srcdir)/"$$name".err; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc $$j $$i \
+	  	> result.$$name 2>err.$$name; \
+	  if [ ! -f $$out ] ; then \
+	  	cp result.$$name $$out ; \
+		if [ -s err.$$name ] ; then \
+			cp err.$$name $$err ; \
+		fi ; \
+	  else \
+	  	diff $$out result.$$name; \
+		if [ -s $$err ] ; then \
+	  		diff $$err err.$$name; \
+		else \
+			diff /dev/null err.$$name; \
+		fi ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f result.$$name err.$$name; \
 	  done ; done)
 
diff --git a/tests/general/Makefile.am b/tests/general/Makefile.am
index 156caa4f..2d08bee9 100644
--- a/tests/general/Makefile.am
+++ b/tests/general/Makefile.am
@@ -63,7 +63,7 @@ EXTRA_DIST = \
     bug-56.out bug-56.xsl \
     bug-57.out bug-57.xsl \
     bug-59.out bug-59.xsl \
-    bug-60.out bug-60.xsl \
+    bug-60.out bug-60.xsl bug-60.err \
     bug-61.out bug-61.xsl \
     bug-62-inc.out bug-62-inc.xsl \
     bug-62.out bug-62.xsl \
@@ -150,6 +150,7 @@ EXTRA_DIST = \
     bug-142.out bug-142.xsl \
     bug-143.out bug-143.xsl \
     bug-144.out bug-144.xsl \
+    bug-145.out bug-145.xsl bug-145.err \
     character.out character.xsl \
     character2.out character2.xsl \
     itemschoose.out itemschoose.xsl \
@@ -163,8 +164,9 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running general tests'
 	@(echo > .memdump)
-	@(for i in $(srcdir)/../docs/*.xml ; do \
+	-@(for i in $(srcdir)/../docs/*.xml ; do \
 	  if [ -d $$i ] ; then continue ; fi ; \
 	  doc=`basename $$i .xml` ; \
 	  for j in $(srcdir)/$$doc*.xsl ; do \
@@ -172,11 +174,27 @@ test tests: $(top_builddir)/xsltproc/xsltproc
 	  if [ -d $$j ] ; then continue ; fi ; \
 	  name=`basename $$j .xsl`; \
 	  out=$(srcdir)/"$$name".out; \
-	  echo Running $$j on $$i ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc $$j $$i > result.$$name;\
-	  if [ ! -f $$out ] ; then cp result.$$name $$out ; \
-	  else diff $$out result.$$name; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f result.$$name ; \
+	  err=$(srcdir)/"$$name".err; \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc $$j $$i \
+	  	> result.$$name 2>err.$$name; \
+	  if [ ! -f $$out ] ; then \
+	  	cp result.$$name $$out ; \
+		if [ -s err.$$name ] ; then \
+			cp err.$$name $$err ; \
+		fi ; \
+	  else \
+	  	diff $$out result.$$name; \
+		if [ -s $$err ] ; then \
+	  		diff $$err err.$$name; \
+		else \
+			diff /dev/null err.$$name; \
+		fi ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f result.$$name err.$$name; \
 	  done ; done)
 
diff --git a/tests/general/bug-145.err b/tests/general/bug-145.err
new file mode 100644
index 00000000..25debc41
--- /dev/null
+++ b/tests/general/bug-145.err
@@ -0,0 +1,5 @@
+compilation error: file ./bug-145.xsl line 4 element transform
+xsl:version is missing: document may not be a stylesheet
+runtime error: file ./bug-145.xsl line 6 element call-template
+xsl:call-template : template :a not found
+no result for ./../docs/bug-145.xml
diff --git a/tests/general/bug-145.out b/tests/general/bug-145.out
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/general/bug-145.xsl b/tests/general/bug-145.xsl
new file mode 100644
index 00000000..14061a1d
--- /dev/null
+++ b/tests/general/bug-145.xsl
@@ -0,0 +1,10 @@
+
+
+
+   
+        
+   
+
+
+
diff --git a/tests/general/bug-60.err b/tests/general/bug-60.err
new file mode 100644
index 00000000..197bb53d
--- /dev/null
+++ b/tests/general/bug-60.err
@@ -0,0 +1,2 @@
+compilation error: file ./bug-60.xsl line 6 element foo-of
+xsltStylePreCompute: unknown xsl:foo-of
diff --git a/tests/keys/Makefile.am b/tests/keys/Makefile.am
index f47115a5..2666a703 100644
--- a/tests/keys/Makefile.am
+++ b/tests/keys/Makefile.am
@@ -12,6 +12,7 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running keys tests'
 	@(echo > .memdump)
 	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/month.xsl $(srcdir)/dates.xml > month.res ; \
 	if [ -r $(srcdir)/month.out ] ; \
diff --git a/tests/multiple/Makefile.am b/tests/multiple/Makefile.am
index 1c09d415..d2e4abc9 100644
--- a/tests/multiple/Makefile.am
+++ b/tests/multiple/Makefile.am
@@ -35,6 +35,7 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running multiple tests'
 	@(echo > .memdump)
 	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/dict.xsl $(srcdir)/dict.xml > dict.res ; \
 	diff $(srcdir)/result.xml dict.res; \
diff --git a/tests/namespaces/Makefile.am b/tests/namespaces/Makefile.am
index 3cc72561..ee748dc5 100644
--- a/tests/namespaces/Makefile.am
+++ b/tests/namespaces/Makefile.am
@@ -17,22 +17,37 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running namespaces tests'
 	@(echo > .memdump)
-	@(for i in $(srcdir)/*.xml ; do \
-	  doc="`basename $$i .xml`" ; \
-	  j=$(srcdir)/"$$doc".xsl; \
+	-@(for i in $(srcdir)/../docs/*.xml ; do \
+	  if [ -d $$i ] ; then continue ; fi ; \
+	  doc=`basename $$i .xml` ; \
+	  for j in $(srcdir)/$$doc*.xsl ; do \
 	  if [ ! -f $$j ] ; then continue ; fi ; \
 	  if [ -d $$j ] ; then continue ; fi ; \
-	  name="`basename $$j .xsl`"; \
+	  name=`basename $$j .xsl`; \
 	  out=$(srcdir)/"$$name".out; \
 	  err=$(srcdir)/"$$name".err; \
-	  echo $$j ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc $$j $$i > result.$$name 2>err.$$name;\
-	  if [ ! -f $$out ] ; then cp result.$$name $$out ; \
-	  else diff $$out result.$$name ; fi ; \
-	  if [ ! -f $$err ] ; then cp err.$$name $$err ; \
-	  else diff $$err err.$$name ; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f result.$$name ; \
-	  done)
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc $$j $$i \
+	  	> result.$$name 2>err.$$name; \
+	  if [ ! -f $$out ] ; then \
+	  	cp result.$$name $$out ; \
+		if [ -s err.$$name ] ; then \
+			cp err.$$name $$err ; \
+		fi ; \
+	  else \
+	  	diff $$out result.$$name; \
+		if [ -s $$err ] ; then \
+	  		diff $$err err.$$name; \
+		else \
+			diff /dev/null err.$$name; \
+		fi ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f result.$$name err.$$name; \
+	  done ; done)
 
diff --git a/tests/numbers/Makefile.am b/tests/numbers/Makefile.am
index 73a3ae1c..b03e7230 100644
--- a/tests/numbers/Makefile.am
+++ b/tests/numbers/Makefile.am
@@ -12,6 +12,7 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running numbers tests'
 	@(echo > .memdump)
 	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/format-number.xsl $(srcdir)/format-number.xml > format-number.res ; \
 	diff $(srcdir)/format-number.out format-number.res ; \
diff --git a/tests/reports/Makefile.am b/tests/reports/Makefile.am
index 0302cf6a..3c5e5415 100644
--- a/tests/reports/Makefile.am
+++ b/tests/reports/Makefile.am
@@ -20,26 +20,40 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running reports tests'
 	@(echo > .memdump)
-	@(for i in $(srcdir)/*.xml ; do \
+	-@(for i in $(srcdir)/../docs/*.xml ; do \
 	  if [ -d $$i ] ; then continue ; fi ; \
 	  doc=`basename $$i .xml` ; \
-	  for j in $(srcdir)/$$doc.xsl ; do \
+	  for j in $(srcdir)/$$doc*.xsl ; do \
 	  if [ ! -f $$j ] ; then continue ; fi ; \
 	  if [ -d $$j ] ; then continue ; fi ; \
 	  name=`basename $$j .xsl`; \
 	  out=$(srcdir)/"$$name".out; \
 	  err=$(srcdir)/"$$name".err; \
-	  echo Running $$j on $$i ; \
-	  $(CHECKER) $(top_builddir)/xsltproc/xsltproc \
+	  log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
 	              --stringparam test passed_value \
 		      --stringparam test2 passed_value2 \
 	              $$j $$i > result.$$name \
 	              2> err.$$name ; \
-	  if [ ! -f $$out ] ; \
-	  then cp result.$$name $$out; cp err.$$name $$err ; \
-	  else diff $$out result.$$name; diff $$err err.$$name; fi ; \
-	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	  rm -f result.$$name err.$$name ; \
+	  if [ ! -f $$out ] ; then \
+	  	cp result.$$name $$out ; \
+		if [ -s err.$$name ] ; then \
+			cp err.$$name $$err ; \
+		fi ; \
+	  else \
+	  	diff $$out result.$$name; \
+		if [ -s $$err ] ; then \
+	  		diff $$err err.$$name; \
+		else \
+			diff /dev/null err.$$name; \
+		fi ; \
+	  fi ; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+	  if [ -n "$$log" ] ; then \
+	  	echo $$name result ; \
+		echo $$log ; \
+	  fi ; \
+	  rm -f result.$$name err.$$name; \
 	  done ; done)
 
diff --git a/tests/xmlspec/Makefile.am b/tests/xmlspec/Makefile.am
index 1d597aad..babe870b 100644
--- a/tests/xmlspec/Makefile.am
+++ b/tests/xmlspec/Makefile.am
@@ -14,17 +14,33 @@ valgrind:
 	$(MAKE) CHECKER='valgrind -q' tests
 
 test tests: $(top_builddir)/xsltproc/xsltproc
+	@echo '## Running xmlspec tests'
 	@(echo > .memdump)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc -timing $(srcdir)/REC-xml-2e.xsl $(srcdir)/REC-xml-20001006.xml > REC-xml-20001006.out 2> debug ; \
-	diff $(srcdir)/REC-xml-20001006.html REC-xml-20001006.out | grep -v 'id[0-9]' | grep -v -- '---' | grep -v 100 | grep -v 3866 ; \
-	grep implemented debug | sort | uniq -c || true; \
-	grep " ms$$" debug || true; \
-	grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	rm -f REC-xml-20001006.out)
-	@($(CHECKER) $(top_builddir)/xsltproc/xsltproc  -timing --param show.diff.markup 1 $(srcdir)/REC-xml-2e.xsl $(srcdir)/REC-xml-20001006.xml > REC-xml-20001006-review.out 2> debug ; \
-	diff $(srcdir)/REC-xml-20001006-review.html REC-xml-20001006-review.out | grep -v 'id[0-9]' | grep -v -- '---' | grep -v 117 | grep -v 4066 ; \
-	grep implemented debug | sort | uniq -c || true; \
-	grep " ms$$" debug || true; \
-	grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true;\
-	rm -f REC-xml-20001006-review.out)
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc -timing \
+		$(srcdir)/REC-xml-2e.xsl $(srcdir)/REC-xml-20001006.xml \
+		> REC-xml-20001006.out 2> debug ; \
+	  diff $(srcdir)/REC-xml-20001006.html REC-xml-20001006.out | \
+		grep -v 'id[0-9]' | grep -v -- '---' | grep -v 100 | grep -v 3866 ; \
+	  grep implemented debug | sort | uniq -c || true; \
+	  grep " ms$$" debug || true; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo REC-xml-20001006 result ; \
+		echo $$log ; \
+	fi
+	@rm -f REC-xml-20001006.out
+	@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc  \
+		-timing --param show.diff.markup 1 \
+		$(srcdir)/REC-xml-2e.xsl $(srcdir)/REC-xml-20001006.xml \
+		> REC-xml-20001006-review.out 2> debug ; \
+	  diff $(srcdir)/REC-xml-20001006-review.html REC-xml-20001006-review.out | \
+		grep -v 'id[0-9]' | grep -v -- '---' | grep -v 117 | grep -v 4066 ; \
+	  grep implemented debug | sort | uniq -c || true; \
+	  grep " ms$$" debug || true; \
+	  grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`
+	@if [ -n "$$log" ] ; then \
+	  	echo "REC-xml-20001006 (show.diff.markup) result" ; \
+		echo $$log ; \
+	fi
+	@rm -f REC-xml-20001006-review.out