head	1.5;
access;
symbols
	RELENG_8_4:1.5.0.2
	RELENG_9_1_0_RELEASE:1.3.28.1.4.2
	RELENG_9_1:1.3.28.1.0.4
	RELENG_9_1_BP:1.3.28.1
	RELENG_8_3_0_RELEASE:1.3.22.1.8.1
	RELENG_8_3:1.3.22.1.0.8
	RELENG_8_3_BP:1.3.22.1
	RELENG_9_0_0_RELEASE:1.3.28.1.2.1
	RELENG_9_0:1.3.28.1.0.2
	RELENG_9_0_BP:1.3.28.1
	RELENG_9:1.3.0.28
	RELENG_9_BP:1.3
	RELENG_7_4_0_RELEASE:1.3.26.1
	RELENG_8_2_0_RELEASE:1.3.22.1.6.1
	RELENG_7_4:1.3.0.26
	RELENG_7_4_BP:1.3
	RELENG_8_2:1.3.22.1.0.6
	RELENG_8_2_BP:1.3.22.1
	RELENG_8_1_0_RELEASE:1.3.22.1.4.1
	RELENG_8_1:1.3.22.1.0.4
	RELENG_8_1_BP:1.3.22.1
	RELENG_7_3_0_RELEASE:1.3.24.1
	RELENG_7_3:1.3.0.24
	RELENG_7_3_BP:1.3
	RELENG_8_0_0_RELEASE:1.3.22.1.2.1
	RELENG_8_0:1.3.22.1.0.2
	RELENG_8_0_BP:1.3.22.1
	RELENG_8:1.3.0.22
	RELENG_8_BP:1.3
	RELENG_7_2_0_RELEASE:1.3.20.1
	RELENG_7_2:1.3.0.20
	RELENG_7_2_BP:1.3
	RELENG_7_1_0_RELEASE:1.3.18.1
	RELENG_6_4_0_RELEASE:1.3.16.1
	RELENG_7_1:1.3.0.18
	RELENG_7_1_BP:1.3
	RELENG_6_4:1.3.0.16
	RELENG_6_4_BP:1.3
	RELENG_7_0_0_RELEASE:1.3
	RELENG_6_3_0_RELEASE:1.3
	RELENG_7_0:1.3.0.14
	RELENG_7_0_BP:1.3
	RELENG_6_3:1.3.0.12
	RELENG_6_3_BP:1.3
	RELENG_7:1.3.0.10
	RELENG_7_BP:1.3
	RELENG_6_2_0_RELEASE:1.3
	RELENG_6_2:1.3.0.8
	RELENG_6_2_BP:1.3
	RELENG_6_1_0_RELEASE:1.3
	RELENG_6_1:1.3.0.6
	RELENG_6_1_BP:1.3
	RELENG_6_0_0_RELEASE:1.3
	RELENG_6_0:1.3.0.4
	RELENG_6_0_BP:1.3
	RELENG_6:1.3.0.2
	RELENG_6_BP:1.3;
locks; strict;
comment	@# @;


1.5
date	2012.11.17.01.53.59;	author svnexp;	state Exp;
branches
	1.5.2.1;
next	1.4;

1.4
date	2011.12.30.00.04.11;	author uqs;	state Exp;
branches;
next	1.3;

1.3
date	2005.06.01.11.25.38;	author harti;	state Exp;
branches
	1.3.2.1
	1.3.10.1
	1.3.16.1
	1.3.18.1
	1.3.20.1
	1.3.22.1
	1.3.24.1
	1.3.26.1
	1.3.28.1;
next	1.2;

1.2
date	2005.05.31.14.12.58;	author harti;	state Exp;
branches;
next	1.1;

1.1
date	2005.04.28.13.20.45;	author harti;	state Exp;
branches;
next	;

1.5.2.1
date	2012.11.17.01.53.59;	author svnexp;	state dead;
branches;
next	1.5.2.2;

1.5.2.2
date	2013.03.28.13.05.54;	author svnexp;	state Exp;
branches;
next	;

1.3.2.1
date	2012.11.17.07.45.26;	author svnexp;	state Exp;
branches;
next	;

1.3.10.1
date	2012.11.17.08.08.09;	author svnexp;	state Exp;
branches;
next	;

1.3.16.1
date	2008.10.02.02.57.24;	author kensmith;	state Exp;
branches;
next	;

1.3.18.1
date	2008.11.25.02.59.29;	author kensmith;	state Exp;
branches;
next	;

1.3.20.1
date	2009.04.15.03.14.26;	author kensmith;	state Exp;
branches;
next	;

1.3.22.1
date	2009.08.03.08.13.06;	author kensmith;	state Exp;
branches
	1.3.22.1.2.1
	1.3.22.1.4.1
	1.3.22.1.6.1
	1.3.22.1.8.1;
next	1.3.22.2;

1.3.22.2
date	2012.11.17.10.37.13;	author svnexp;	state Exp;
branches;
next	;

1.3.22.1.2.1
date	2009.10.25.01.10.29;	author kensmith;	state Exp;
branches;
next	;

1.3.22.1.4.1
date	2010.06.14.02.09.06;	author kensmith;	state Exp;
branches;
next	;

1.3.22.1.6.1
date	2010.12.21.17.09.25;	author kensmith;	state Exp;
branches;
next	;

1.3.22.1.8.1
date	2012.03.03.06.15.13;	author kensmith;	state Exp;
branches;
next	1.3.22.1.8.2;

1.3.22.1.8.2
date	2012.11.17.08.25.46;	author svnexp;	state Exp;
branches;
next	;

1.3.24.1
date	2010.02.10.00.26.20;	author kensmith;	state Exp;
branches;
next	;

1.3.26.1
date	2010.12.21.17.10.29;	author kensmith;	state Exp;
branches;
next	1.3.26.2;

1.3.26.2
date	2012.11.17.08.17.39;	author svnexp;	state Exp;
branches;
next	;

1.3.28.1
date	2011.09.23.00.51.37;	author kensmith;	state Exp;
branches
	1.3.28.1.2.1
	1.3.28.1.4.1;
next	1.3.28.2;

1.3.28.2
date	2012.11.17.11.37.31;	author svnexp;	state Exp;
branches;
next	;

1.3.28.1.2.1
date	2011.11.11.04.20.22;	author kensmith;	state Exp;
branches;
next	1.3.28.1.2.2;

1.3.28.1.2.2
date	2012.11.17.08.37.28;	author svnexp;	state Exp;
branches;
next	;

1.3.28.1.4.1
date	2012.08.05.23.54.33;	author kensmith;	state Exp;
branches;
next	1.3.28.1.4.2;

1.3.28.1.4.2
date	2012.11.17.08.48.19;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.5
log
@Switching exporter and resync
@
text
@$FreeBSD: head/tools/regression/usr.bin/make/README 228975 2011-12-30 00:04:11Z uqs $

This directory contains regression tests for make(1).

To invoke the tests install prove(1) from ports/devel/p5-Test-Harness and
run 'prove -r'. Alternatively one can use 'sh ./all.sh test' and scan the
output for '^not ok'.

----------------------------------------------------------------------------

The rest of this file is intended for developers.

The tests are invoked via the test.sh script or prove(1) from p5-Test-Harness.
Tests are normally executed in a special test directory that is built under
/tmp. The reason for this is, that make tests are generally influenced by
all file in a directory, by files in one of make's obscure object directories
as well as in other directories make happens to look into. Therefor the
test scripts build a clean environment in the temp directory and the
tests are executed by cd-ing into that directory and invoking make. The
output of the make run (standard output, standard error and the exit status)
are written into files that are created in another directory. So the layout
for the shell/builtin test looks like:

	./shell/builtin/			- directory with test stuff
	/tmp/make.${USER}/shell/builtin		- actual test directory
	/tmp/make.${USER}/shell/builtin.OUTPUT	- output files

So a full test consists of the following steps:

	setup	- Set up the test environment by creating the test directory
		  and populating it with the needed files. If the test
		  directory already exists an error is printed.

	run	- Run the test and produce the output into the output
		  directory.

	show	- Show the result files on the screen.

	compare	- Compare the results in the output directory with those
		  in the test source directory. This just prints whether
		  the test was ok or not in the format used by prove(1).

	diff	- Diff the output files and the expected output files.

	reset	- Reset the test to its initial state.

	clean	- Remove both the test directory and the output directory.

Each of these steps can independently be invoked with the test script
contained in each directory. These test scripts are called test.t.
Additionally the scripts understand the following commands:

	test	- Run setup, run and compare.

	prove	- Run setup, run, compare and clean. This is identically
		  to invoking the script without an argument.

	desc	- Print a short test description.

	update	- Update the expected results from the actual results.

The test script has the following syntax:

	% test.t [-v] [-m path_to_make_binary] command

To invoke it via prove(1) use:

	% [MAKE_PROG=path_to_make_binary] prove [options] [files/directories]

Example:
	% sh test.t -m `pwd`/../obj/make run
	% MAKE_PROG=/usr/obj/usr/src/usr.bin/make/make prove -r

The test scripts use the following environment variables that can be set
by the user in the test script's environment:

	WORK_BASE
		- Base directory for working files. If not set
		  /tmp/make.${USER} is used.

	MAKE_PROG
		- Path to the make program to test. If not set
		  /usr/bin/make is used.

The following variables are available to test scripts:

	SRC_BASE
		- test source base directory. This is determined by
		  repeatedly doing cd .. and checking for common.sh.
		  Therefor this can fail if a test source directory is 
		  actually a symbolic link and is physically not located
		  below the directory containing common.sh.

	SUBDIR	
		- subdirectory below WORK_BASE and SRC_BASE for current test

	WORK_DIR
		- ${WORK_BASE}/${SUBDIR}

	SRC_DIR
		- ${SRC_BASE}/${SUBDIR}

The following variables and functions may be defined by the test script.
This also lists special filenames.

	DESC
		A one-line description of the test.

	TEST_MAKE_DIRS
		A list of pairs of directory names and modes. These
		directories are created during setup and reset. When
		the directory already exists (during reset) only the
		mode change is applied.

		TEST_MAKE_DIRS="subdir 775 subdir/sub 555"

	TEST_COPY_FILES
		A list of pairs of file names and modes. These files
		are copied from the source to the working directory
		during setup and reset. When the file already exists
		(during reset) only the mode change is applied. Files
		may be copied from/to sub-directories. The sub-directory
		in the working directory must already exists (see
		TEST_MAKE_DIRS).

		TEST_COPY_FILES="libtest.a 444 subdir/libfoo.a 444"

	TEST_TOUCH
		List of pairs of file names and arguments to touch(1).
		During setup and reset for each list element touch(1)
		is executed.

		TEST_TOUCH="file1 '-t 200501011257'"

	TEST_LINK
		List of pairs of filenames. Each pair is passed to ln(1).
		All names are prefixed with the working directory.

	Makefile
		If a file with this name exists in the source directory
		it is automatically copied to the working directory.

	setup_test()
		If this function exists it is executed at the end of the
		setup.

	reset_test()
		If this function exists it is executed at the end of the
		reset.

	TEST_CLEAN_FILES
		A list of file to be deleted when resetting.

	TEST_N
		Number of tests in this script. If not set this is assumed
		to be 1.

	TEST_<number>
		Arguments to make for test number <number>. If not set
		the default argument of test<number> is used. To run a test
		without argument to make, set TEST_<number> to the empty string.

	TEST_<number>_SKIP
		To skip a test (for whatever reason) this should be set
		to a string explaining the reason for skipping the test.

	TEST_<number>_TODO
		For a test that should fail this is a short string describing
		what the problem in make(1) is that should be fixed.

	run_test()
		Function to run a test. This function gets a single argument
		which is the number of the test to executed. The default
		function evaluates the variable TEST_<number> and calls
		make with the arguments in this variable.

@


1.5.2.1
log
@file README was added on branch RELENG_8_4 on 2013-03-28 13:05:54 +0000
@
text
@d1 176
@


1.5.2.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 176
$FreeBSD: releng/8.4/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $

This directory contains regression tests for make(1).

To invoke the tests install prove(1) from ports/devel/p5-Test-Harness and
run 'prove -r'. Alternatively one can use 'sh ./all.sh test' and scan the
output for '^not ok'.

----------------------------------------------------------------------------

The rest of this file is intented for developers.

The tests are invoked via the test.sh script or prove(1) from p5-Test-Harness.
Tests are normally executed in a special test directory that is built under
/tmp. The reason for this is, that make tests are generally influenced by
all file in a directory, by files in one of make's obscure object directories
as well as in other directories make happens to look into. Therefor the
test scripts build a clean environment in the temp directory and the
tests are executed by cd-ing into that directory and invoking make. The
output of the make run (standard output, standard error and the exit status)
are written into files that are created in another directory. So the layout
for the shell/builtin test looks like:

	./shell/builtin/			- directory with test stuff
	/tmp/make.${USER}/shell/builtin		- actual test directory
	/tmp/make.${USER}/shell/builtin.OUTPUT	- output files

So a full test consists of the following steps:

	setup	- Set up the test environment by creating the test directory
		  and populating it with the needed files. If the test
		  directory already exists an error is printed.

	run	- Run the test and produce the output into the output
		  directory.

	show	- Show the result files on the screen.

	compare	- Compare the results in the output directory with those
		  in the test source directory. This just prints whether
		  the test was ok or not in the format used by prove(1).

	diff	- Diff the output files and the expected output files.

	reset	- Reset the test to its initial state.

	clean	- Remove both the test directory and the output directory.

Each of these steps can independently be invoked with the test script
contained in each directory. These test scripts are called test.t.
Additionally the scripts understand the following commands:

	test	- Run setup, run and compare.

	prove	- Run setup, run, compare and clean. This is identically
		  to invoking the script without an argument.

	desc	- Print a short test description.

	update	- Update the expected results from the actual results.

The test script has the following syntax:

	% test.t [-v] [-m path_to_make_binary] command

To invoke it via prove(1) use:

	% [MAKE_PROG=path_to_make_binary] prove [options] [files/directories]

Example:
	% sh test.t -m `pwd`/../obj/make run
	% MAKE_PROG=/usr/obj/usr/src/usr.bin/make/make prove -r

The test scripts use the following environment variables that can be set
by the user in the test script's environment:

	WORK_BASE
		- Base directory for working files. If not set
		  /tmp/make.${USER} is used.

	MAKE_PROG
		- Path to the make program to test. If not set
		  /usr/bin/make is used.

The following variables are available to test scripts:

	SRC_BASE
		- test source base directory. This is determined by
		  repeatedly doing cd .. and checking for common.sh.
		  Therefor this can fail if a test source directory is 
		  actually a symbolic link and is physically not located
		  below the directory containing common.sh.

	SUBDIR	
		- subdirectory below WORK_BASE and SRC_BASE for current test

	WORK_DIR
		- ${WORK_BASE}/${SUBDIR}

	SRC_DIR
		- ${SRC_BASE}/${SUBDIR}

The following variables and functions may be defined by the test script.
This also lists special filenames.

	DESC
		A one-line description of the test.

	TEST_MAKE_DIRS
		A list of pairs of directory names and modes. These
		directories are created during setup and reset. When
		the directory already exists (during reset) only the
		mode change is applied.

		TEST_MAKE_DIRS="subdir 775 subdir/sub 555"

	TEST_COPY_FILES
		A list of pairs of file names and modes. These files
		are copied from the source to the working directory
		during setup and reset. When the file already exists
		(during reset) only the mode change is applied. Files
		may be copied from/to sub-directories. The sub-directory
		in the working directory must already exists (see
		TEST_MAKE_DIRS).

		TEST_COPY_FILES="libtest.a 444 subdir/libfoo.a 444"

	TEST_TOUCH
		List of pairs of file names and arguments to touch(1).
		During setup and reset for each list element touch(1)
		is executed.

		TEST_TOUCH="file1 '-t 200501011257'"

	TEST_LINK
		List of pairs of filenames. Each pair is passed to ln(1).
		All names are prefixed with the working directory.

	Makefile
		If a file with this name exists in the source directory
		it is automatically copied to the working directory.

	setup_test()
		If this function exists it is executed at the end of the
		setup.

	reset_test()
		If this function exists it is executed at the end of the
		reset.

	TEST_CLEAN_FILES
		A list of file to be deleted when resetting.

	TEST_N
		Number of tests in this script. If not set this is assumed
		to be 1.

	TEST_<number>
		Arguments to make for test number <number>. If not set
		the default argument of test<number> is used. To run a test
		without argument to make, set TEST_<number> to the empty string.

	TEST_<number>_SKIP
		To skip a test (for whatever reason) this should be set
		to a string explaining the reason for skipping the test.

	TEST_<number>_TODO
		For a test that should fail this is a short string describing
		what the problem in make(1) is that should be fixed.

	run_test()
		Function to run a test. This function gets a single argument
		which is the number of the test to executed. The default
		function evaluates the variable TEST_<number> and calls
		make with the arguments in this variable.

@


1.4
log
@SVN rev 228975 on 2011-12-30 00:04:11Z by uqs

Spelling fixes for tools/

Add some $FreeBSD$ tags so svn will allow the commit.
@
text
@d1 1
a1 1
$FreeBSD$
@


1.3
log
@Add support for TODO tests. These are tests that are supposed to fail,
because of a make bug that should be fixed.
@
text
@d11 1
a11 1
The rest of this file is intented for developers.
@


1.3.10.1
log
@Switch importer
@
text
@d1 1
a1 1
$FreeBSD: stable/7/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $
@


1.3.2.1
log
@Switch importer
@
text
@d1 1
a1 1
$FreeBSD: stable/6/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $
@


1.3.28.1
log
@SVN rev 225736 on 2011-09-23 00:51:37Z by kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.3.28.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242902
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242902 | dteske | 2012-11-11 23:29:45 +0000 (Sun, 11 Nov 2012) | 10 lines
## SVN ##
## SVN ## Fix a regression introduced by SVN r211417 that saw the breakage of a feature
## SVN ## documented in usr.sbin/sysinstall/help/shortcuts.hlp (reproduced below):
## SVN ##
## SVN ## If /usr/sbin/sysinstall is linked to another filename, say
## SVN ## `/usr/local/bin/configPackages', then the basename will be used
## SVN ## as an implicit command name.
## SVN ##
## SVN ## Reviewed by:	adrian (co-mentor)
## SVN ## Approved by:	adrian (co-mentor)
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d1 1
a1 1
$FreeBSD: stable/9/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $
@


1.3.28.1.4.1
log
@SVN rev 239080 on 2012-08-05 23:54:33Z by kensmith

Copy stable/9 to releng/9.1 as part of the 9.1-RELEASE release process.

Approved by:	re (implicit)
@
text
@@


1.3.28.1.4.2
log
@Switch importer
@
text
@d1 1
a1 1
$FreeBSD: releng/9.1/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $
@


1.3.28.1.2.1
log
@SVN rev 227445 on 2011-11-11 04:20:22Z by kensmith

Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
cycle.

Approved by:	re (implicit)
@
text
@@


1.3.28.1.2.2
log
@Switch importer
@
text
@d1 1
a1 1
$FreeBSD: releng/9.0/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $
@


1.3.26.1
log
@SVN rev 216618 on 2010-12-21 17:10:29Z by kensmith

Copy stable/7 to releng/7.4 in preparation for FreeBSD-7.4 release.

Approved by:	re (implicit)
@
text
@@


1.3.26.2
log
@Switch importer
@
text
@d1 1
a1 1
$FreeBSD: releng/7.4/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $
@


1.3.24.1
log
@SVN rev 203736 on 2010-02-10 00:26:20Z by kensmith

Copy stable/7 to releng/7.3 as part of the 7.3-RELEASE process.

Approved by:	re (implicit)
@
text
@@


1.3.22.1
log
@SVN rev 196045 on 2009-08-03 08:13:06Z by kensmith

Copy head to stable/8 as part of 8.0 Release cycle.

Approved by:	re (Implicit)
@
text
@@


1.3.22.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242909
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242909 | dim | 2012-11-12 07:47:19 +0000 (Mon, 12 Nov 2012) | 20 lines
## SVN ##
## SVN ## MFC r242625:
## SVN ##
## SVN ## Remove duplicate const specifiers in many drivers (I hope I got all of
## SVN ## them, please let me know if not).  Most of these are of the form:
## SVN ##
## SVN ## static const struct bzzt_type {
## SVN ##       [...list of members...]
## SVN ## } const bzzt_devs[] = {
## SVN ##       [...list of initializers...]
## SVN ## };
## SVN ##
## SVN ## The second const is unnecessary, as arrays cannot be modified anyway,
## SVN ## and if the elements are const, the whole thing is const automatically
## SVN ## (e.g. it is placed in .rodata).
## SVN ##
## SVN ## I have verified this does not change the binary output of a full kernel
## SVN ## build (except for build timestamps embedded in the object files).
## SVN ##
## SVN ## Reviewed by:	yongari, marius
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d1 1
a1 1
$FreeBSD: stable/8/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $
@


1.3.22.1.8.1
log
@SVN rev 232438 on 2012-03-03 06:15:13Z by kensmith

Copy stable/8 to releng/8.3 as part of 8.3-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.3.22.1.8.2
log
@Switch importer
@
text
@d1 1
a1 1
$FreeBSD: releng/8.3/tools/regression/usr.bin/make/README 146855 2005-06-01 11:25:38Z harti $
@


1.3.22.1.6.1
log
@SVN rev 216617 on 2010-12-21 17:09:25Z by kensmith

Copy stable/8 to releng/8.2 in preparation for FreeBSD-8.2 release.

Approved by:	re (implicit)
@
text
@@


1.3.22.1.4.1
log
@SVN rev 209145 on 2010-06-14 02:09:06Z by kensmith

Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.

Approved by:	re (implicit)
@
text
@@


1.3.22.1.2.1
log
@SVN rev 198460 on 2009-10-25 01:10:29Z by kensmith

Copy stable/8 to releng/8.0 as part of 8.0-RELEASE release procedure.

Approved by:	re (implicit)
@
text
@@


1.3.20.1
log
@SVN rev 191087 on 2009-04-15 03:14:26Z by kensmith

Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.

Approved by:	re (implicit)
@
text
@@


1.3.18.1
log
@SVN rev 185281 on 2008-11-25 02:59:29Z by kensmith

Create releng/7.1 in preparation for moving into RC phase of 7.1 release
cycle.

Approved by:	re (implicit)
@
text
@@


1.3.16.1
log
@SVN rev 183531 on 2008-10-02 02:57:24Z by kensmith

Create releng/6.4 from stable/6 in preparation for 6.4-RC1.

Approved by:	re (implicit)
@
text
@@


1.2
log
@Change the test infrastructure so that tests are easier to maintain and
so that make(1) will run in an almost clean environment and enhance the
description of the test infrastructure.

Add the ability to have multiple tests carried out per test script.

Give some tests more meaningful names.

Fix the usage message from the test scripts.

Make it possible to pass several commands to the test scripts like:
'sh test.t setup run compare clean'.
@
text
@d167 4
@


1.1
log
@Add an initial regression test suite for make(1).

Submitted by:	Max Okumoto <okumotu@@ucsd.edu> (partly, initial version)
@
text
@d5 3
a7 1
The tests are invoked via the test.sh script or prove(1) from p5-Test-Harness
d9 1
a9 1
	% test.sh [-v] [-m path_to_make_binary] command
d11 1
a11 3
	clean	- Remove the results and the other temp files that
		  are produced by running the test. This brings the
		  test into its initial state.
d13 10
a22 2
	compare	- Check if results of the test match the expected
		  output from stdout, stderr, and the status.
d24 3
a26 1
	desc	- print description of test
d28 1
a28 2
	diff	- Output the diffs from the tests and the expected
		  stdout, stderr, and the status files.
d30 3
a32 1
	run	- Invoke test, compare, and clean in sequence.
d34 2
a35 1
	test	- Invoke the test code
d37 30
a66 2
	update	- Copy the output of the last test run as the expected
		  output from stdout, stderr, and the status.
d74 98
a171 24
Variables
---------
WORK_BASE	- base directory for working files
SRC_BASE	- test source base directory
SUBDIR		- subdirectory below WORK_BASE and SRC_BASE for current test
WORK_DIR	- ${WORK_BASE}/${SUBDIR}
SRC_DIR		- ${SRC_BASE}/${SUBDIR}
MAKE_PROG	- path to the make program to test

WORK_BASE and MAKE_PROG are intented to be set by the user. All other
variables are set by the script and can be used in scripts.

Directory layout
----------------
common.sh		- common code
all.sh			- recursively call test scripts

basic/
      t0/test.t	- regression test
      t1/test.t	- regression test
      t2/test.t	- regression test
variables/
          t0/test.t	- regression test
          t1/test.t	- regression test
a172 2
Each test directory should contain at least a test.t script
and the expected output files.
@

