When running single tests I noticed a delay of about 3s at the end
when vc_exe_in_TESTS was running. This is mainly due to
running sed for each file under tests/ which can be avoided like:
diff --git a/tests/check.mk b/tests/check.mk
index d45c288..ac7be1a 100644
--- a/tests/check.mk
+++ b/tests/check.mk
@@ -29,8 +29,8 @@ vc_exe_in_TESTS: Makefile
$(srcdir)/Makefile.am \
| sed 's/^ *//;/^\$$.*/d;/^$(_w) =/d'; } \
| tr -s '\012\\' ' ' | fmt -1 | sort -u > t1 && \
- for f in `cd $(top_srcdir) && build-aux/vc-list-files $(subdir)`; do \
- f=`echo $$f|sed 's!^$(subdir)/!!'`; \
+ for f in `cd $(top_srcdir) && \
+ build-aux/vc-list-files $(subdir) | sed 's!^$(subdir)/!!'`; do \
test -f "$$f" && test -x "$$f" && echo "$$f"; \
done | sort -u > t2 && \
diff -u t1 t2 || exit 1; \
I've went further in the attached patch though and
simplified the test to avoid temp files etc.
cheers,
Pádraig.
From 32f0704d05ca56ecd0229194bc496d7ade19d6fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <[email protected]>
Date: Mon, 17 Oct 2011 11:20:01 +0100
Subject: [PATCH] maint: speed up make check (vc_exe_in_TESTS)
* tests/check.mk (vc_exe_in_TESTS): The main change is to
not start a sed process for each file under tests/,
which was taking around 2.5s on a 2.1GHz i3-2310M.
The check was also adjusted to avoid temporary files.
---
tests/check.mk | 24 ++++++++++--------------
1 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/tests/check.mk b/tests/check.mk
index d45c288..a91d97c 100644
--- a/tests/check.mk
+++ b/tests/check.mk
@@ -20,21 +20,17 @@
_v = TESTS
_w = root_tests
vc_exe_in_TESTS: Makefile
- $(AM_V_GEN)rm -f t1 t2; \
- if test -d $(top_srcdir)/.git && test $(srcdir) = .; then \
- { sed -n '/^$(_v) =[ ]*\\$$/,/[^\]$$/p' \
- $(srcdir)/Makefile.am \
- | sed 's/^ *//;/^\$$.*/d;/^$(_v) =/d'; \
- sed -n '/^$(_w) =[ ]*\\$$/,/[^\]$$/p' \
- $(srcdir)/Makefile.am \
- | sed 's/^ *//;/^\$$.*/d;/^$(_w) =/d'; } \
- | tr -s '\012\\' ' ' | fmt -1 | sort -u > t1 && \
- for f in `cd $(top_srcdir) && build-aux/vc-list-files $(subdir)`; do \
- f=`echo $$f|sed 's!^$(subdir)/!!'`; \
+ $(AM_V_GEN)if test -d $(top_srcdir)/.git && test $(srcdir) = .; then \
+ { \
+ for list in $(_v) $(_w); do \
+ sed -n "/^$$list =[ ]*\\\\$$/,/[^\]$$/p" Makefile.am | \
+ sed -n 's/^ *\([^$$ ]\{1,\}\).*/\1/p'; \
+ done; \
+ for f in `cd $(top_srcdir) && \
+ build-aux/vc-list-files $(subdir) | sed 's!^$(subdir)/!!'`; do \
test -f "$$f" && test -x "$$f" && echo "$$f"; \
- done | sort -u > t2 && \
- diff -u t1 t2 || exit 1; \
- rm -f t1 t2; \
+ done \
+ } | sort | uniq -u | grep . && exit 1 ||:; \
else :; fi
check: vc_exe_in_TESTS
--
1.7.6