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