2000-03-27  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/statipattrules: Test that static pattern rules
	whose prerequisite patterns resolve to empty strings throw an
	error (instead of dumping core).  Fixes PR/1670.

	* scripts/features/reinvoke: Make more robust by touching "b"
	first, to ensure it's not newer than "a".
	Reported by Marco Franzen <Marco.Franzen@Thyron.com>.

	* scripts/functions/call: Whoops.  The fix to PR/1527 caused
	recursive invocations of $(call ...) to break.  I can't come up
	with any way to get both working at the same time, so I backed out
	the fix to 1527 and added a test case for recursive calls.  This
	also tests the fix for PR/1610.

	* scripts/features/double_colon: Test that circular dependencies
	in double-colon rule sets are detected correctly (PR/1671).

2000-03-26  Paul D. Smith  <psmith@gnu.org>

	* scripts/targets/INTERMEDIATE: Test that make doesn't remove
	.INTERMEDIATE files when given on the command line (PR/1669).

2000-03-08  Paul D. Smith  <psmith@gnu.org>

	* scripts/options/dash-k: Add a test for error detection by
	multiple targets depending on the same prerequisite with -k.
	For PR/1634.

2000-02-07  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/escape: Add a test for backslash-escaped spaces
	in a target name (PR/1586).

2000-02-04  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/patspecific_vars: Add a test for pattern-specific
	target variables inherited from the parent target (PR/1407).

2000-02-02  Paul D. Smith  <psmith@gnu.org>

	* run_make_tests.pl (set_more_defaults): Hard-code the LANG to C
	to make sure sorting order, etc. is predictable.
	Reported by Andreas Jaeger <aj@suse.de>.

	* run_make_tests.pl (set_more_defaults): Set the $wtime variable
	depending on the OS.  Eli Zaretskii <eliz@is.elta.co.il> reports
	this seems to need to be *4* on DOS/Windows, not just 2.  Keep it
	1 for other systems.
	* scripts/features/vpathplus (touchfiles): Use the $wtime value
	instead of hardcoding 2.
	* scripts/targets/SECONDARY: Ditto.
	* scripts/targets/INTERMEDIATE: Ditto.

2000-01-27  Paul D. Smith  <psmith@gnu.org>

	* test_driver.pl (toplevel): Don't try to run test scripts which
	are really directories.

2000-01-23  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/include: Remove a check; the fix caused more
	problems than the error, so I removed it and removed the test for
	it.

2000-01-11  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/call: Add a test for PR/1517 and PR/1527: make
	sure $(call ...) doesn't eval its arguments and that you can
	invoke foreach from it without looping forever.

1999-12-15  Paul D. Smith  <psmith@gnu.org>

	* scripts/targets/INTERMEDIATE: Add a test for PR/1423: make sure
	.INTERMEDIATE settings on files don't disable them as implicit
	intermediate possibilities.

1999-12-01  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/double_colon: Add a test for PR/1476: Try
	double-colon rules as non-goal targets and during parallel builds
	to make sure they're handled serially.

1999-11-17  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/if: Add a test for PR/1429: put some text
	after an if-statement to make sure it works.

	* scripts/features/targetvars: Add a test for PR/1380: handling +=
	in target-specific variable definitions correctly.

1999-10-15  Paul D. Smith  <psmith@gnu.org>

	* scripts/variables/MAKEFILES: This was really broken: it didn't
	test anything at all, really.  Rewrote it, plus added a test for
	PR/1394.

1999-10-13  Paul D. Smith  <psmith@gnu.org>

	* scripts/options/dash-n: Add a test for PR/1379: "-n doesn't
	behave properly when used with recursive targets".

1999-10-08  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/targetvars: Add a check for PR/1378:
	"Target-specific vars don't inherit correctly"

1999-09-29  Paul D. Smith  <psmith@gnu.org>

	* test_driver.pl (get_osname): Change $fancy_file_names to
	$short_filenames and reverse the logic.
	(run_each_test): Change test of non-existent $port_host to use
	$short_filenames--problem reported by Eli Zaretskii.

1999-09-23  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/parallelism: Add a check to ensure that the
	jobserver works when we re-invoke.  Also cleaned up the tests a
	little, reducing the number of rules we use so the test won't need
	as many "sleep" commands.

1999-09-16  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/reinvoke: Remove invocations of "touch" in
	makefiles.  See the comments on the touch function rewrite below.
	Note that UNIX touch behaves the same way if the file already
	exists: it sets the time to the _local_ time.  We don't want
	this.  This is probably a good tip for makefile writers in
	general, actually... where practical.
	* scripts/options/dash-l: Ditto.
	* scripts/options/dash-n: Ditto.

	* test_driver.pl (run_each_test): In retrospect, I don't like the
	.lN/.bN/.dN postfix required by DOS.  So, for non-DOS systems I
	changed it back to use .log, .base, and .diff.

	* run_make_tests.pl (set_more_defaults): Move the check for the
	make pathname to here from set_defaults (that's too early since it
	happens before the command line processing).
	Create a new variable $port_type, calculated from $osname, to
	specify what kind of system we're running on.  We should integrate
	the VOS stuff here, too.
	(valid_option): Comment out the workdir/-work stuff so people
	won't be fooled into thinking it works... someone needs to fix
	this, though!

	* scripts/functions/origin: Use $port_type instead of $osname.
	* scripts/functions/foreach: Ditto.
	* scripts/features/default_names: Ditto.

1999-09-15  Paul D. Smith  <psmith@gnu.org>

	* test_driver.pl (touch): Rewrite this function.  Previously it
	used to use utime() to hard-set the time based on the current
	local clock, or, if the file didn't exist, it merely created it.
	This mirrors exactly what real UNIX touch does, but it fails badly
	on networked filesystems where the FS server clock is skewed from
	the local clock: normally modifying a file causes it to get a mod
	time based on the _server's_ clock.  Hard-setting it based on the
	_local_ clock causes gratuitous errors and makes the tests
	unreliable except on local filesystems.  The new function will
	simply modify the file, allowing the filesystem to set the mod
	time as it sees fit.

	* 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.
