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

Reply via email to