* Cleanup the test suite.

This commit is contained in:
Paul Smith 1999-09-15 22:23:35 +00:00
parent 0d366b6682
commit c800367385
12 changed files with 149 additions and 60 deletions

View File

@ -1,3 +1,19 @@
1999-09-15 Paul D. Smith <psmith@gnu.org>
* configure.in (MAKE_HOST): AC_SUBST this so it will go into the
makefile.
* Makefile.am (check-local): Print a success banner if the check
succeeds.
(check-regression): A bit of fine-tuning.
1999-09-15 Eli Zaretskii <eliz@is.elta.co.il>
* README.DOS.template: Document requirements for the test suite.
* Makefile.DOS.template: Updates to allow the test suite to run
from "make check".
* main.c (main): Handle it if argv[0] isn't an absolute path.
1999-09-13 Paul D. Smith <psmith@gnu.org> 1999-09-13 Paul D. Smith <psmith@gnu.org>
* Version 3.77.96 released. * Version 3.77.96 released.

View File

@ -53,6 +53,7 @@ CPP = gcc -E
LIBOBJS = LIBOBJS =
MAKEINFO = ${bindir}/makeinfo MAKEINFO = ${bindir}/makeinfo
PACKAGE = make PACKAGE = make
PERL = perl
RANLIB = ranlib RANLIB = ranlib
REMOTE = stub REMOTE = stub
VERSION = %VERSION% VERSION = %VERSION%
@ -81,6 +82,8 @@ CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = build.sh CONFIG_CLEAN_FILES = build.sh
PROGRAMS = $(bin_PROGRAMS) PROGRAMS = $(bin_PROGRAMS)
MAKE_HOST = i386-pc-msdosdjgpp
DEFS = -I. -I$(srcdir) -I. DEFS = -I. -I$(srcdir) -I.
CPPFLAGS = -DHAVE_CONFIG_H CPPFLAGS = -DHAVE_CONFIG_H
@ -295,7 +298,8 @@ libglob.a: $(libglob_a_OBJECTS)
$(AR) cru libglob.a $(libglob_a_OBJECTS) $(libglob_a_LIBADD) $(AR) cru libglob.a $(libglob_a_OBJECTS) $(libglob_a_LIBADD)
$(RANLIB) libglob.a $(RANLIB) libglob.a
mostlyclean-recursive clean-recursive distclean-recursive maintainer-clean-recursive: mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive check-recursive:
ifeq ($(words $(SUBDIRS)), 1) ifeq ($(words $(SUBDIRS)), 1)
@echo Making $(shell echo $@ | sed s/-recursive//) in $(SUBDIRS) @echo Making $(shell echo $@ | sed s/-recursive//) in $(SUBDIRS)
$(MAKE) -C $(SUBDIRS) -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am $(MAKE) -C $(SUBDIRS) -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am
@ -364,8 +368,8 @@ distdir: $(DISTFILES)
info: $(INFO_DEPS) info-recursive info: $(INFO_DEPS) info-recursive
dvi: $(DVIS) dvi-recursive dvi: $(DVIS) dvi-recursive
check: all-am check: all-am check-recursive check-local
$(MAKE) check-recursive check-local @:
installcheck: installcheck-recursive installcheck: installcheck-recursive
all-recursive-am: config.h all-recursive-am: config.h
$(MAKE) all-recursive $(MAKE) all-recursive
@ -439,7 +443,7 @@ maintainer-clean-compile install-info-am uninstall-info \
mostlyclean-aminfo distclean-aminfo clean-aminfo \ mostlyclean-aminfo distclean-aminfo clean-aminfo \
maintainer-clean-aminfo install-data-recursive uninstall-data-recursive \ maintainer-clean-aminfo install-data-recursive uninstall-data-recursive \
install-exec-recursive uninstall-exec-recursive installdirs-recursive \ install-exec-recursive uninstall-exec-recursive installdirs-recursive \
uninstalldirs-recursive all-recursive check-recursive \ uninstalldirs-recursive all-recursive check-recursive check-am \
installcheck-recursive info-recursive dvi-recursive \ installcheck-recursive info-recursive dvi-recursive \
mostlyclean-recursive distclean-recursive clean-recursive \ mostlyclean-recursive distclean-recursive clean-recursive \
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
@ -464,8 +468,23 @@ dist-hook:
# --------------- Local CHECK Section # --------------- Local CHECK Section
# Note: check-loadavg is NOT a prerequisite of check-local, since
# there's no uptime utility, and the test it does doesn't make sense
# on MSDOS anyway.
check-local: check-loadavg check-regression check-local: check-loadavg check-regression
.PHONY: check-loadavg check-regression @echo "=========================" \
echo "Regression passed: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC)"; \
echo "========================="
.PHONY: check-loadavg check-shell check-regression
# > check-shell
#
# check-shell is designed to fail if they don't have a Unixy shell
# installed. The test suite requires such a shell.
check-shell:
@echo If Make says Error -1, you do not have Unix-style shell installed
@foo=bar.exe :
# > check-loadavg # > check-loadavg
# #
@ -490,23 +509,22 @@ check-loadavg: loadavg
# parents. # parents.
# #
check-regression: check-regression:
here=`pwd`; testdir=""; \ @if test -f "$(srcdir)/tests/run_make_tests"; then \
case "$(MAKE_TEST)" in "") \ if $(PERL) -v >/dev/null 2>&1; then \
for d1 in $$here $(srcdir); do \ case `cd $(srcdir); pwd` in `pwd`) : ;; \
for d2 in ../.. .. .; do \ *) test -d tests || mkdir tests; \
all=`echo $$d1/$$d2/make-test-[0-9]*/run_make_tests`; \ for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
case "$$all" in \ rm -rf tests/$$f; cp -pr $(srcdir)/tests/$$f tests; \
"$$d1/$$d2/make-test-[0-9]*/run_make_tests") : ;; \ done ;; \
*) try=`for x in $$all; do echo $$x; done | sort | tail -1`;\
testdir=`dirname $$try` ;; esac; \
done; done ;; \
*) testdir="$(MAKE_TEST)" ;; \
esac; \ esac; \
case "$$testdir" in \ echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make.exe $(MAKETESTFLAGS)"; \
"") echo "Couldn't find make-test-* test suite."; exit 0;; \ cd tests && $(PERL) ./run_make_tests.pl -make ../make.exe $(MAKETESTFLAGS); \
esac; \ else \
echo "cd $$testdir && ./run_make_tests -make_path $$here/make"; \ echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
cd $$testdir && ./run_make_tests -make_path $$here/make fi; \
else \
echo "Can't find the GNU Make test suite ($(srcdir)/tests)."; \
fi
# --------------- Maintainer's Section # --------------- Maintainer's Section

View File

@ -30,6 +30,8 @@ SUBDIRS = glob
MOSTLYCLEANFILES = loadavg.c MOSTLYCLEANFILES = loadavg.c
CLEANFILES = loadavg CLEANFILES = loadavg
MAKE_HOST = @MAKE_HOST@
# --------------- Local INSTALL Section # --------------- Local INSTALL Section
@ -66,7 +68,7 @@ install-exec-local:
# #
dist-hook: dist-hook:
(cd $(srcdir); \ (cd $(srcdir); \
sub=`find w32 tests -follow \( -name CVS -prune \) -o \( -name \*.orig -o -name \*.rej -o -name \*~ -prune \) -o -type f -print`; \ sub=`find w32 tests -follow \( -name CVS -prune -o -name work -prune \) -o \( -name \*.orig -o -name \*.rej -o -name \*~ -prune \) -o -type f -print`; \
tar chf - $$sub) \ tar chf - $$sub) \
| (cd $(distdir); tar xfBp -) | (cd $(distdir); tar xfBp -)
@ -74,6 +76,12 @@ dist-hook:
# --------------- Local CHECK Section # --------------- Local CHECK Section
check-local: check-regression check-loadavg check-local: check-regression check-loadavg
@banner="Regression passed: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC)"; \
dashes=`echo "$$banner" | sed s/./=/g`; \
echo "$$dashes"; \
echo "$$banner"; \
echo "$$dashes"
.PHONY: check-loadavg check-regression .PHONY: check-loadavg check-regression
# > check-loadavg # > check-loadavg
@ -107,14 +115,14 @@ check-regression:
@if test -f "$(srcdir)/tests/run_make_tests"; then \ @if test -f "$(srcdir)/tests/run_make_tests"; then \
if $(PERL) -v >/dev/null 2>&1; then \ if $(PERL) -v >/dev/null 2>&1; then \
case `cd $(srcdir); pwd` in `pwd`) : ;; \ case `cd $(srcdir); pwd` in `pwd`) : ;; \
*) mkdir tests; \ *) test -d tests || mkdir tests; \
if ln -s "$(srcdir)/tests" srctests; then \ if ln -s "$(srcdir)/tests" srctests; then \
for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \ for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
rm -f tests/$$f; ln -s ../srctests/$$f tests; \ rm -f tests/$$f; ln -s ../srctests/$$f tests; \
done; fi ;; \ done; fi ;; \
esac; \ esac; \
echo "cd tests && ./run_make_tests -make ../make $(MAKETESTFLAGS)"; \ echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make $(MAKETESTFLAGS)"; \
cd tests && ./run_make_tests -make ../make $(MAKETESTFLAGS); \ cd tests && $(PERL) ./run_make_tests.pl -make ../make $(MAKETESTFLAGS); \
else \ else \
echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \ echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
fi; \ fi; \

View File

@ -30,6 +30,9 @@ New (since 3.74) DOS-specific features:
targets like "install:" and "clean:" still need additional targets like "install:" and "clean:" still need additional
programs, though, see below.) programs, though, see below.)
10. Beginning with v3.78, the test suite works in the DJGPP
environment (requires Perl and auxiliary tools; see below).
To build: To build:
@ -100,6 +103,9 @@ To build:
7. The `clean' targets also require Unix-style shell, and GNU Sed 7. The `clean' targets also require Unix-style shell, and GNU Sed
and `rm' programs (the latter from Fileutils). and `rm' programs (the latter from Fileutils).
8. To run the test suite, type "make check". This requires a Unix
shell (I used the DJGPP port of Bash 2.03), Perl, Fileutils and
Sh-utils.
Notes: Notes:

View File

@ -3,7 +3,7 @@ AC_REVISION([$Id$])
AC_PREREQ(2.13)dnl dnl Minimum Autoconf version required. AC_PREREQ(2.13)dnl dnl Minimum Autoconf version required.
AC_INIT(vpath.c)dnl dnl A distinctive file to look for in srcdir. AC_INIT(vpath.c)dnl dnl A distinctive file to look for in srcdir.
AM_INIT_AUTOMAKE(make, 3.77.96) AM_INIT_AUTOMAKE(make, 3.77.97)
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
dnl Regular configure stuff dnl Regular configure stuff
@ -211,9 +211,9 @@ case "$make_cv_sys_gnu_glob" in
;; ;;
esac esac
AC_DEFINE_UNQUOTED(MAKE_HOST,"$host",[Build host information.]) AC_DEFINE_UNQUOTED(MAKE_HOST,"$host",[Build host information.])
MAKE_HOST="$host"
AC_SUBST(MAKE_HOST)
MAINT_MAKEFILE=/dev/null MAINT_MAKEFILE=/dev/null
if test -r "$srcdir/maintMakefile"; then if test -r "$srcdir/maintMakefile"; then

7
main.c
View File

@ -974,6 +974,13 @@ int main (int argc, char ** argv)
if (*p == '\\') if (*p == '\\')
*p = '/'; *p = '/';
} }
/* If argv[0] is not in absolute form, prepend the current
directory. This can happen when Make is invoked by another DJGPP
program that uses a non-absolute name. */
if (current_directory[0] != '\0'
&& argv[0] != 0
&& (argv[0][0] != '/' && (argv[0][0] == '\0' || argv[0][1] != ':')))
argv[0] = concat (current_directory, "/", argv[0]);
#else /* !__MSDOS__ */ #else /* !__MSDOS__ */
if (current_directory[0] != '\0' if (current_directory[0] != '\0'
&& argv[0] != 0 && argv[0][0] != '/' && index (argv[0], '/') != 0) && argv[0] != 0 && argv[0][0] != '/' && index (argv[0], '/') != 0)

25
tests/ChangeLog Normal file
View File

@ -0,0 +1,25 @@
1999-09-15 Paul D. Smith <psmith@gnu.org>
* scripts/features/parallelism: The second test output could
change depending on how fast some scripts completed; use "sleep"
to force the order we want.
* test_driver.pl (toplevel): A bug in Perl 5.000 to Perl 5.004
means that "%ENV = ();" doesn't do the right thing. This worked
in Perl 4 and was fixed in Perl 5.004_01, but use a loop to delete
the environment rather than require specific versions.
* run_make_tests.pl (set_more_defaults): Don't use Perl 5 s///
modifier "s", so the tests will run with Perl 4.
(set_more_defaults): Set $pure_log to empty if there's no -logfile
option in PURIFYOPTIONS.
(setup_for_test): Don't remove any logs unless $pure_log is set.
1999-09-15 Eli Zaretskii <eliz@is.elta.co.il>
* scripts/features/reinvoke: Put the SHELL definition in the right
test makefile.
1999-09-15 Paul D. Smith <psmith@gnu.org>
ChangeLog file for the test suite created.

View File

@ -8,8 +8,8 @@ infrastructure changes I've added a number of new tests.
Rob Tulloh has contributed changes to get the suite running on NT. Rob Tulloh has contributed changes to get the suite running on NT.
Eli Zaretski and Esa A E Peuha <peuha@cc.helsinki.fi> have contributed Eli Zaretskii and Esa A E Peuha <peuha@cc.helsinki.fi> have contributed
changes to the get the suite running on DJGPP/DOS. changes to get the suite running on DJGPP/DOS.
This package has a number of problems which preclude me from This package has a number of problems which preclude me from
distributing it with make as a default "make check" test suite. The distributing it with make as a default "make check" test suite. The

View File

@ -101,13 +101,11 @@ sub print_help
} }
sub get_this_pwd { sub get_this_pwd {
if ($vos) if ($vos) {
{
$delete_command = "delete_file"; $delete_command = "delete_file";
$__pwd = `++(current_dir)`; $__pwd = `++(current_dir)`;
} }
else else {
{
$delete_command = "rm"; $delete_command = "rm";
chop ($__pwd = `pwd`); chop ($__pwd = `pwd`);
} }
@ -141,8 +139,8 @@ sub set_more_defaults
$string = `$make_path -v -f /dev/null 2> /dev/null`; $string = `$make_path -v -f /dev/null 2> /dev/null`;
$string =~ s/[,\n].*/\n/s; $string =~ /^(GNU Make [^,\n]*)/;
$testee_version = $string; $testee_version = "$1\n";
$string = `sh -c "$make_path -f /dev/null 2>&1"`; $string = `sh -c "$make_path -f /dev/null 2>&1"`;
if ($string =~ /(.*): \*\*\* No targets\. Stop\./) { if ($string =~ /(.*): \*\*\* No targets\. Stop\./) {
@ -172,7 +170,8 @@ sub set_more_defaults
# Get Purify log info--if any. # Get Purify log info--if any.
($pure_log = $ENV{PURIFYOPTIONS}) =~ s,.*-logfile=([^ ]+) .*,\1,; $ENV{PURIFYOPTIONS} =~ /.*-logfile=([^ ]+)/;
$pure_log = $1 || '';
$pure_log =~ s/%v/$make_name/; $pure_log =~ s/%v/$make_name/;
$purify_errors = 0; $purify_errors = 0;
@ -188,16 +187,17 @@ sub set_more_defaults
sub setup_for_test sub setup_for_test
{ {
$makefile = &get_tmpfile; $makefile = &get_tmpfile;
if (-f $makefile) if (-f $makefile) {
{
unlink $makefile; unlink $makefile;
} }
# Get rid of any Purify logs. # Get rid of any Purify logs.
if ($pure_log) {
($pure_testname = $testname) =~ tr,/,_,; ($pure_testname = $testname) =~ tr,/,_,;
$pure_testname = "$pure_log.$pure_testname"; $pure_testname = "$pure_log.$pure_testname";
system("rm -f $pure_testname*"); system("rm -f $pure_testname*");
print("Purify testfiles are: $pure_testname*\n") if $debug; print("Purify testfiles are: $pure_testname*\n") if $debug;
} }
}
exit !&toplevel; exit !&toplevel;

View File

@ -60,15 +60,15 @@ all: 1 2 3; @echo success
-include 1.inc 2.inc 3.inc -include 1.inc 2.inc 3.inc
1.inc: ; @sleep 1; echo 1; echo "1: ; @echo $@ has been included" > $@ 1.inc: ; @sleep 1; echo 1; echo "1: ; @sleep 2; echo $@ has been included" > $@
2.inc: ; @sleep 2; echo 2; echo "2: ; @echo $@ has been included" > $@ 2.inc: ; @sleep 2; echo 2; echo "2: ; @echo $@ has been included" > $@
3.inc: ; @echo 3; echo "3: ; @echo $@ has been included" > $@ 3.inc: ; @echo 3; echo "3: ; @sleep 1; echo $@ has been included" > $@
EOF EOF
close(MAKEFILE); close(MAKEFILE);
&run_make_with_options("$makefile2", "-j 4", &get_logfile); &run_make_with_options("$makefile2", "-j 4", &get_logfile);
$answer = "3\n1\n2\n1.inc has been included\n2.inc has been included\n3.inc has been included\nsuccess\n"; $answer = "3\n1\n2\n2.inc has been included\n3.inc has been included\n1.inc has been included\nsuccess\n";
&compare_output($answer, &get_logfile(1)); &compare_output($answer, &get_logfile(1));
unlink('1.inc', '2.inc', '3.inc'); unlink('1.inc', '2.inc', '3.inc');

View File

@ -13,7 +13,6 @@ $makefile_orig = &get_tmpfile;
open(MAKEFILE,"> $makefile"); open(MAKEFILE,"> $makefile");
print MAKEFILE <<EOM; print MAKEFILE <<EOM;
SHELL = /bin/sh
all: ; \@echo 'running rules.' all: ; \@echo 'running rules.'
@ -51,6 +50,8 @@ $makefile3 = &get_tmpfile;
open(MAKEFILE, "> $makefile3"); open(MAKEFILE, "> $makefile3");
print MAKEFILE <<'EOM'; print MAKEFILE <<'EOM';
SHELL = /bin/sh
all: ; @echo hello all: ; @echo hello
a : b ; touch $@ a : b ; touch $@

View File

@ -36,7 +36,15 @@ sub toplevel
# Replace the environment with the new one # Replace the environment with the new one
# #
%origENV = %ENV; %origENV = %ENV;
%ENV = ();
# We used to say "%ENV = ();" but this doesn't work in Perl 5.000
# through Perl 5.004. It was fixed in Perl 5.004_01, but we don't
# want to require that here, so just delete each one individually.
foreach $v (keys %ENV) {
delete $ENV{$v};
}
%ENV = %makeENV; %ENV = %makeENV;
$| = 1; # unbuffered output $| = 1; # unbuffered output