diff --git a/tests/Makefile b/tests/Makefile
index e1cc0a79bdf9fdf61e59278355d239b182d8d4dc..d1c3d111cb572bb29071f8f3624dcf2150be7f24 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -29,7 +29,7 @@ clean:
 
 run: $(BINS)
 	for bin in $(BINS); \
-	do
+	do \
 		echo "# $${bin} #"; \
 		"./$${bin}" test args; \
 	done
@@ -40,6 +40,7 @@ expected: $(BINS)
 	for bin in $(BINS); \
 	do \
 		echo "# $${bin} #"; \
+		mkdir -p expected/`dirname $${bin}`; \
 		"./$${bin}" test args > "expected/$${bin}.stdout" 2> "expected/$${bin}.stderr"; \
 	done
 
@@ -49,6 +50,7 @@ verify: $(BINS)
 	for bin in $(BINS); \
 	do \
 		echo "# $${bin} #"; \
+		mkdir -p gen/`dirname $${bin}`; \
 		"./$${bin}" test args > "gen/$${bin}.stdout" 2> "gen/$${bin}.stderr"; \
 		diff -u "gen/$${bin}.stdout" "expected/$${bin}.stdout"; \
 		diff -u "gen/$${bin}.stderr" "expected/$${bin}.stderr"; \