Commit c18626eef6cbd1b420b85fc9f8a44d5031ad2fcd

Shawn O. Pearce 2008-12-18T08:17:05

Run tests in their own subdirectory This way tests can run in parallel without stepping on each other's temporary work files. If a test passes the directory is removed completely; if a test fails only empty directories are removed. This permits inspection of the failed test's left behind state. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

diff --git a/.gitignore b/.gitignore
index 5213c69..0269c3f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
 /apidocs
 /src/git/config.h
+/trash-*.exe
 *.o
 *.a
 *.exe
diff --git a/Makefile b/Makefile
index c1044cd..e65ddb3 100644
--- a/Makefile
+++ b/Makefile
@@ -28,6 +28,7 @@ clean:
 	rm -f $(GIT_LIB)
 	rm -f src/*.o
 	rm -f tests/*.o tests/*.exe tests/*.toc
+	rm -rf trash-*.exe
 	rm -f src/git/config.h
 	rm -rf apidocs
 
@@ -81,7 +82,12 @@ $(TEST_EXE): tests/%.exe: tests/%.o tests/%_main.o
 		$(T_LIB) -L. -lgit2
 
 $(TEST_RUN): tests/%.run: tests/%.exe
-	@$<
+	@t=trash-$(<F) && \
+	 mkdir $$t && \
+	 if (cd $$t && ../$<); \
+	  then rm -rf $$t; \
+	  else rmdir $$t; exit 1; \
+	 fi
 
 .PHONY: all
 .PHONY: clean