Blob Blame History Raw
commit 8f856a5da77c37c1e3c7a466b59b6a5fca3aebcd
Author: Jonathan Wakely <pstreams@kayari.org>
Date:   Wed Sep 28 11:32:41 2022 +0100

    Improve output of 'make check' target
    
    Dump full test log to stdout if a test fails.
    
    Build tests with -std=c++98 to check compatibility but then
    rebuild+execute with compiler's default mode.

diff --git a/Makefile b/Makefile
index 35b1f7d..54554d1 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 # PStreams Makefile
 
-#        Copyright (C) 2001 - 2020 Jonathan Wakely
+#        Copyright (C) 2001 - 2022 Jonathan Wakely
 # Distributed under the Boost Software License, Version 1.0.
 #    (See accompanying file LICENSE_1_0.txt or copy at
 #          http://www.boost.org/LICENSE_1_0.txt)
@@ -13,7 +13,7 @@ OPTIM= -O1 -g3
 EXTRA_CXXFLAGS=
 
 CFLAGS=-pedantic -Wall -Wextra -Wpointer-arith -Wcast-qual -Wcast-align -Wredundant-decls -Wshadow $(OPTIM)
-CXXFLAGS=$(CFLAGS) -std=c++98 -Woverloaded-virtual
+CXXFLAGS=$(CFLAGS) -Woverloaded-virtual
 
 prefix = /usr/local
 includedir = $(prefix)/include
@@ -34,24 +34,21 @@ VERS := $(shell awk -F' ' '/^$(HASH)define *PSTREAMS_VERSION/{ print $$NF }' pst
 all: $(TESTS) | pstreams.wout
 
 check run_tests test: all
-	@for t in $(TESTS) ; do \
-	  echo $$t ; \
-	  ./$$t >/dev/null 2>&1 || echo "$$t EXITED WITH STATUS $$?" ; \
-	done
-
-# TODO why does valgrind cause some tests to hang?
-check-valgrind: all
-	@for t in $(TESTS) ; do \
-	  echo $$t ; \
-	  valgrind --track-fds=yes ./$$t \
-	    || echo "$$t EXITED WITH STATUS $$?" ; \
-	  echo ; \
-	done
-
-check-werror: EXTRA_CXXFLAGS := -Werror
-check-werror: check
+	@status=0 ; \
+	log=`mktemp test.XXXXXX` ; \
+	for test in $(TESTS) ; do \
+	printf "Running %-20s ... " $$test ; \
+	./$$test >$$log 2>&1 && echo OK && continue ; \
+	echo "FAILED [exit status $$?]" ; cat $$log >&2 ; status=1; \
+	done ; \
+	rm $$log ; \
+	exit $$status
+
+check-werror:
+	@$(MAKE) EXTRA_CXXFLAGS+=-Werror all check
 
 test_%: test_%.cc pstream.h FORCE
+	$(CXX) $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(LDFLAGS) -o $@ $< -std=c++98
 	$(CXX) $(CXXFLAGS) $(EXTRA_CXXFLAGS) $(LDFLAGS) -o $@ $<
 
 MANIFEST: Makefile