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>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
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