2012-10-29  Paul Smith  <psmith@gnu.org>

	* scripts/features/load: New test suite for the "load" directive.

2012-09-09  Paul Smith  <psmith@gnu.org>

	* scripts/functions/file: Get errors in the C locale, not the
	current locale.  Fixes Savannah bug #35764.

	* scripts/features/escape: Check that backslashes before
	non-special characters are not removed.

	* scripts/features/utf8: New test for UTF-8 support.
	See Savannah bug #36529.

	* scripts/targets/POSIX: Add tests for default macro values as
	specified by IEEE Std 1003.1-2008.  See Savannah bug #37069.

2012-03-04  Paul Smith  <psmith@gnu.org>

	* scripts/features/se_explicit: Test $(x:%=%) format in secondary
	expansion prerequisite lists.  See Savannah bug #16545.

	* scripts/features/escape: Test escaped ":" in prerequisite lists.
	See Savannah bug #12126.

	* scripts/variables/private: Test appending private variables in
	pattern-specific target rules.  See Savannah bug #35468.

2012-03-03  Paul Smith  <psmith@gnu.org>

	* scripts/variables/SHELL: Ensure .SHELLFLAGS works with options
	separated by whitespace.

	* scripts/targets/ONESHELL: Try .ONESHELL in combination with
	whitespace-separated options in .SHELLFLAGS.  See Savannah bug #35397.

	* scripts/functions/filter-out: Add filter tests and test escape
	operations.  See Savannah bug #35410.

	* guile.supp: Suppress valgrind errors from Guile
	* run_make_tests.pl: Use the Guile suppression file.

	* scripts/misc/bs-nl: Check for POSIX and non-POSIX
	backslash/newline handling.  Addresses Savannah bug #16670.

2012-01-29  Paul Smith  <psmith@gnu.org>

	* scripts/variables/flavors: Add tests for ::=
	* scripts/variables/define: Ditto

	* scripts/functions/file: Test the new $(file ...) function.

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

	* scripts/functions/guile: New regression tests for Guile support.

2011-12-10  Paul Smith  <psmith@gnu.org>

	* scripts/targets/SECONDARY: Add prereq statements to ensure rules
	are printed in the right order for test #9

2011-11-14  Paul Smith  <psmith@gnu.org>

	* scripts/features/double_colon: Check double-colon with escaped
	filenames.  See Savannah bug #33399.

2011-09-18  Paul Smith  <psmith@gnu.org>

	* scripts/features/parallelism: On re-exec make sure we preserve
	the value of MAKEFLAGS when necessary.  See Savannah bug #33873.

	* scripts/features/vpath3: Verify handling of -lfoo libraries
	found via vpath vs. the standard directory search.
	See Savannah bug #32511.

2011-09-12  Paul Smith  <psmith@gnu.org>

	* scripts/functions/call: Verify that using export in a $(call ...)
	context creates a global variable.  See Savannah bug #32498.

2011-09-02  Paul Smith  <psmith@gnu.org>

	* scripts/options/dash-n: Verify that in "-n -t", the -n takes
	priority.  Patch from Michael Witten <mfwitten@gmail.com>.

2011-08-29  Paul Smith  <psmith@gnu.org>

	* scripts/features/varnesting: Test resetting of variables while
	expanding them.  See Savannah patch #7534

2011-06-12  Paul Smith  <psmith@gnu.org>

	* scripts/features/archives: Check archives with whitespace at the
	beginning, end, and extra in the middle.
	Another test for Savannah bug #30612.

2011-05-07  Paul Smith  <psmith@gnu.org>

	* scripts/variables/private: Ensure we skip private variables when
	appending.  Test for Savannah bug #32872.

	* scripts/functions/wildcard: Verify wildcard used to test for
	file existence/non-existence.

2011-05-02  Paul Smith  <psmith@gnu.org>

	* scripts/functions/sort: Add a test for Savannah bug #33125.

2011-04-17  David A. Wheeler  <dwheeler@dwheeler.com>

	* scripts/features/shell_assignment: Regression for "!=" feature

2010-11-06  Paul Smith  <psmith@gnu.org>

	* scripts/features/targetvars: Fix known-good output for BS/NL changes.
	* scripts/functions/call: Ditto.
	* scripts/variables/special: Ditto.

	* scripts/misc/bs-nl: New test suite for backslash/newline testing.

2010-08-29  Paul Smith  <psmith@gnu.org>

	* scripts/features/errors: Add new error message to output text.
	* scripts/variables/SHELL: Ditto.
	* scripts/targets/POSIX: Ditto.
	* scripts/options/dash-k: Ditto.
	* scripts/features/vpathplus: Ditto.
	* scripts/features/patternrules: Ditto.
	* scripts/features/parallelism: Ditto.

2010-08-13  Paul Smith  <psmith@gnu.org>

	* scripts/features/archives: New regression tests for archive
	support.  Test for fix to Savannah bug #30612.

	* run_make_tests.pl (set_more_defaults): Set a %FEATURES hash to
	the features available in $(.FEATURES).

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

	* scripts/features/reinvoke: Ensure command line variable settings
	are preserved across make re-exec.  Tests Savannah bug #30723.

2010-07-28  Paul Smith  <psmith@gnu.org>

	* scripts/targets/POSIX: Compatibility issues with Solaris (and
	Tru64?); "false" returns different exit codes, and set -x shows
	output with extra whitespace.  Run the commands by hand first to
	find out what the real shell would do, then compare what make does.
	* scripts/variables/SHELL: Ditto.

2010-07-12  Paul Smith  <psmith@gnu.org>

	* test_driver.pl: Add a new $perl_name containing the path to Perl.
	* run_make_tests.pl (run_make_test): Replace the special string
	#PERL# in a makefile etc. with the path the Perl executable so
	makefiles can use it.

	* scripts/targets/ONESHELL: Add a new set of regression tests for
	the .ONESHELL feature.

2010-07-06  Paul Smith  <psmith@gnu.org>

	* scripts/variables/SHELL: Test the new .SHELLFLAGS variable.

	* scripts/targets/POSIX: New file.  Test the .POSIX special target.
	Verify that enabling .POSIX changes the shell flags to set -e.

2010-07-01  Paul Smith  <psmith@gnu.org>

	* scripts/features/recursion: Add a space to separate command-line
	args.  Fixes Savannah bug #29968.

2009-11-12  Boris Kolpackov  <boris@codesynthesis.com>

	* scripts/features/vpath3: Test for the new library search
	behavior.

2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>

	* scripts/features/se_explicit: Enable the test for now fixed
	Savannah bug 25780.

2009-10-06  Boris Kolpackov  <boris@codesynthesis.com>

	* scripts/variables/undefine: Tests for the new undefine feature.

2009-10-03  Paul Smith  <psmith@gnu.org>

	* scripts/features/parallelism: Test for open Savannah bug #26846.

	* scripts/variables/MAKE: Rewrite for new run_make_test() format.

	* scripts/variables/MAKEFLAGS: Created.
	Add test for Savannah bug #2216 (still open).

	* scripts/features/include: Test for Savannah bug #102 (still open).

2009-09-30  Boris Kolpackov  <boris@codesynthesis.com>

	* scripts/features/include: Add diagnostics issuing tests for
	cases where targets have been updated and failed with the
	dontcare flag. Savannah bugs #15110, #25493, #12686, #17740.

2009-09-28  Paul Smith  <psmith@gnu.org>

	* scripts/functions/shell: Add regression test for Savannah bug
	#20513 (still open).

	* scripts/features/se_explicit: Add regression tests for Savannah
	bug #25780 (still open).

	* run_make_tests.pl (valid_option): Add a new flag, -all([-_]?tests)?
	that runs tests we know will fail.  This allows us to add
	regression tests to the test suite for bugs that haven't been
	fixed yet.

2009-09-28  Boris Kolpackov  <boris@codesynthesis.com>

	* scripts/features/patspecific_vars: Add a test for the shortest
	stem first order.

	* scripts/features/patternrules: Add a test for the shortest stem
	first order.

2009-09-24  Paul Smith  <psmith@gnu.org>

	* scripts/features/se_implicit: Add a test for order-only
	secondary expansion prerequisites.

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

	* scripts/features/patternrules: Test that we can remove pattern
	rules, both single and multiple prerequisites.  Savannah bug #18622.

	* scripts/features/echoing: Rework for run_make_test().

2009-06-14  Paul Smith  <psmith@gnu.org>

	* scripts/features/vpath: Verify we don't get bogus circular
	dependency warnings if we choose a different file via vpath during
	update.  Savannah bug #13529.

2009-06-13  Paul Smith  <psmith@gnu.org>

	* scripts/variables/MAKEFILES: Verify that MAKEFILES included
	files (and files included by them) don't set the default goal.
	Savannah bug #13401.

	* scripts/functions/wildcard: Test that wildcards with
	non-existent glob matchers return empty.

2009-06-09  Paul Smith  <psmith@gnu.org>

	* scripts/options/dash-B: Test the $? works correctly with -B.
	Savannah bug #17825.

	* scripts/features/patternrules: Test that dependencies of
	"also_make" targets are created properly.  Savannah bug #19108.

	* test_driver.pl (compare_output): Create a "run" file for failed
	tests containing the command that was run.
	(get_runfile): New function.

	* run_make_tests.pl (valid_option): Enhanced support for valgrind:
	allow memcheck and massif tools.

	* scripts/features/patternrules: Have to comment out a line in the
	first test due to backing out a change that broke the implicit
	rule search algorithm.  Savannah bug #17752.
	* scripts/misc/general4: Remove a test that is redundant with
	patternrules.

	* scripts/features/parallelism: Add a test for re-exec with
	jobserver master override.  Savannah bug #18124.

2009-06-08  Paul Smith  <psmith@gnu.org>

	* scripts/features/targetvars: Add a test for continued target
	vars after a semicolon.  Savannah bug #17521.

2009-06-07  Paul Smith  <psmith@gnu.org>

	* scripts/features/se_explicit: Make sure we catch defining
	prereqs during snap_deps().  Savannah bug #24622.

	* scripts/variables/automatic: Check prereq ordering when the
	target with the recipe has no prereqs.  Savannah bug #21198.

	* scripts/variables/LIBPATTERNS: Add a new set of test for
	$(.LIBPATTERNS) (previously untested!)

2009-06-04  Paul Smith  <psmith@gnu.org>

	* scripts/variables/SHELL: The export target-specific SHELL test
	has an incorrect known-good-value.

	* scripts/misc/general4: Check for whitespace (ffeed, vtab, etc.)

	* scripts/features/se_explicit: Add tests for Savannah bug #24588.

2009-05-31  Paul Smith  <psmith@gnu.org>

	* scripts/variables/DEFAULT_GOAL: Add tests for Savannah bug #25697.

	* scripts/features/targetvars: Add tests of overrides for Savannah
	bug #26207.
	* scripts/features/patspecific_vars: Ditto.

	* scripts/features/patternrules: Add a test for Savannah bug #26593.

2009-05-30  Paul Smith  <psmith@gnu.org>

	* scripts/variables/flavors: Update with new variable flavor tests.
	* scripts/variables/define: Create a new set of tests for
	define/endef and move those aspects of the flavors suite here.

2009-05-25  Paul Smith  <psmith@gnu.org>

	* scripts/features/targetvars: Ditto.

	* scripts/features/export: Test new variable parsing abilities.

2009-02-23  Ramon Garcia  <ramon.garcia.f@gmail.com>

	* scripts/variables/private: Create a new suite of tests for 'private'.

2007-11-04  Paul Smith  <psmith@gnu.org>

	* scripts/functions/eval: Update error message for command -> recipe.

	* test_driver.pl (compare_output): Allow the answer to be a regex,
	if surrounded by '/'.
	* scripts/misc/close_stdout: Use a regex for the answer, since
	sometimes the error will have a description and sometimes it won't.

2007-09-10  Paul Smith  <psmith@gnu.org>

	* scripts/variables/special: Add tests for .RECIPEPREFIX variable.

2007-08-15  Paul Smith  <psmith@gnu.org>

	These test cases were contributed by
	Icarus Sparry <savannah@icarus.freeuk.com> and J. David Bryan for
	Savannah bugs #3330 and #15919.

	* scripts/targets/SECONDARY: Add tests for Savannah bugs 3330 and
	15919.

	* scripts/features/parallelism: Add tests for wrong answer/hang
	combining INTERMEDIATE, order-only prereqs, and parallelism.
	See Savannah bugs 3330 and 15919.

2007-07-13  Paul Smith  <psmith@gnu.org>

	Install a timeout so tests can never loop infinitely.
	Original idea and patch for a single-test version provided by
	Icarus Sparry <savannah@icarus.freeuk.com>

	* test_driver.pl (_run_command): New function: this is called by
	other functions to actually run a command.  Before we run it,
	install a SIGALRM handler and set up a timer to go off in the
	future (default is 5s; this can be overridden by individual tests).
	(run_command): Call it.
	(run_command_with_output): Call it.

	* run_make_tests.pl (run_make_with_options): Override the default
	timeout if the caller requests it.
	(run_make_test): Pass any timeout override to run_make_with_options.

	* scripts/features/parallelism: Increase the timeout for long tests.
	* scripts/options/dash-l: Ditto.

2006-10-01  Paul Smith  <psmith@paulandlesley.org>

	* run_make_tests.pl (set_more_defaults): Remove setting of LANG in
	ENV here.  This doesn't always work.
	* test_driver.pl (toplevel): Set LC_ALL to 'C' in the make
	environment.  Fixes Savannah bug #16698.

2006-09-30  Paul Smith  <psmith@paulandlesley.org>

	* scripts/variables/automatic: Add back the test for bug #8154.

2006-04-01  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/realpath: Don't run tests with multiple
	initial slashes on Windows: those paths mean something different.

2006-03-19  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/parallelism: Test that the jobserver is
	properly managed when we have to re-exec the master instance of
	make.

2006-03-17  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/statipattrules: Add tests for bug #16053.

2006-03-09  Paul Smith  <psmith@gnu.org>

	* scripts/features/escape: Use "pre:" not "p:" to avoid conflicts
	with DOS drive letters.  Fixes Savannah bug #15947.

	* test_driver.pl (run_each_test): Set the status properly even
	when a test fails to execute.  Fixes Savannah bug #15942.

	* scripts/functions/foreach: Use a different environment variable
	other than PATH to avoid differences with Windows platforms.
	Fixes Savannah bug #15938.

2006-03-05  Paul D. Smith  <psmith@gnu.org>

	* run_make_tests.pl (set_more_defaults): Add CYGWIN_NT as a port
	type W32.  Fixed Savannah bug #15937.

	* scripts/features/default_names: Don't call error() when the test
	fails.  Fixes Savannah bug #15941.

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

	* scripts/features/targetvars: Test a complex construction which
	guarantees that we have to merge variable lists of different
	sizes.  Tests for Savannah bug #15757.

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

	* scripts/functions/error: Make sure filename/lineno information
	is related to where the error is expanded, not where it's set.
	* scripts/functions/warning: Ditto.
	* scripts/functions/foreach: Check for different error conditions.
	* scripts/functions/word: Ditto.
	* scripts/variables/negative: Test some variable reference failure
	conditions.
	* scripts/options/warn-undefined-variables: Test the
	--warn-undefined-variables flag.

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

	* run_make_tests.pl (set_more_defaults): Update valgrind support
	for newer versions.
	* test_driver.pl (toplevel): Skip all hidden files/directories (ones
	beginning with ".").

	* scripts/functions/andor: Tests for $(and ..) and $(or ...)
	functions.

2006-02-08  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/parallelism: Add a test for bug #15641.

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

	* scripts/options/dash-W: Add a test for bug #15341.

2006-01-03  Paul D. Smith  <psmith@gnu.org>

	* scripts/variables/automatic: Add a test for bug #8154.

	* README: Update to reflect the current state of the test suite.

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

	* scripts/features/parallelism, scripts/functions/wildcard,
	scripts/targets/FORCE, scripts/targets/PHONY,
	scripts/targets/SILENT: Use the default setting for
	$delete_command.  Fixes bug #15085.

	* run_make_tests.pl (get_this_pwd) [VMS]: Use -no_ask with delete_file.

2005-12-11  Paul D. Smith  <psmith@gnu.org>

	* scripts/misc/general4: Test implicit rules with '$' in the
	prereq list & prereq patterns.
	* scripts/features/se_implicit: Add in .SECONDEXPANSION settings.

2005-12-09  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/patternrules: Add a test for bug #13022.

2005-12-07  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/double_colon: Add a test for bug #14334.

2005-11-17  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/functions/flavor: Add a test for the flavor function.

2005-11-14  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/variables/INCLUDE_DIRS: Add a test for the .INCLUDE_DIRS
	special variable.

2005-10-24  Paul D. Smith  <psmith@gnu.org>

	* scripts/misc/general4: Test '$$' in prerequisites list.
	* scripts/features/statipattrules: Rewrite to use run_make_test().
	Add various static pattern info.
	* scripts/features/se_statpat: Enable .SECONDEXPANSION target.
	* scripts/features/se_explicit: Add tests for handling '$$' in
	prerequisite lists with and without setting .SECONDEXPANSION.
	* scripts/features/order_only: Convert to run_make_test().
	* run_make_tests.pl (set_more_defaults): If we can't get the value
	of $(MAKE) from make, then fatal immediately.

2005-08-31  Paul D. Smith  <psmith@gnu.org>

	* run_make_tests.pl (get_this_pwd): Require the POSIX module (in
	an eval to trap errors) and if it exists, use POSIX::getcwd to
	find the working directory.  If it doesn't exist, go back to the
	previous methods.  This tries to be more accurate on Windows
	systems.

2005-08-29  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/abspath: Add some text to the error messages
	to get a better idea of what's wrong.  Make warnings instead of
	errors.

	* scripts/features/patspecific_vars: Don't use "test", which is
	UNIX specific.  Print the values and let the test script match
	them.

2005-08-25  Paul Smith  <psmith@gnu.org>

	* scripts/variables/SHELL: Use a /./ prefix instead of //: the
	former works better with non-UNIX environments.  Fixes Savannah
	bug #14129.

2005-08-13  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/functions/wildcard: Wrap calls to $(wildcard ) with
	$(sort) so that the resulting order is no longer filesystem-
	dependant.

2005-08-10  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/statipattrules: Add a test for Savannah bug #13881.

2005-08-07  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/parallelism: Add a test for a bug reported by
	Michael Matz (matz@suse.de) in which make exits without waiting
	for all its children in some situations during parallel builds.

2005-07-08  Paul D. Smith  <psmith@gnu.org>

	* test_driver.pl: Reset the environment to a clean value every
	time before we invoke make.  I'm suspicious that the environment
	isn't handled the same way in Windows as it is in UNIX, and some
	variables are leaking out beyond the tests they are intended for.
	Create an %extraENV hash tests can set to add more env. vars.
	* tests/scripts/features/export: Change to use %extraENV.
	* tests/scripts/functions/eval: Ditto.
	* tests/scripts/functions/origin: Ditto.
	* tests/scripts/options/dash-e: Ditto.
	* tests/scripts/variables/SHELL: Ditto.

2005-06-27  Paul D. Smith  <psmith@gnu.org>

	* scripts/options/dash-W: Use 'echo >>' instead of touch to update
	files.
	* scripts/features/reinvoke: Rewrite to be safer on systems with
	subsecond timestamps.
	* scripts/features/patternrules: False exits with different error
	codes on different systems (for example, Linux => 1, Solaris => 255).

	* scripts/options/dash-W: Set the timestamp to foo.x in the future,
	to be sure it will be considered updated when it's remade.

2005-06-26  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/shell: New test suite for the shell function.

2005-06-25  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/include: Test include/-include/sinclude with no
	arguments.  Tests fix for Savannah bug #1761.

	* scripts/misc/general3: Implement comprehensive testing of
	backslash-newline behavior in command scripts: various types of
	quoting, fast path / slow path, etc.
	Tests fix for Savannah bug #1332.

	* scripts/options/symlinks: Test symlinks to non-existent files.
	Tests fix for Savannah bug #13280.

	* scripts/misc/general3: Test semicolons in variable references.
	Tests fix for Savannah bug #1454.

	* scripts/variables/MAKE_RESTARTS: New file: test the
	MAKE_RESTARTS variable.
	* scripts/options/dash-B: Test re-exec doesn't loop infinitely.
	Tests fix for Savannah bug #7566.
	* scripts/options/dash-W: New file: test the -W flag, including
	re-exec infinite looping.

2005-06-12  Paul D. Smith  <psmith@gnu.org>

	* scripts/misc/close_stdout: Add a test for Savannah bug #1328.
	This test only works on systems that have /dev/full (e.g., Linux).

2005-06-09  Paul D. Smith  <psmith@gnu.org>

        * scripts/functions/foreach: Add a test for Savannah bug #11913.

2005-05-31  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/include: Add a test for Savannah bug #13216.
	* scripts/features/patternrules: Add a test for Savannah bug #13218.

2005-05-13  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/conditionals: Add tests for the new if... else
	if... endif syntax.

2005-05-03  Paul D. Smith  <psmith@gnu.org>

	* scripts/variables/DEFAULT_GOAL: Rename DEFAULT_TARGET to
	DEFAULT_GOAL.

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

	* scripts/features/parallelism: Add a test for exporting recursive
	variables containing $(shell ) calls.  Rewrite this script to use
	run_make_test() everywhere.

2005-04-07  Paul D. Smith  <psmith@gnu.org>

	* scripts/targets/SECONDARY: Add a test for Savannah bug #12331.

2005-03-15  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/variables/automatic: Add a test for Savannah bug #12320.

2005-03-10  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/patternrules: Add a test for Savannah bug #12267.

2005-03-09  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/variables/DEFAULT_TARGET: Add a test for Savannah
	bug #12266.

2005-03-04  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/patternrules: Add a test for Savannah bug #12202.

2005-03-03  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/se_implicit: Add a test for stem
	termination bug. Add a test for stem triple-expansion bug.

	* scripts/features/se_statpat: Add a test for stem
	triple-expansion bug.

	* scripts/features/statipattrules: Change test #4 to reflect
	new way empty prerequisite list is handled.


2005-03-01  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/statipattrules: Add a test for
	Savannah bug #12180.

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

	* scripts/options/dash-q: Add a test for Savannah bug # 7144.

	* scripts/options/symlinks: New file to test checking of symlink
	timestamps.  Can't use filename dash-L because it conflicts with
	dash-l on case-insensitive filesystems.

	* scripts/variables/MAKEFILE_LIST, scripts/variables/MFILE_LIST:
	Rename MAKEFILE_LIST test to MFILE_LIST, for systems that need 8.3
	unique filenames.

2005-02-28  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/variables/DEFAULT_TARGET: Test the .DEFAULT_TARGET
	special variable.

2005-02-27  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/se_explicit: Test the second expansion in
	explicit rules.
	* scripts/features/se_implicit: Test the second expansion in
	implicit rules.
	* scripts/features/se_statpat: Test the second expansion in
	static pattern rules.
	* scripts/variables/automatic: Fix to work with the second
	expansion.

	* scripts/misc/general4: Add a test for bug #12091.

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

	* scripts/functions/eval: Check that eval of targets within
	command scripts fails.  See Savannah bug # 12124.

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

	* test_driver.pl (compare_output): If a basic comparison of the
	log and answer doesn't match, try harder: change all backslashes
	to slashes and all CRLF to LF.  This helps on DOS/Windows systems.

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

	* scripts/features/recursion: Test command line variable settings:
	only one instance of a given variable should be provided.

2004-11-30  Boris Kolpackov  <boris@kolpackov.net>

	* tests/scripts/functions/abspath: New file: test `abspath'
	built-in function.

	* tests/scripts/functions/realpath: New file: test `realpath'
	built-in function.

2004-11-28  Paul D. Smith  <psmith@gnu.org>

	* scripts/options/dash-C [WINDOWS32]: Add a test for bug #10252;
	this doesn't really test anything useful in UNIX but...

	* scripts/variables/SHELL: New file: test proper handling of SHELL
	according to POSIX rules.  Fixes bug #1276.

2004-10-21  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/functions/word: Test $(firstword ) and $(lastword ).

2004-10-05  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/patspecific_vars: Test simple/recursive
	variable expansion.

2004-09-28  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/include: Test dontcare flag inheritance
	when rebuilding makefiles.

2004-09-27  Boris Kolpackov  <boris@kolpackov.net>

	* scripts/features/patspecific_vars: Test exported variables.

2004-09-22  Paul D. Smith  <psmith@gnu.org>

	* run_make_tests.pl (run_make_test): Don't add newlines to the
	makestring or answer if they are completely empty.

	* scripts/features/patternrules: Rename from implicit_prereq_eval.

	* scripts/test_template: Rework the template.

2004-09-21  Boris Kolpackov  <boris@kolpackov.net>

	* run_make_tests.pl: Change `#!/usr/local/bin/perl' to be
	`#!/usr/bin/env perl'.

	* scripts/features/implicit_prereq_eval: Test implicit rule
	prerequisite evaluation code.

2004-09-21  Paul D. Smith  <psmith@gnu.org>

	* run_make_tests.pl (run_make_test): Enhance to allow the make
	string to be undef: in that case it reuses the previous make
	string.  Allows multiple tests on the same makefile.

	* scripts/variables/flavors: Add some tests for prefix characters
	interacting with define/endef variables.

2004-09-20  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/substitution: Rewrite to use run_make_test()
	interface, and add test for substitution failures reported by
	Markus Mauhart <qwe123@chello.at>.

2004-03-22  Paul D. Smith  <psmith@gnu.org>

	* test_driver.pl (run_each_test, toplevel, compare_output): Change
	to track both the testing categories _AND_ the number of
	individual tests, and report both sets of numbers.

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

	* scripts/functions/origin: Set our own environment variable
	rather than relying on $HOME.

2004-01-21  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/conditionals: Test arguments to ifn?def which
	contain whitespace (such as a function that is evaluated).  Bug
	#7257.

2004-01-07  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/order_only: Test order-only prerequisites in
	pattern rules (patch #2349).

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

	* scripts/functions/if: Test if on conditionals with trailing
	whitespace--bug #5798.

	* scripts/functions/eval: Test eval in a non-file context--bug #6195.

2003-04-19  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/patspecific_vars: Test multiple patterns
	matching the same target--Bug #1405.

2003-04-09  Paul D. Smith  <psmith@gnu.org>

	* run_make_tests.pl (set_more_defaults): A new $port_type of
	'OS/2' for (surprise!) OS/2.  Also choose a wait time of 2 seconds
	for OS/2.

2003-03-28  Paul D. Smith  <psmith@gnu.org>

	* scripts/targets/SECONDARY: Test the "global" .SECONDARY (with
	not prerequisites)--Bug #2515.

2003-01-30  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/targetvars: Test very long target-specific
	variable definition lines (longer than the default make buffer
	length).  Tests patch # 1022.

	* scripts/functions/eval: Test very recursive $(eval ...) calls
	with simple variable expansion (bug #2238).

	* scripts/functions/word: Test error handling for word and
	wordlist functions (bug #2407).

2003-01-22  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/call: Test recursive argument masking (bug
	#1744).

2002-10-25  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/eval: Test using $(eval ...) inside
	conditionals (Bug #1516).

2002-10-14  Paul D. Smith  <psmith@gnu.org>

	* scripts/options/dash-t: Add a test for handling -t on targets
	with no commands (Bug #1418).

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

	* scripts/features/targetvars: Add a test for exporting
	target-specific vars (Bug #1391).

2002-10-05  Paul D. Smith  <psmith@gnu.org>

	* scripts/variables/automatic: Add tests for $$(@), $${@}, $${@D},
	and $${@F}.

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

	* scripts/features/escape: Test handling of escaped comment
	characters in targets and prerequisites.

2002-09-18  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/export: Test export/unexport of multiple
	variables in a single command.

2002-09-17  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/targetvars: Tests for Bug #940: test
	target-specific and pattern-specific variables in conjunction with
	double-colon targets.

2002-09-10  Paul D. Smith  <psmith@gnu.org>

	* test_driver.pl (compare_output): Match the new format for time
	skew error messages.

	* scripts/features/export: Created.  Add tests for export/unexport
	capabilities, including exporting/unexporting expanded variables.

	* scripts/features/conditionals: Add a test for expanded variables
	in ifdef conditionals.

2002-09-04  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/reinvoke: Change touch/sleep combos to utouch
	invocations.
	* scripts/features/vpathgpath: Ditto.
	* scripts/features/vpathplus: Ditto.
	* scripts/options/dash-n: Ditto.
	* scripts/targets/INTERMEDIATE: Ditto.
	* scripts/targets/SECONDARY: Ditto.

	* scripts/options/dash-t: Added a test for the -t bug fixed by
	Henning Makholm.  This test was also contributed by Henning.

	* scripts/misc/general4: Add a test suite for obscure algorithmic
	features of make.  First test: make sure creation subdirectories
	as prerequisites of targets works properly.

	* scripts/misc/version: Remove this bogus test.

2002-08-07  Paul D. Smith  <psmith@gnu.org>

	* scripts/misc/general3: Add a test for makefiles that don't end
	in newlines.

	* scripts/variables/special: Create tests for the special
	variables (.VARIABLES and .TARGETS).  Comment out .TARGETS test
	for now as it's not yet supported.

2002-08-01  Paul D. Smith  <psmith@gnu.org>

	* scripts/options/dash-B: Add a test for the new -B option.

2002-07-11  Paul D. Smith  <psmith@gnu.org>

	* run_make_tests.pl (valid_option): Add support for Valgrind.  Use
	-valgrind option to the test suite.
	(set_more_defaults): Set up the file descriptor to capture
	Valgrind output.  We have to unset its close-on-exec flag; we
	hardcode the value for F_SETFD (2) rather than load it; hopefully
	this will help us avoid breaking the Windows/DOS test suite.

2002-07-10  Paul D. Smith  <psmith@gnu.org>

	* scripts/variables/automatic: Add some tests for $$@, $$(@D), and
	$$(@F).

	* test_driver.pl (utouch): Create a new function that creates a
	file with a specific timestamp offset.  Use of this function will
	let us avoid lots of annoying sleep() invocations in the tests
	just to get proper timestamping, which will make the tests run a
	lot faster.  So far it's only used in the automatic test suite.

2002-07-09  Paul D. Smith  <psmith@gnu.org>

	* scripts/variables/automatic: Create a test for automatic variables.

2002-07-08  Paul D. Smith  <psmith@gnu.org>

	* scripts/features/order_only: Test new order-only prerequisites.

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

	* scripts/functions/eval: Test new function.
	* scripts/functions/value: Test new function.
	* scripts/variables/MAKEFILE_LIST: Test new variable.

2002-04-28  Paul D. Smith  <psmith@gnu.org>

	* scripts/functions/call: New test: transitive closure
	implementation using $(call ...) to test variable recursion.

2002-04-21  Paul D. Smith  <psmith@gnu.org>

	* test_driver.pl (compare_dir_tree): Ignore CVS and RCS
	directories in the script directories.

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

	* scripts/variables/flavors: Test define/endef scripts where only
	one of the command lines is quiet.

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

	* scripts/options/dash-q: New file; test the -q option.  Includes
	a test for PR/1780.

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

	* scripts/features/targetvars: Added a test for PR/1709: allowing
	semicolons in target-specific variable values.

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

	* scripts/functions/addsuffix: Test for an empty final argument.
	Actually this bug might have happened for any function, but this
	one was handy.

2000-06-17  Eli Zaretskii  <eliz@is.elta.co.il>

	* scripts/options/general: If parallel jobs are not supported,
	expect a warning message from Make.

2000-06-15  Eli Zaretskii  <eliz@is.elta.co.il>

	* scripts/options/general: Don't try -jN with N != 1 if parallel
	jobs are not supported.

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

	* scripts/options/general: Test general option processing (PR/1716).

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

	* scripts/functions/strip: Test empty value to strip (PR/1689).

2000-04-08  Eli Zaretskii  <eliz@is.elta.co.il>

	* scripts/features/reinvoke: Sleep before updating the target
	files in the first test, to ensure its time stamp really gets
	newer; otherwise Make might re-exec more than once.

2000-04-07  Eli Zaretskii  <eliz@is.elta.co.il>

	* scripts/features/double_colon: Don't run the parallel tests if
	parallel jobs aren't supported.

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

	* scripts/functions/word: wordlist doesn't swap arguments anymore.

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/options/dash-n: Ditto.

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

Copyright (C) 1992-2012 Free Software Foundation, Inc.
This file is part of GNU Make.

GNU Make 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.

GNU Make 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/>.
