anchor.diff:                    (format description "Render:~a~%" condition)))))))))
   
   (defun run-drawing-tests ()
  -  (run-frame-top-level
  -   (make-application-frame
  -    'drawing-tests)))
  +  (run-frame-top-level (make-application-frame
  +                        'drawing-tests)))
  +
  +(defun drawing-test-print-log (fmt &rest args)
  +  (when *application-frame*
  +    (apply #'format (find-pane-named *application-frame* 'description)
  +           fmt args)))
  +
  +(defun drawing-test-print (stream test filename)
  +  (with-slots (category name description) test
  +    (with-text-style (stream (make-text-style :sans-serif :roman :small))
  +      (format stream "~&~a:~%~a~%" (drawing-test-keyname category name) description))
  +    (with-drawing-options (stream :transformation (make-translation-transformation 0 72))
  +      (funcall (drawing-test-display-function test) clim:*application-frame*
  +               stream))
  +    (drawing-test-print-log "~&Writing ~A~%" filename)))
   
   (defun drawing-test-postscript (test &optional filename)
     (let* ((test (if (stringp test) (gethash test *drawing-tests*) test))
  -         (test-name (drawing-test-name test))
  -         (filename (or filename (format nil "/tmp/~a.eps"
  -                                        test-name))))
  +         (filename (or filename (format nil "/tmp/~a-~a.eps"
  +                                        (drawing-test-category test)
  +                                        (drawing-test-name test)))))
       (with-open-file (out filename :direction :output :if-exists :supersede)
         (with-output-to-postscript-stream (stream out :device-type :eps)
  -        #+nil
  -        (with-text-style (stream (make-text-style :sans-serif :roman :normal))
  -          (format stream "~&~a: ~a~%" test-name (drawing-test-description test)))
  -        (funcall (drawing-test-drawer test) stream)))))
  +        (drawing-test-print stream test filename)))))
   
   (defun print-all-postscript-tests ()
     (loop for test being the hash-values of *drawing-tests* do
          (restart-case (drawing-test-postscript test)
            (:skip ()
  -           :report (lambda (stream) (format stream "skip ~a" (drawing-test-name test)))))))
  -
  +          :report (lambda (stream)
  +                    (format stream "skip ~a-~a"
  +                            (drawing-test-category test)
  +                            (drawing-test-name test)))))))
   
   (defun drawing-test-pdf (test &optional filename)
     (let* ((test (if (stringp test) (gethash test *drawing-tests*) test))
  -         (test-name (drawing-test-name test))
  -         (filename (or filename (format nil "/tmp/~a.pdf"
  -                                        test-name))))
  +         (filename (or filename (format nil "/tmp/~a-~a.pdf"
  +                                        (drawing-test-category test)
  +                                        (drawing-test-name test)))))
       (with-open-file (out filename :direction :output :if-exists :supersede
  -                         :element-type '(unsigned-byte 8))
  +                                  :element-type '(unsigned-byte 8))
         (clim-pdf:with-output-to-pdf-stream (stream out)
  -        (with-text-style (stream (make-text-style :sans-serif :roman :normal))
  -          (format stream "~&~a: ~a~%" test-name (drawing-test-description test)))
  -        (funcall (drawing-test-drawer test) stream)))))
  +        (drawing-test-print stream test filename)))))
   
   (defun print-all-pdf-tests ()
     (loop for test being the hash-values of *drawing-tests* do
  -       (restart-case (drawing-test-pdf test)
  -         (:skip ()
  -           :report (lambda (stream) (format stream "skip ~a" (drawing-test-name test)))))))
  +    (restart-case (drawing-test-pdf test)
  +      (:skip ()
  +       :report (lambda (stream)
  +                 (format stream "skip ~a-~a"
  +                         (drawing-test-category test)
  +                         (drawing-test-name test)))))))
   
   (defun print-pdf-test (test-name)
     (let ((test (gethash test-name *drawing-tests*)))
       (when test
         (restart-case (drawing-test-pdf test)
           (:skip ()
  -          :report (lambda (stream) (format stream "skip ~a" (drawing-test-name test))))))))
  +         :report (lambda (stream)
  +                   (format stream "skip ~a-~a"
  +                           (drawing-test-category test)
  +                           (drawing-test-name test))))))))
   
   (defun drawing-test-raster-image (test format &optional filename)
     (let* ((test (if (stringp test) (gethash test *drawing-tests*) test))
  -         (test-name (drawing-test-name test))
  -         (filename (or filename (format nil "/tmp/output-~a.~a"
  -                                        test-name format))))
  +         (filename (or filename (format nil "/tmp/~a-~a.~a"
  +                                        (drawing-test-category test)
  +                                        (drawing-test-name test) format)))
  +         (height (+ 72 *height*)))
       (with-open-file (out filename :element-type '(unsigned-byte 8)
  -                         :direction :output :if-exists :supersede)
  +                                  :direction :output :if-exists :supersede)
         (mcclim-raster-image:with-output-to-raster-image-stream
  -          (stream out format :width *width* :height *height*)
  -        (clim:draw-rectangle* stream 0 0 *width* *height* :filled t
  -                              :ink clim:+grey90+)
  -        (funcall (drawing-test-drawer test) stream)))))
  +          (stream out format :width *width* :height height)
  +        (clim:draw-rectangle* stream 0 0 *width* height :filled t
  +                                                        :ink clim:+grey90+)
  +        (drawing-test-print stream test filename)))))
   
   (defun print-all-raster-image-tests (format)
     (time
      (loop for test being the hash-values of *drawing-tests* do
  -        (restart-case (drawing-test-raster-image test format)
  -          (:skip ()
  -            :report (lambda (stream)
  -                      (format stream "skip ~a" (drawing-test-name test))))))))
  +     (restart-case (drawing-test-raster-image test format)
  +       (:skip ()
  +        :report (lambda (stream)
  +                  (format stream "skip ~a-~a"
  +                          (drawing-test-category test)
  +                          (drawing-test-name test))))))))
   
   ;;;
   ;;; utility functions
  
positive.code:           (draw-design stream (region-intersection ellipse line)
                         :ink +dark-green+ :line-thickness 5))))))
  
  (define-drawing-test "05) Ellipse angle transformations" (stream)
      "Uses internal interfaces. We should see 6 ellipses with limited
  angle. First four should be filled and should have angle radius drawn. Last two
  should not be filled (and no angle radius is drawn). Each ellipse is bound by
  
negative.code:                                    (clim:draw-rectangle* stream 0 0 *width* *height*
                                                           :filled t
                                                           :ink clim:+grey90+)
                                     (funcall (drawing-test-display-function item) frame stream))))
                      (draw-pattern* output pattern 0 0)
                      (medium-finish-output (sheet-medium output))))
                (simple-error (condition)
  