]>
git.ipfire.org Git - thirdparty/cups.git/blob - test/run-stp-tests.sh
3 # "$Id: run-stp-tests.sh 7697 2008-06-27 15:56:00Z mike $"
5 # Perform the complete set of IPP compliance tests specified in the
6 # CUPS Software Test Plan.
8 # Copyright 2007-2008 by Apple Inc.
9 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
11 # These coded instructions, statements, and computer programs are the
12 # property of Apple Inc. and are protected by Federal copyright
13 # law. Distribution and use rights are outlined in the file "LICENSE.txt"
14 # which should have been included with this file. If this file is
15 # file is missing or damaged, see the license at "http://www.cups.org/".
21 # Make the IPP test program...
27 # Figure out the proper echo options...
30 if (echo "testing\c"; echo 1,2,3) |
grep c
>/dev
/null
; then
42 echo "Welcome to the CUPS Automated Test Script."
44 echo "Before we begin, it is important that you understand that the larger"
45 echo "tests require significant amounts of RAM and disk space. If you"
46 echo "attempt to run one of the big tests on a system that lacks sufficient"
47 echo "disk and virtual memory, the UNIX kernel might decide to kill one or"
48 echo "more system processes that you've grown attached to, like the X"
49 echo "server. The question you may want to ask yourself before running a"
50 echo "large test is: Do you feel lucky?"
52 echo "OK, now that we have the Dirty Harry quote out of the way, please"
53 echo "choose the type of test you wish to perform:"
55 echo "0 - No testing, keep the scheduler running for me (all systems)"
56 echo "1 - Basic conformance test, no load testing (all systems)"
57 echo "2 - Basic conformance test, some load testing (minimum 256MB VM, 50MB disk)"
58 echo "3 - Basic conformance test, extreme load testing (minimum 1GB VM, 500MB disk)"
59 echo "4 - Basic conformance test, torture load testing (minimum 2GB VM, 1GB disk)"
61 echo $ac_n "Enter the number of the test you wish to perform: [1] $ac_c"
63 if test $# -gt 0; then
73 echo "Running in test mode (0)"
79 echo "Running the medium tests (2)"
85 echo "Running the extreme tests (3)"
91 echo "Running the torture tests (4)"
97 echo "Running the timid tests (1)"
105 # See if we want to do SSL testing...
109 echo "Now you can choose whether to create a SSL/TLS encryption key and"
110 echo "certificate for testing; these tests currently require the OpenSSL"
113 echo "0 - Do not do SSL/TLS encryption tests"
114 echo "1 - Test but do not require encryption"
115 echo "2 - Test and require encryption"
117 echo $ac_n "Enter the number of the SSL/TLS tests to perform: [0] $ac_c"
119 if test $# -gt 0; then
129 echo "Will test but not require encryption (1)"
132 echo "Will test and require encryption (2)"
135 echo "Not using SSL/TLS (0)"
141 # Information for the server/tests...
145 if test -z "$user"; then
146 if test -x /usr
/ucb
/whoami
; then
147 user
=`/usr/ucb/whoami`
152 if test -z "$user"; then
162 # Make sure that the LPDEST and PRINTER environment variables are
163 # not included in the environment that is passed to the tests. These
164 # will usually cause tests to fail erroneously...
171 # See if we want to use valgrind...
175 echo "This test script can use the Valgrind software from:"
177 echo " http://developer.kde.org/~sewardj/"
179 echo $ac_n "Enter Y to use Valgrind or N to not use Valgrind: [N] $ac_c"
181 if test $# -gt 0; then
189 case "$usevalgrind" in
191 valgrind
="valgrind --tool=memcheck --log-file=/tmp/cups-$user/log/valgrind --error-limit=no --leak-check=yes --trace-children=yes"
192 echo "Using Valgrind; log files can be found in /tmp/cups-$user/log..."
201 # Start by creating temporary directories for the tests...
204 echo "Creating directories for test..."
206 rm -rf /tmp
/cups-
$user
207 mkdir
/tmp
/cups-
$user
208 mkdir
/tmp
/cups-
$user/bin
209 mkdir
/tmp
/cups-
$user/bin
/backend
210 mkdir
/tmp
/cups-
$user/bin
/driver
211 mkdir
/tmp
/cups-
$user/bin
/filter
212 mkdir
/tmp
/cups-
$user/certs
213 mkdir
/tmp
/cups-
$user/share
214 mkdir
/tmp
/cups-
$user/share
/banners
215 mkdir
/tmp
/cups-
$user/share
/drv
216 mkdir
/tmp
/cups-
$user/share
/mime
217 mkdir
/tmp
/cups-
$user/share
/model
218 mkdir
/tmp
/cups-
$user/share
/ppdc
219 mkdir
/tmp
/cups-
$user/interfaces
220 mkdir
/tmp
/cups-
$user/log
221 mkdir
/tmp
/cups-
$user/ppd
222 mkdir
/tmp
/cups-
$user/spool
223 mkdir
/tmp
/cups-
$user/spool
/temp
224 mkdir
/tmp
/cups-
$user/ssl
226 ln -s $root/backend
/http
/tmp
/cups-
$user/bin
/backend
227 ln -s $root/backend
/ipp
/tmp
/cups-
$user/bin
/backend
228 ln -s $root/backend
/lpd
/tmp
/cups-
$user/bin
/backend
229 ln -s $root/backend
/mdns
/tmp
/cups-
$user/bin
/backend
230 ln -s $root/backend
/parallel
/tmp
/cups-
$user/bin
/backend
231 ln -s $root/backend
/serial
/tmp
/cups-
$user/bin
/backend
232 ln -s $root/backend
/snmp
/tmp
/cups-
$user/bin
/backend
233 ln -s $root/backend
/socket
/tmp
/cups-
$user/bin
/backend
234 ln -s $root/backend
/usb
/tmp
/cups-
$user/bin
/backend
235 ln -s $root/cgi-bin
/tmp
/cups-
$user/bin
236 ln -s $root/ppdc
/drv
/tmp
/cups-
$user/bin
/driver
237 ln -s $root/monitor
/tmp
/cups-
$user/bin
238 ln -s $root/notifier
/tmp
/cups-
$user/bin
239 ln -s $root/scheduler
/tmp
/cups-
$user/bin
/daemon
240 ln -s $root/filter
/commandtops
/tmp
/cups-
$user/bin
/filter
241 ln -s $root/filter
/hpgltops
/tmp
/cups-
$user/bin
/filter
242 ln -s $root/filter
/pstops
/tmp
/cups-
$user/bin
/filter
243 ln -s $root/filter
/rastertoepson
/tmp
/cups-
$user/bin
/filter
244 ln -s $root/filter
/rastertohp
/tmp
/cups-
$user/bin
/filter
245 ln -s $root/filter
/texttops
/tmp
/cups-
$user/bin
/filter
247 ln -s $root/data
/classified
/tmp
/cups-
$user/share
/banners
248 ln -s $root/data
/confidential
/tmp
/cups-
$user/share
/banners
249 ln -s $root/data
/secret
/tmp
/cups-
$user/share
/banners
250 ln -s $root/data
/standard
/tmp
/cups-
$user/share
/banners
251 ln -s $root/data
/topsecret
/tmp
/cups-
$user/share
/banners
252 ln -s $root/data
/unclassified
/tmp
/cups-
$user/share
/banners
253 ln -s $root/data
/tmp
/cups-
$user/share
/charmaps
254 ln -s $root/data
/tmp
/cups-
$user/share
/charsets
255 ln -s $root/data
/tmp
/cups-
$user/share
256 ln -s $root/fonts
/tmp
/cups-
$user/share
257 ln -s $root/ppdc
/sample.drv
/tmp
/cups-
$user/share
/drv
258 ln -s $root/conf
/mime.types
/tmp
/cups-
$user/share
/mime
259 ln -s $root/conf
/mime.convs
/tmp
/cups-
$user/share
/mime
260 ln -s $root/data
/*.h
/tmp
/cups-
$user/share
/ppdc
261 ln -s $root/data
/*.defs
/tmp
/cups-
$user/share
/ppdc
262 ln -s $root/templates
/tmp
/cups-
$user/share
264 if test $ssltype != 0; then
266 cp server.
* $root/ssl
270 # Mac OS X filters and configuration files...
273 if test `uname` = Darwin
; then
274 ln -s /usr
/libexec
/cups
/filter
/cgpdfto
* /tmp
/cups-
$user/bin
/filter
275 ln -s /usr
/libexec
/cups
/filter
/nsimagetopdf
/tmp
/cups-
$user/bin
/filter
276 ln -s /usr
/libexec
/cups
/filter
/nstexttopdf
/tmp
/cups-
$user/bin
/filter
277 ln -s /usr
/libexec
/cups
/filter
/pictwpstops
/tmp
/cups-
$user/bin
/filter
278 ln -s /usr
/libexec
/cups
/filter
/pstoappleps
/tmp
/cups-
$user/bin
/filter
279 ln -s /usr
/libexec
/cups
/filter
/pstocupsraster
/tmp
/cups-
$user/bin
/filter
280 ln -s /usr
/libexec
/cups
/filter
/pstopdffilter
/tmp
/cups-
$user/bin
/filter
282 ln -s /private
/etc
/cups
/apple.
* /tmp
/cups-
$user
284 ln -s $root/filter
/imagetops
/tmp
/cups-
$user/bin
/filter
285 ln -s $root/filter
/imagetoraster
/tmp
/cups-
$user/bin
/filter
286 ln -s $root/filter
/pdftops
/tmp
/cups-
$user/bin
/filter
290 # Then create the necessary config files...
293 echo "Creating cupsd.conf for test..."
295 if test $ssltype = 2; then
296 encryption
="Encryption Required"
301 cat >/tmp
/cups-
$user/cupsd.conf
<<EOF
305 Listen 127.0.0.1:$port
307 ServerRoot /tmp/cups-$user
308 StateDir /tmp/cups-$user
309 ServerBin /tmp/cups-$user/bin
310 CacheDir /tmp/cups-$user/share
311 DataDir /tmp/cups-$user/share
312 FontPath /tmp/cups-$user/share/fonts
313 DocumentRoot $root/doc
314 RequestRoot /tmp/cups-$user/spool
315 TempDir /tmp/cups-$user/spool/temp
317 AccessLog /tmp/cups-$user/log/access_log
318 ErrorLog /tmp/cups-$user/log/error_log
319 PageLog /tmp/cups-$user/log/page_log
321 PreserveJobHistory Yes
333 # Setup lots of test queues - half with PPD files, half without...
336 echo "Creating printers.conf for test..."
339 while test $i -le $nprinters1; do
340 cat >>/tmp
/cups-
$user/printers.conf
<<EOF
343 DeviceURI file:/dev/null
344 Info Test PS printer $i
346 Location CUPS test suite
348 StateMessage Printer $1 is idle.
352 cp testps.ppd
/tmp
/cups-
$user/ppd
/test-
$i.ppd
357 while test $i -le $nprinters2; do
358 cat >>/tmp
/cups-
$user/printers.conf
<<EOF
361 DeviceURI file:/dev/null
362 Info Test raw printer $i
364 Location CUPS test suite
366 StateMessage Printer $1 is idle.
373 cp /tmp
/cups-
$user/printers.conf
/tmp
/cups-
$user/printers.conf.orig
379 echo "Setting up environment variables for test..."
381 if test "x$LD_LIBRARY_PATH" = x
; then
382 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
384 LD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$LD_LIBRARY_PATH"
387 export LD_LIBRARY_PATH
389 LD_PRELOAD
="$root/cups/libcups.so.2:$root/filter/libcupsimage.so.2:$root/cgi-bin/libcupscgi.so.1:$root/scheduler/libcupsmime.so.1:$root/driver/libcupsdriver.so.1:$root/ppdc/libcupsppdc.so.1"
392 if test "x$DYLD_LIBRARY_PATH" = x
; then
393 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
395 DYLD_LIBRARY_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$DYLD_LIBRARY_PATH"
398 export DYLD_LIBRARY_PATH
400 if test "x$SHLIB_PATH" = x
; then
401 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc"
403 SHLIB_PATH
="$root/cups:$root/filter:$root/cgi-bin:$root/scheduler:$root/driver:$root/ppdc:$SHLIB_PATH"
408 CUPS_SERVER
=localhost
; export CUPS_SERVER
409 CUPS_SERVERROOT
=/tmp
/cups-
$user; export CUPS_SERVERROOT
410 CUPS_STATEDIR
=/tmp
/cups-
$user; export CUPS_STATEDIR
411 CUPS_DATADIR
=/tmp
/cups-
$user/share
; export CUPS_DATADIR
414 # Set a new home directory to avoid getting user options mixed in...
421 # Force POSIX locale for tests...
428 # Start the server; run as foreground daemon in the background...
431 echo "Starting scheduler:"
432 echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
435 $valgrind ..
/scheduler
/cupsd
-c /tmp
/cups-
$user/cupsd.conf
-f >/tmp
/cups-
$user/log
/debug_log
2>&1 &
438 if test "x$testtype" = x0
; then
439 echo "Scheduler is PID $cupsd and is listening on port 8631."
441 echo "Set the IPP_PORT environment variable to 8631 to test the software"
442 echo "interactively from the command-line."
446 if test $argcount -eq 0; then
447 echo "Scheduler is PID $cupsd; run debugger now if you need to."
449 echo $ac_n "Press ENTER to continue... $ac_c"
452 echo "Scheduler is PID $cupsd."
456 IPP_PORT
=$port; export IPP_PORT
459 running
=`../systemv/lpstat -r 2>/dev/null`
460 if test "x$running" = "xscheduler is running"; then
464 echo "Waiting for scheduler to become ready..."
469 # Create the test report source file...
472 date=`date "+%Y-%m-%d"`
473 strfile
=/tmp
/cups-
$user/cups-str-1.4
-$date-$user.html
476 cat str-header.html
>$strfile
479 # Run the IPP tests...
483 echo "Running IPP compliance tests..."
485 echo "<H1>1 - IPP Compliance Tests</H1>" >>$strfile
486 echo "<P>This section provides the results to the IPP compliance tests" >>$strfile
487 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
488 echo `date "+%Y-%m-%d"` by
$user on
`hostname`.
>>$strfile
489 echo "<PRE>" >>$strfile
492 for file in 4*.
test; do
493 echo "Performing $file..."
496 .
/ipptest ipp
://localhost
:$port/printers
$file |
tee -a $strfile
499 if test $status != 0; then
501 fail
=`expr $fail + 1`
505 echo "</PRE>" >>$strfile
508 # Run the command tests...
512 echo "Running command tests..."
514 echo "<H1>2 - Command Tests</H1>" >>$strfile
515 echo "<P>This section provides the results to the command tests" >>$strfile
516 echo "outlined in the CUPS Software Test Plan. These tests were run on" >>$strfile
517 echo $date by
$user on
`hostname`.
>>$strfile
518 echo "<PRE>" >>$strfile
520 for file in 5*.sh
; do
521 echo "Performing $file..."
523 echo "\"$file\":" >>$strfile
525 sh
$file $pjobs |
tee -a $strfile
528 if test $status != 0; then
530 fail
=`expr $fail + 1`
534 echo "</PRE>" >>$strfile
543 # Append the log files for post-mortim...
546 echo "<H1>3 - Log Files</H1>" >>$strfile
554 echo "<H2>Summary</H2>" >>$strfile
556 # Pages printed on Test1 (within 1 page for timing-dependent cancel issues)
557 count
=`grep '^Test1 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
558 expected
=`expr $pjobs \* 2 + 34`
559 expected2
=`expr $expected + 2`
560 if test $count -lt $expected -a $count -gt $expected2; then
561 echo "FAIL: Printer 'Test1' produced $count page(s), expected $expected."
562 echo "<P>FAIL: Printer 'Test1' produced $count page(s), expected $expected.</P>" >>$strfile
563 fail
=`expr $fail + 1`
565 echo "PASS: Printer 'Test1' correctly produced $count page(s)."
566 echo "<P>PASS: Printer 'Test1' correctly produced $count page(s).</P>" >>$strfile
569 # Paged printed on Test2
570 count
=`grep '^Test2 ' /tmp/cups-$user/log/page_log | awk 'BEGIN{count=0}{count=count+$7}END{print count}'`
571 expected
=`expr $pjobs \* 2 + 3`
572 if test $count != $expected; then
573 echo "FAIL: Printer 'Test2' produced $count page(s), expected $expected."
574 echo "<P>FAIL: Printer 'Test2' produced $count page(s), expected $expected.</P>" >>$strfile
575 fail
=`expr $fail + 1`
577 echo "PASS: Printer 'Test2' correctly produced $count page(s)."
578 echo "<P>PASS: Printer 'Test2' correctly produced $count page(s).</P>" >>$strfile
581 # Requested processed
582 count
=`wc -l /tmp/cups-$user/log/access_log | awk '{print $1}'`
583 echo "PASS: $count requests processed."
584 echo "<P>PASS: $count requests processed.</P>" >>$strfile
586 # Emergency log messages
587 count
=`grep '^X ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
588 if test $count != 0; then
589 echo "FAIL: $count emergency messages, expected 0."
590 grep '^X ' /tmp
/cups-
$user/log
/error_log
591 echo "<P>FAIL: $count emergency messages, expected 0.</P>" >>$strfile
592 echo "<PRE>" >>$strfile
593 grep '^X ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
594 echo "</PRE>" >>$strfile
595 fail
=`expr $fail + 1`
597 echo "PASS: $count emergency messages."
598 echo "<P>PASS: $count emergency messages.</P>" >>$strfile
602 count
=`grep '^A ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
603 if test $count != 0; then
604 echo "FAIL: $count alert messages, expected 0."
605 grep '^A ' /tmp
/cups-
$user/log
/error_log
606 echo "<P>FAIL: $count alert messages, expected 0.</P>" >>$strfile
607 echo "<PRE>" >>$strfile
608 grep '^A ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
609 echo "</PRE>" >>$strfile
610 fail
=`expr $fail + 1`
612 echo "PASS: $count alert messages."
613 echo "<P>PASS: $count alert messages.</P>" >>$strfile
616 # Critical log messages
617 count
=`grep '^C ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
618 if test $count != 0; then
619 echo "FAIL: $count critical messages, expected 0."
620 grep '^C ' /tmp
/cups-
$user/log
/error_log
621 echo "<P>FAIL: $count critical messages, expected 0.</P>" >>$strfile
622 echo "<PRE>" >>$strfile
623 grep '^C ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
624 echo "</PRE>" >>$strfile
625 fail
=`expr $fail + 1`
627 echo "PASS: $count critical messages."
628 echo "<P>PASS: $count critical messages.</P>" >>$strfile
632 count
=`grep '^E ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
633 if test $count != 9; then
634 echo "FAIL: $count error messages, expected 9."
635 grep '^E ' /tmp
/cups-
$user/log
/error_log
636 echo "<P>FAIL: $count error messages, expected 9.</P>" >>$strfile
637 echo "<PRE>" >>$strfile
638 grep '^E ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
639 echo "</PRE>" >>$strfile
640 fail
=`expr $fail + 1`
642 echo "PASS: $count error messages."
643 echo "<P>PASS: $count error messages.</P>" >>$strfile
646 # Warning log messages
647 count
=`grep '^W ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
648 if test $count != 0; then
649 echo "FAIL: $count warning messages, expected 0."
650 grep '^W ' /tmp
/cups-
$user/log
/error_log
651 echo "<P>FAIL: $count warning messages, expected 0.</P>" >>$strfile
652 echo "<PRE>" >>$strfile
653 grep '^W ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
654 echo "</PRE>" >>$strfile
655 fail
=`expr $fail + 1`
657 echo "PASS: $count warning messages."
658 echo "<P>PASS: $count warning messages.</P>" >>$strfile
661 # Notice log messages
662 count
=`grep '^N ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
663 if test $count != 0; then
664 echo "FAIL: $count notice messages, expected 0."
665 grep '^N ' /tmp
/cups-
$user/log
/error_log
666 echo "<P>FAIL: $count notice messages, expected 0.</P>" >>$strfile
667 echo "<PRE>" >>$strfile
668 grep '^N ' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
669 echo "</PRE>" >>$strfile
670 fail
=`expr $fail + 1`
672 echo "PASS: $count notice messages."
673 echo "<P>PASS: $count notice messages.</P>" >>$strfile
677 count
=`grep '^I ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
678 if test $count = 0; then
679 echo "FAIL: $count info messages, expected more than 0."
680 echo "<P>FAIL: $count info messages, expected more than 0.</P>" >>$strfile
681 fail
=`expr $fail + 1`
683 echo "PASS: $count info messages."
684 echo "<P>PASS: $count info messages.</P>" >>$strfile
688 count
=`grep '^D ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
689 if test $count = 0; then
690 echo "FAIL: $count debug messages, expected more than 0."
691 echo "<P>FAIL: $count debug messages, expected more than 0.</P>" >>$strfile
692 fail
=`expr $fail + 1`
694 echo "PASS: $count debug messages."
695 echo "<P>PASS: $count debug messages.</P>" >>$strfile
698 # Debug2 log messages
699 count
=`grep '^d ' /tmp/cups-$user/log/error_log | wc -l | awk '{print $1}'`
700 if test $count = 0; then
701 echo "FAIL: $count debug2 messages, expected more than 0."
702 echo "<P>FAIL: $count debug2 messages, expected more than 0.</P>" >>$strfile
703 fail
=`expr $fail + 1`
705 echo "PASS: $count debug2 messages."
706 echo "<P>PASS: $count debug2 messages.</P>" >>$strfile
710 if grep -q 'testfile.pdf Letter' /tmp
/cups-
$user/log
/page_log
; then
711 echo "PASS: page_log formatted correctly."
712 echo "<P>PASS: page_log formatted correctly.</P>" >>$strfile
714 echo "FAIL: page_log formatted incorrectly."
715 echo "<P>FAIL: page_log formatted incorrectly.</P>" >>$strfile
716 fail
=`expr $fail + 1`
720 echo "<H2>access_log</H2>" >>$strfile
721 echo "<PRE>" >>$strfile
722 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp
/cups-
$user/log
/access_log
>>$strfile
723 echo "</PRE>" >>$strfile
725 echo "<H2>error_log</H2>" >>$strfile
726 echo "<PRE>" >>$strfile
727 grep -v '^[dD]' /tmp
/cups-
$user/log
/error_log |
sed -e '1,$s/&/&/g' -e '1,$s/</</g' >>$strfile
728 echo "</PRE>" >>$strfile
730 echo "<H2>page_log</H2>" >>$strfile
731 echo "<PRE>" >>$strfile
732 sed -e '1,$s/&/&/g' -e '1,$s/</</g' /tmp
/cups-
$user/log
/page_log
>>$strfile
733 echo "</PRE>" >>$strfile
736 # Format the reports and tell the user where to find them...
739 cat str-trailer.html
>>$strfile
743 if test $fail != 0; then
744 echo "$fail tests failed."
745 cp /tmp
/cups-
$user/log
/error_log error_log-
$date-$user
748 echo "All tests were successful."
751 echo "Log files can be found in /tmp/cups-$user/log."
752 echo "A HTML report was created in $strfile."
755 if test $fail != 0; then
756 echo "Copies of the error_log and `basename $strfile` files are in"
764 # End of "$Id: run-stp-tests.sh 7697 2008-06-27 15:56:00Z mike $"