Index: src/main.mk
==================================================================
--- src/main.mk
+++ src/main.mk
@@ -287,12 +287,12 @@
 	$(BCC) -o $(OBJDIR)/mkversion $(SRCDIR)/mkversion.c
 
 # WARNING. DANGER. Running the testsuite modifies the repository the
 # build is done from, i.e. the checkout belongs to. Do not sync/push
 # the repository after running the tests.
-test:	$(APPNAME)
-	$(TCLSH) test/tester.tcl $(APPNAME)
+test:	$(OBJDIR) $(APPNAME)
+	$(TCLSH) $(SRCDIR)/../test/tester.tcl $(APPNAME)
 
 $(OBJDIR)/VERSION.h:	$(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(SRCDIR)/../VERSION $(OBJDIR)/mkversion
 	$(OBJDIR)/mkversion $(SRCDIR)/../manifest.uuid  $(SRCDIR)/../manifest  $(SRCDIR)/../VERSION >$(OBJDIR)/VERSION.h
 
 # The USE_SYSTEM_SQLITE variable may be undefined, set to 0, or set

Index: src/makemake.tcl
==================================================================
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -182,12 +182,12 @@
 	$(BCC) -o $(OBJDIR)/mkversion $(SRCDIR)/mkversion.c
 
 # WARNING. DANGER. Running the testsuite modifies the repository the
 # build is done from, i.e. the checkout belongs to. Do not sync/push
 # the repository after running the tests.
-test:	$(APPNAME)
-	$(TCLSH) test/tester.tcl $(APPNAME)
+test:	$(OBJDIR) $(APPNAME)
+	$(TCLSH) $(SRCDIR)/../test/tester.tcl $(APPNAME)
 
 $(OBJDIR)/VERSION.h:	$(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest $(SRCDIR)/../VERSION $(OBJDIR)/mkversion
 	$(OBJDIR)/mkversion $(SRCDIR)/../manifest.uuid \
 		$(SRCDIR)/../manifest \
 		$(SRCDIR)/../VERSION >$(OBJDIR)/VERSION.h

Index: test/merge5.test
==================================================================
--- test/merge5.test
+++ test/merge5.test
@@ -38,14 +38,18 @@
   }    
 }
 
 catch {exec $::fossilexe info} res
 puts res=$res
-if {![regexp {not within an open checkout} $res]} {
+if {![regexp {use --repository} $res]} {
   puts stderr "Cannot run this test within an open checkout"
   return
 }
+#
+# Fossil will write data on $HOME, running 'fossil open' here.
+# We need not to clutter the $HOME of the test caller.
+set env(HOME) [pwd]
 
 # Construct a test repository
 #
 exec sqlite3 m5.fossil <$testdir/${testfile}_repo.sql
 fossil rebuild m5.fossil

Index: test/merge_renames.test
==================================================================
--- test/merge_renames.test
+++ test/merge_renames.test
@@ -7,10 +7,16 @@
 puts res=$res
 if {![regexp {use --repository} $res]} {
   puts stderr "Cannot run this test within an open checkout"
   return
 }
+
+
+# Fossil will write data on $HOME, running 'fossil new' here.
+# We need not to clutter the $HOME of the test caller.
+set env(HOME) [pwd]
+
 
 ######################################
 #  Test 1                            #
 #  Reported: Ticket [554f44ee74e3d]  #
 ######################################