There is a hierarchy of check targets:

     make check

for all builders.  It should not need a working latex installation.
If this works one can be reasonably happy R is working
and do `make install' (or the equivalent).

    make check-devel

for people changing the code: this runs things like the demos and
no-segfault which might be broken by code changes, and checks on the
documentation (effectively R CMD check on each of the base packages).
It should not need recommended packages installed.

    make check-all

runs all the checks, those in check-devel plus tests of the recommended
packages.

Note that for complete testing you will need a number of other
packages installed and available, so if you have a CRAN installation,
set R_LIBS (perhaps in ~/.R/check.Renviron) to include it before
running these tests.  For example, some of the tests on 'nlme' depend
on 'Hmisc', and there are a number of cross references from help pages
to CRAN packages.

If a check fails there will almost always be a .Rout.fail file with
the problematic output, so looking at the tail of that file should
help pinpoint the problem.

The \donttest sections of the examples can be run by

     make check TEST_DONTTEST=TRUE

(but expect some differences from the reference output).  This requires
functional Tcl/Tk, e.g. for X11-based versions DISPLAY must be set to
a usable X server.


	---------- Historical Information -----------

In this directory, various tests on R are run automatically.
This is the recommended way to check if R has been built successfully on
your architecture.

	make check

does

	make test-Examples

runs all the examples from the help files (*.Rd) of all core packages
(base, ctest, ..., ts) -- which can take quite long (a few minutes,
depending on your environment).

	make test-Specific

The "fast" part of the tests is `test-Specific' which runs the *.R
files in this (./tests) directory (tolerantly) compares the result
*.Rout file with the prespecified *.Rout.save (if that exists).

	make test-Reg

runs regression tests, that is tests that ensure that things which have been
changed (perhaps as a result of bug reports) stay fixed.

	make test-Internet
	make test-Internet2

runs tests which need access to the Internet and/or sockets and so may
not run on every machine.  You will see some differences in the
output, but no test should fail if you do have sockets and Internet
access.  test-Internet2 is part of 'make check-devel' and checks less
commonly-used options.


Further tests are run by the target `make check-devel', including


	make test-Demo

runs all the demos in packages base and stats (but not tcltk), except
demo(lm.glm) which is run by example(demo) and so not run again.


	make test-Random

runs a series of tests on the distribution of random variates generated
by the rxxxx() functions.  The test is a large deviation bound on the
Kolmogorov statistic, so also provides a test of the cumulative distribution
functions pxxxx().  Because rare events do happen, this test suite
will be failed in about 1 in 50 runs.


	make test-Segfault

runs a test abusing all the functions in the base packages via
no-segfault.R, and that can be quite slow (a minute or more).


A target not run by anything else is

	make test-System

which checks options in system[2]() calls.


A rarely-used target is

	make test-Gct

runs a subset of the specific tests with gctorture turned on.  This is slow,
taking an hour or two.


Martin Maechler for the R Core Team.
