diff --git a/Makefile b/Makefile
index 2ccc755c3f1b10e948252f51f08e83f0b9ba12e8..dfdfe33cf58d5cd3e30cfd5b5ad2eb25046fbd5e 100644
--- a/Makefile
+++ b/Makefile
@@ -11,14 +11,14 @@ TESTS_8 = $(TESTS_7) Arithmetic CoinSums DigitPermutations FunctionCall \
 	Goldbach IntegerTypes Jumps PalindromeProduct Primes Recursion
 
 test: test8
-test1: $(addprefix tests/,$(TESTS_1:=-result.txt))
-test2: $(addprefix tests/,$(TESTS_2:=-result.txt))
-test3: $(addprefix tests/,$(TESTS_3:=-result.txt))
-test4: $(addprefix tests/,$(TESTS_4:=-result.txt))
-test5: $(addprefix tests/,$(TESTS_5:=-result.txt))
-test6: $(addprefix tests/,$(TESTS_6:=-result.txt))
-test7: $(addprefix tests/,$(TESTS_7:=-result.txt))
-test8: $(addprefix tests/,$(TESTS_8:=-result.txt))
+test1: $(TESTS_1:=-result)
+test2: $(TESTS_2:=-result)
+test3: $(TESTS_3:=-result)
+test4: $(TESTS_4:=-result)
+test5: $(TESTS_5:=-result)
+test6: $(TESTS_6:=-result)
+test7: $(TESTS_7:=-result)
+test8: $(TESTS_8:=-result)
 
 jvm: jvm.o read_class.o
 	$(CC) $(CFLAGS) $^ -o $@
@@ -32,11 +32,8 @@ tests/%-expected.txt: tests/%.class
 tests/%-actual.txt: tests/%.class jvm
 	./jvm $< > $@
 
-tests/%-result.txt: tests/%-expected.txt tests/%-actual.txt
-	diff -u $^ | tee $@; \
-	name='test $(@F:-result.txt=)'; \
-	if [ -s $@ ]; then echo FAILED $$name. Aborting.; false; \
-	else echo PASSED $$name.; fi
+%-result: tests/%-expected.txt tests/%-actual.txt
+	diff -u $^ && echo PASSED test $(@:-result=). || (echo FAILED test $(@:-result=). Aborting.; false)
 
 clean:
 	rm -f *.o jvm tests/*.txt `find tests -name '*.java' | sed 's/java/class/'`