56 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
.NH 1
 | 
						|
Testing the program
 | 
						|
.PP
 | 
						|
There is no test-suite for testing
 | 
						|
.I lint.
 | 
						|
I have written a lot of small files that each test one
 | 
						|
particular property of the program.
 | 
						|
At this moment there are about 220 test programs.
 | 
						|
.PP
 | 
						|
It would take a lot of time and effort to run these tests by hand.
 | 
						|
To ease this work I wrote a program that runs these tests
 | 
						|
automatically.
 | 
						|
The test program (the program that runs the tests) needs, associated
 | 
						|
with each .c file, a .w file, containing from each expected warning
 | 
						|
a substring. E.g. when the following warnings should be given by
 | 
						|
.I lint:
 | 
						|
.DS B
 | 
						|
.ft CW
 | 
						|
        file t.c, line 3, i evaluation order undefined
 | 
						|
        file t.c, line 6, a set but not used in function main
 | 
						|
.R
 | 
						|
.DE
 | 
						|
it is sufficient to write a file \f(CWt.w\fP containing
 | 
						|
.DS B
 | 
						|
.ft CW
 | 
						|
        a set but not used in function main
 | 
						|
        i evaluation order undefined
 | 
						|
.R
 | 
						|
.DE
 | 
						|
The test program is called with all the .c files to be tested
 | 
						|
as arguments.
 | 
						|
.PP
 | 
						|
Sometimes it is necessary to test
 | 
						|
.I lint
 | 
						|
on two files.
 | 
						|
The test program runs
 | 
						|
.I lint
 | 
						|
on two files when two consecutive
 | 
						|
arguments are of the form \fIname\fPa.c and \fIname\fPb.c.
 | 
						|
It then compares the output of
 | 
						|
.I lint
 | 
						|
with the file \fIname\fP.w.
 | 
						|
.PP
 | 
						|
.I Lint
 | 
						|
is also tested by running it on existing programs.
 | 
						|
.I Lint
 | 
						|
has been run on some \s-2UNIX\s+2 utility programs in
 | 
						|
/usr/src/cmd, on Unipress Emacs (consisting of more than 30,000
 | 
						|
lines of code) and the program itself.
 | 
						|
Bugs have been found in e.g. /usr/src/cmd/cat.c and 
 | 
						|
/usr/src/cmd/ld.c.
 | 
						|
To test the robustness of the program, it was run on the
 | 
						|
password file /etc/passwd and on `mixed' C program files.
 | 
						|
These mixed C program files are C program files that were
 | 
						|
broken in chunks and then put together in a different order.
 | 
						|
.bp
 |