From d5126f91a3d5217f86acff05aa478d283abdbe02 Mon Sep 17 00:00:00 2001 From: Gerard Patel Date: Tue, 23 May 2000 01:17:10 +0000 Subject: [PATCH] Regression testing using CVS. --- documentation/bugreports | 111 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/documentation/bugreports b/documentation/bugreports index 8b3096aa3c1..68a2080401b 100644 --- a/documentation/bugreports +++ b/documentation/bugreports @@ -97,3 +97,114 @@ likely to get answered and fixed): out, or think could be explained better, or that should have been included, please post to comp.emulators.ms-windows.wine to let us know how this document can be improved. + + + +How to do regression testing using Cvs +------------------------------------- + +A problem that can happen sometimes is 'it used to work before, +now it doesn't anymore...'. Here is a step by step procedure to +try to pinpoint when the problem occured. This is *NOT* for casual +users. + +1) get the 'full cvs' archive from winehq. +This archive is the cvs tree but with the tags controling the versioning +system. It's a big file (> 15 meg) with a name like full-cvs- +(it's more than 100mb when uncompressed, you can't very well do this +with small, old computers or slow Internet connections) + +2) untar it into a repository directory : + +cd /home/gerard +tar -zxffull-cvs-2000-05-20.tar.gz +mv wine repository + +3) extract a new destination directory +This directory must not be in a subdirectory of the repository else +cvs will think it's part of the repository and deny you an extraction +in the repository : + +cd /home/gerard +mv wine wine_current (-> this protects your current wine sandbox, if any) +export CVSROOT=/home/gerard/repository +cd /home/gerard +cvs -d $CVSROOT checkout wine + +Note that it's not possible to do a checkout at a given date; you +always do the checkout for the last date where the full-cvs-xxx snapshot +was generated. + +4) you will have now in the ~/wine directory an image of the cvs tree, +on the client side. +Now update this image to the date you want : + +cd /home/gerard/wine +cvs -d $CVSROOT update -D "1999-06-01" + +The date format is YYYY-MM-DD. + +Many messages will inform you that more recent files have been +deleted to set back the client cvs tree to the date you asked, +for example : + +cvs update: tsx11/ts_xf86dga2.c is no longer in the repository + +Cvs update is not limited to upgrade to a *newer* version as +I have believed for far too long :-( + +5) Now proceed as for a normal update : + +./configure +make depend && make + +When you have found the exact date when a bug was +added to Cvs, use something like : + +cvs -d $CVSROOT diff -D "1999-07-10" -D "1999-07-12" + +to get all the differences between the last cvs version +known to work and code that first displayed the misbehavior. + + [ I did not include flags for diff since they are in my .cvsrc file : + cvs -z 3 + update -dPA + diff -u + ] + +From this diff file, particularly the file names, and the +ChangeLog, it's usually possible to find the different individual +patches that were done at this time. + +If any non-programmer reads this, the fasted method to get +at the point where the problem occured is to use a binary +search, that is, if the problem occured in 1999, start at mid-year, +then is the problem is already here, back to 1st avril, if not, +to 1st october, and so on. + +6) The next step is to start from the last working version +and to dig the individual contributions from +http://www.integrita.com/cgi-local/lwgate.pl/WINE-PATCHES/ +(where the Wine patches mailing list is archived) + +If the patch was done by the Wine maintainer or if it was +sent directly to his mail address without going first through +wine-patches, you are out of luck as you will never find the +patch in the archive. +If it is, it's often possible to apply the patches one by +one to last working Cvs, compile and test. If you have saved +the next candidate as /home/gerard/buggedpatch1.txt : + +cd /home/gerard/wine +patch -p 0