[armedbear-cvs] r12508 - trunk/abcl/test/lisp/ansi
Mark Evenson
mevenson at common-lisp.net
Sat Feb 27 06:59:25 UTC 2010
Author: mevenson
Date: Sat Feb 27 01:59:24 2010
New Revision: 12508
Log:
Code for parsing ANSI errors database.
Added:
trunk/abcl/test/lisp/ansi/parse-ansi-errors.lisp
Added: trunk/abcl/test/lisp/ansi/parse-ansi-errors.lisp
==============================================================================
--- (empty file)
+++ trunk/abcl/test/lisp/ansi/parse-ansi-errors.lisp Sat Feb 27 01:59:24 2010
@@ -0,0 +1,80 @@
+;;;; $Id$
+;;;; Parse ANSI test list
+;;;;
+;;;; 'cuz I get lost after comparing about five items in a list
+;;;;
+
+#|
+
+To use
+
+1. create a "database" of test results consisting of S-exp of form
+
+ (compileit|doit <version> (<failing test results>))
+
+where
+
+ compileit|doit The symbol 'compileit' or 'doit' depending on
+ whether the compiled or interpreted tests were run.
+
+ version A symbol identifying the version of source of the
+ tests.
+
+ <failing test results>
+ The list of symbols failing the tests.
+
+An example:
+
+(compileit 0.18.1 (REINITIALIZE-INSTANCE.ERROR.1 DEFGENERIC.ERROR.20
+DEFGENERIC.ERROR.21 DEFGENERIC.30 CALL-NEXT-METHOD.ERROR.1
+CALL-NEXT-METHOD.ERROR.2 DEFMETHOD.ERROR.14 DEFMETHOD.ERROR.15
+MAKE-CONDITION.3 MAKE-CONDITION.4 DELETE-PACKAGE.5 DELETE-PACKAGE.6
+MAP.48 TYPE-OF.1 TYPE-OF.4 CHAR-UPCASE.2 CHAR-DOWNCASE.2
+ENSURE-DIRECTORIES-EXIST.8 FRESH-LINE.5 MAKE-BROADCAST-STREAM.8
+PRINT.BACKQUOTE.RANDOM.14 PRINT.RANDOM-STATE.1 PPRINT-FILL.14
+PPRINT-FILL.15 PPRINT-LINEAR.14 PPRINT-TABULAR.13
+PPRINT-LOGICAL-BLOCK.17 PPRINT-POP.7 PPRINT-POP.8
+FORMAT.LOGICAL-BLOCK.CIRCLE.1 FORMAT.LOGICAL-BLOCK.CIRCLE.2
+FORMAT.LOGICAL-BLOCK.CIRCLE.3 FORMAT.JUSTIFY.30 FORMAT.JUSTIFY.32
+WITH-STANDARD-IO-SYNTAX.23 TRACE.8)).
+
+2. Run (PARSE <filename>) on the file of your database.
+
+3. Then differences between versions can be queried via DIFFERENCE
+
+ CL-USER> (difference 'compileit '0.18.0 'r13590)
+
+|#
+
+(defvar *doit* (make-hash-table))
+(defvar *compileit* (make-hash-table))
+
+(defun get-hash-table (test)
+ (getf `(doit ,*doit* compileit ,*compileit*) test))
+
+(defun parse (&optional (file #p"failures")
+ (with-open-file (s file :direction :input)
+ (do ((form (read s) (read s nil nil)))
+ ((null form))
+ (destructuring-bind (test version failures) form
+ (setf (gethash version
+ (get-hash-table test))
+ failures)))))
+
+(defun versions (test)
+ (loop :for key :being :the :hash-keys :of (get-hash-table test)
+ :collecting key))
+
+(defun difference (test version-1 version-2)
+ (let ((failures-1 (gethash version-1 (get-hash-table test)))
+ (failures-2 (gethash version-2 (get-hash-table test))))
+ (format t "~A: ~A failures~% ~A~%"
+ version-1 (length failures-1) (set-difference failures-1 failures-2))
+ (format t "~A: ~A failures~% ~A~%"
+ version-2 (length failures-2) (set-difference failures-2 failures-1)))
+ (values))
+
+
+
+
+
\ No newline at end of file
More information about the armedbear-cvs
mailing list