1The test suite was originally written by Steve McGee and Chris Arthur. 2It is covered by the GNU General Public License (Version 2), described 3in the file COPYING. It has been maintained as part of GNU make proper 4since GNU make 3.78. 5 6This entire test suite, including all test files, are copyright and 7distributed under the following terms: 8 9 ----------------------------------------------------------------------------- 10 Copyright (C) 1992-2020 Free Software Foundation, Inc. 11 This file is part of GNU Make. 12 13 GNU Make is free software; you can redistribute it and/or modify it under the 14 terms of the GNU General Public License as published by the Free Software 15 Foundation; either version 3 of the License, or (at your option) any later 16 version. 17 18 GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY 19 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 20 A PARTICULAR PURPOSE. See the GNU General Public License for more details. 21 22 You should have received a copy of the GNU General Public License along with 23 this program. If not, see <http://www.gnu.org/licenses/>. 24 ----------------------------------------------------------------------------- 25 26The test suite requires Perl. These days, you should have at least Perl 275.004 (available from ftp.gnu.org, and portable to many machines). It 28used to work with Perl 4.036 but official support for Perl 4.x was 29abandoned a long time ago, due to lack of testbeds, as well as interest. 30 31The test suite assumes that the first "diff" it finds on your PATH is 32GNU diff, but that only matters if a test fails. 33 34To run the test suite on a UNIX system, use "perl ./run_make_tests" 35(or just "./run_make_tests" if you have a perl on your PATH). 36 37To run the test suite on Windows NT or DOS systems, use 38"perl.exe ./run_make-tests.pl". 39 40By default, the test engine picks up the first executable called "make" 41that it finds in your path. You may use the -make_path option (i.e., 42"perl run_make_tests -make_path /usr/local/src/make-3.78/make") if 43you want to run a particular copy. This now works correctly with 44relative paths and when make is called something other than "make" (like 45"gmake"). 46 47Tests cannot end with a "~" character, as the test suite will ignore any 48that do (I was tired of having it run my Emacs backup files as tests :)) 49 50Also, sometimes the tests may behave strangely on networked 51filesystems. You can use mkshadow to create a copy of the test suite in 52/tmp or similar, and try again. If the error disappears, it's an issue 53with your network or file server, not GNU make (I believe). This 54shouldn't happen very often anymore: I've done a lot of work on the 55tests to reduce the impacts of this situation. 56 57The options/dash-l test will not really test anything if the copy of 58make you are using can't obtain the system load. Some systems require 59make to be setgid sys or kmem for this; if you don't want to install 60make just to test it, make it setgid to kmem or whatever group /dev/kmem 61is (i.e., "chgrp kmem make;chmod g+s make" as root). In any case, the 62options/dash-l test should no longer *fail* because make can't read 63/dev/kmem. 64 65A directory named "work" will be created when the tests are run which 66will contain any makefiles and "diff" files of tests that fail so that 67you may look at them afterward to see the output of make and the 68expected result. 69 70There is a -help option which will give you more information about the 71other possible options for the test suite. 72 73 74Open Issues 75----------- 76 77The test suite has a number of problems which should be addressed. One 78VERY serious one is that there is no real documentation. You just have 79to see the existing tests. Use the newer tests: many of the tests 80haven't been updated to use the latest/greatest test methods. See the 81ChangeLog in the tests directory for pointers. 82 83The second serious problem is that it's not parallelizable: it scribbles 84all over its installation directory and so can only test one make at a 85time. The third serious problem is that it's not relocatable: the only 86way it works when you build out of the source tree is to create 87symlinks, which doesn't work on every system and is bogus to boot. The 88fourth serious problem is that it doesn't create its own sandbox when 89running tests, so that if a test forgets to clean up after itself that 90can impact future tests. 91 92 93Bugs 94---- 95 96Any complaints/suggestions/bugs/etc. for the test suite itself (as 97opposed to problems in make that the suite finds) should be handled the 98same way as normal GNU make bugs/problems (see the README for GNU make). 99 100 101 Paul D. Smith 102 Chris Arthur 103