mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-25 00:25:36 +02:00
* tests/check.mk (TESTS_ENVIRONMENT): Save and restore TMPDIR around envvar-check, so that the few scripts that require $TMPDIR don't fail. This is also good to let a user's default TMPDIR setting be used e.g., in the search for an 'other-partition'. FIXME: this is pretty ugly. maybe undo it and find a better way. (TESTS_ENVIRONMENT): Invoke perl scripts with $(PERL), and use -T if the script requires that. Otherwise, use $(SHELL). * tests/misc/md5sum-newline: Create a file whose name contains a newline in Perl (resort to using "system", since open refuses). Fix old brokenness exposed by this change: * tests/du/files0-from: Correct test not to rely on stdin being attached to a non-tty. * tests/misc/sort (3g, 3h, 3i): Likewise: add explicit empty input file. Avoid warnings about using qw()-around-commas. * tests/rm/fail-eperm: Now that this test is run from a temporary subdirectory, adjust the full name of the "rm" program we're going to run. Change #!/bin/sh to #!/usr/bin/perl, and factor out the few lines of boilerplate code to invoke perl. Do not "require 5.00x"; a configure-time Perl test handles that * tests/dd/skip-seek: * tests/misc/base64: * tests/misc/basename: * tests/misc/cut: * tests/misc/date: * tests/misc/dircolors: * tests/misc/dirname: * tests/misc/expand: * tests/misc/expr: * tests/misc/factor: * tests/misc/fmt: * tests/misc/fold: * tests/misc/head: * tests/misc/head-elide-tail: * tests/misc/join: * tests/misc/ls-misc: * tests/misc/md5sum: * tests/misc/md5sum-newline: * tests/misc/mktemp: * tests/misc/od: * tests/misc/paste: * tests/misc/pr: * tests/misc/printf-cov: * tests/misc/seq: * tests/misc/sha1sum: * tests/misc/sha1sum-vec: * tests/misc/sha224sum: * tests/misc/sha256sum: * tests/misc/sha384sum: * tests/misc/sha512sum: * tests/misc/sort-merge: * tests/misc/stat-printf: * tests/misc/sum: * tests/misc/tac: * tests/misc/tail: * tests/misc/test: * tests/misc/test-diag: * tests/misc/tr: * tests/misc/tsort: * tests/misc/tty-eof: * tests/misc/unexpand: * tests/misc/uniq: * tests/misc/wc: * tests/misc/wc-files0-from: * tests/misc/xstrtol: * tests/mv/i-1: * tests/pr/pr-tests: * tests/rm/empty-name: * tests/rm/fail-eperm: * tests/rm/unreadable:
96 lines
3.5 KiB
Makefile
96 lines
3.5 KiB
Makefile
# Include this file at the end of each tests/*/Makefile.am.
|
|
# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Ensure that all version-controlled executable files are listed in TESTS.
|
|
# Collect test names from the line matching /^TESTS = \\$$/ to the following
|
|
# one that does not end in '\'.
|
|
_v = TESTS
|
|
_w = root_tests
|
|
vc_exe_in_TESTS: Makefile
|
|
@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)/!!'`; \
|
|
test -f "$$f" && test -x "$$f" && echo "$$f"; \
|
|
done | sort -u > t2 && \
|
|
diff -u t1 t2 || exit 1; \
|
|
rm -f t1 t2; \
|
|
else :; fi
|
|
|
|
check: vc_exe_in_TESTS
|
|
.PHONY: vc_exe_in_TESTS
|
|
|
|
built_programs = \
|
|
(cd $(top_builddir)/src && MAKEFLAGS= $(MAKE) -s built_programs.list)
|
|
|
|
# Note that the first lines are statements. They ensures that environment
|
|
# variables that can perturb tests are unset or set to expected values.
|
|
# The rest are envvar settings that propagate build-related Makefile
|
|
# variables to test scripts.
|
|
TESTS_ENVIRONMENT = \
|
|
. $(top_srcdir)/tests/lang-default; \
|
|
tmp__=$$TMPDIR; test -d $tmp__ || tmp__=.; \
|
|
. $(top_srcdir)/tests/envvar-check; \
|
|
TMPDIR=$$tmp__; export TMPDIR; \
|
|
shell_or_perl_() { \
|
|
if grep '^\#!/usr/bin/perl' "$$1" > /dev/null; then \
|
|
if $(PERL) -e 'use warnings' > /dev/null 2>&1; then \
|
|
grep '^\#!/usr/bin/perl -T' "$$1" > /dev/null && T_=T || T_=; \
|
|
$(PERL) -w$$T_ -I$(top_srcdir)/tests -MCoreutils \
|
|
-M"CuTmpdir qw($$tst)" -- "$$1"; \
|
|
else \
|
|
echo 1>&2 "$$tst: configure did not find a usable version of Perl," \
|
|
"so skipping this test"; \
|
|
(exit 77); \
|
|
fi; \
|
|
else \
|
|
$(SHELL) "$$1"; \
|
|
fi; \
|
|
}; \
|
|
LOCALE_FR='$(LOCALE_FR)' \
|
|
abs_top_builddir='$(abs_top_builddir)' \
|
|
abs_top_srcdir='$(abs_top_srcdir)' \
|
|
built_programs="`$(built_programs)`" \
|
|
host_os=$(host_os) \
|
|
host_triplet='$(host_triplet)' \
|
|
srcdir='$(srcdir)' \
|
|
top_srcdir='$(top_srcdir)' \
|
|
CONFIG_HEADER='$(abs_top_builddir)/lib/config.h' \
|
|
CU_TEST_NAME=`basename '$(abs_srcdir)'`,$$tst \
|
|
EGREP='$(EGREP)' \
|
|
EXEEXT='$(EXEEXT)' \
|
|
MAKE=$(MAKE) \
|
|
PACKAGE_BUGREPORT='$(PACKAGE_BUGREPORT)' \
|
|
PACKAGE_VERSION=$(PACKAGE_VERSION) \
|
|
PERL='$(PERL)' \
|
|
REPLACE_GETCWD=$(REPLACE_GETCWD) \
|
|
PATH='$(abs_top_builddir)/src$(PATH_SEPARATOR)'"$$PATH" \
|
|
shell_or_perl_
|
|
|
|
TEST_LOGS = $(TESTS:=.log)
|
|
|
|
# Parallel replacement of Automake's check-TESTS target.
|
|
include $(top_srcdir)/build-aux/check.mk
|
|
|
|
VERBOSE = yes
|