This area is an archive and is no longer actively maintained. Information found on this page is likely to be extremely out of date and therefore highly inaccurate. We recommend the Ximbiot - CVS Wiki for up-to-date information about CVS and its associtated tools.

If you do find anything useful on this page that is not yet in the Ximbiot - CVS Wiki and you have the time, please add it!

CVS testsuite

CVS testsuite

This page contains information about the CVS testsuite. It is similar in spirit to the TESTS file in the CVS distribution. If you are experiencing a failure in running the CVS testsuite, we suggest searching this page for the name of the test which is failing.

Operating system specific problems

See the Portability page for issues specific to a particular operating system.

Known problems with running the testsuite

Problems not yet fixed in development versions of CVS

With Linux 2.2.x kernels, basicc-8 will fail. See details/patches.

A failure in basic2-64 may be problems with the naming of the temporary directory (see the code in sanity.sh which sets TMPPWD, and see the comments there about how it should probably be fixed with a symlink).

We've also seen reports of failures in basic2-64 on Solaris 2.6 which seem to be some kind of problem in expr's matching. That is, trying GNU expr instead solves the problem. Apparently this is because according to the Solaris manpage for expr, "The length of the expression is limited to LINE_MAX (2048 characters)." Seems like sanity.sh needs another check at the start along with the others for expr.

As of CVS 1.10.2, the testsuite tries to run "id -un". Apparently this can cause problems on Solaris unless /usr/xpg4/bin/id is used. I'm not sure what the best solution is.

As of CVS 1.10.1, the importc-1 test may fail (e.g. with /usr/ucb/touch on Solaris 2.x). There doesn't seem to be a sufficiently portable way to set a time stamp using shell utilities. The Single Unix Specification, version 2, specifies "touch -t [[CC]YY]MMDDhhmm[.SS]" syntax, but GNU touch 3.16 does not implement it. I hear this may be fixed in GNU touch 3.16w, but that is kind of a moot point as 3.16 is unfortunately widely used. The best solution I can think of is to write an RCS file with the timestamps we want, run cvs get or cvs export, and then go from there.

For several years, there has been a problem in which remote tests intermittently fail with an error such as:

cannot change permissions on temporary directory
Operation not permitted
See for example Jim Kingdon's checkin of 16 Mar 1997 (which just has to do with printing the right error message, though, not fixing the problem). I suppose there must be a race condition somewhere....

Problems fixed in development versions of CVS

None here yet.

Problems fixed in CVS 1.10.5

A failure in reposmv-4 (especially on Solaris) happens when running the testsuite under some shells. Fix checked in 1999-01-21.

A failure in rcs3-7 (development versions between 1.10.4 and 1.10.5 only, not in CVS 1.10.4 or 1.10.5) may be because the testsuite is invoking behavior in awk (%c format with 0 argument) which is undefined in the Single Unix Spec and which doesn't work in all versions of awk. Also occurs in binfiles, binfiles2, binfiles3, and server tests. The "server" one at least would appear to be capable of causing failures with CVS 1.10.4. Fixes to use tr instead of awk were checked in on 1999-01-09 and 1999-01-15.

Problems fixed in CVS 1.10.1

A failure in unedit-without-baserev-5 can be a testsuite bug which only shows up if you have GNU expr 1.12 rather than a newer version (fix checked in 19 Aug 1998).

A failure in rcslib-symlink-4 due to not having a "test -L" command is a testsuite bug (fix checked in 1998-08-14).

Problems fixed in CVS 1.10

The race condition with "cannot rename file CVS/Entries.Backup to CVS/Entries: No such file or directory" in the abspath tests should have been fixed with Jim Kingdon's checkin of 1998-05-15.

Testsuite development

As discussed at some length in TESTS, the CVS testsuite probably wants to be rewritten in some other language. Here is a somewhat preliminary example of what it might look like in perl.

One common suggestion is to match regular expressions a line at a time rather than matching the entire multi-line output against a single regular expression. The idea here is to work around bugs and limitations in expr, and also to provide more feedback about what part failed to match. Would need to think about how to handle things like ${DOTSTAR}, where it can match multiple lines, but the idea might be workable and/or desirable. See dotest_line_by_line in sanity.sh.

Unofficial testsuite patches

There is a FIXME in sanity.sh about how the diffmerge2 test should be replaced by a shorter test (to be faster, take up less space, and be easier to understand). This patch represents a failed attempt to do so, but might be a starting point for future work.

This patch is for running the testsuite with :pserver:. By default, the testsuite for remote CVS uses :ext:.

This test tests for specifying the time zone with the TZ environment variable.

This eval patch is intended to make it possible to clean up ugly code in the testsuite - it is currently somewhat awkward to do things like redirect standard input and output.

[Cyclic Home]

Derek Price, CVS developer and technical editor of Essential CVS (Essentials line from O'Reilly Press) , and others offer consulting services and training through Ximbiot.