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