DOM 2 Core. Ungetestet, aber die 1er tests laufen wieder, daher rein damit.

This commit is contained in:
dlichteblau
2005-12-04 18:43:49 +00:00
parent 0e994ba607
commit 74cb5b7f8c
15 changed files with 1299 additions and 811 deletions

View File

@ -142,11 +142,14 @@
(c = (elt str i))
:until (runes:rune= c #.(runes:char-rune #\")))
(if (runes:rune= c #.(runes:char-rune #\\))
(ecase (progn
(let ((frob
(progn
(incf i)
(elt str i))
;; ...
(#/n (vector-push-extend #/newline v (length v))))
(elt str i))))
(ecase frob
;; ...
(#/n (vector-push-extend #/newline v (length v)))
((#/\\ #/\") (vector-push-extend #/\\ v (length v)))))
(vector-push-extend c v (length v))))
(coerce v 'runes::simple-rod)))
(t
@ -163,13 +166,14 @@
;;;; dom1-interfaces.xml auslesen
(defvar *methods* '())
(defvar *fields* '())
(defparameter *methods* '())
(defparameter *fields* '())
(declaim (special *directory*))
(declaim (special *files-directory*))
(defun read-members ()
(let* ((pathname (merge-pathnames "patches/dom1-interfaces.xml" *directory*))
(defun read-members (&optional (directory *directory*))
(let* ((pathname (merge-pathnames "build/dom2-interfaces.xml" directory))
(builder (dom:make-dom-builder))
(library (dom:document-element (cxml:parse-file pathname builder)))
(methods '())
@ -554,8 +558,15 @@
(defun assert-have-implementation-attribute (element)
(let ((attribute (runes:rod-string (dom:get-attribute element "name"))))
(string-case attribute
;; fixme: expandEntityReferences sollten wir auch mal anschalten, wo
;; wir uns schon die muehe machen...
("validating"
(setf cxml::*validate* t))
("namespaceAware"
;; ??? dom 2 ohne namespace-support gibt's doch gar nicht,
;; ausser vielleicht in html-only implementationen, und dann sollen
;; sie halt auf hasFeature "XML" testen.
)
(t
(format t "~&implementationAttribute ~A not supported, skipping test~%"
attribute)
@ -606,12 +617,9 @@
(defun load-file (name &optional will-be-modified-p)
(declare (ignore will-be-modified-p))
(setf name (runes:rod-string name))
(let* ((directory (merge-pathnames "tests/level1/core/files/" *directory*))
(document
(cxml:parse-file
(make-pathname :name name :type "xml" :defaults directory)
(dom:make-dom-builder))))
document))
(cxml:parse-file
(make-pathname :name name :type "xml" :defaults *files-directory*)
(dom:make-dom-builder)))
(defparameter *bad-tests*
'("hc_elementnormalize2.xml"
@ -628,39 +636,57 @@
(defun run-all-tests (*directory* &optional verbose)
(let* ((cxml::*redefinition-warning* nil)
(test-directory (merge-pathnames "tests/level1/core/" *directory*))
(all-tests (merge-pathnames "alltests.xml" test-directory))
(builder (dom:make-dom-builder))
(suite (dom:document-element (cxml:parse-file all-tests builder)))
(n 0)
(i 0)
(ntried 0)
(nfailed 0))
(do-child-elements (member suite)
(unless
(or (equal (dom:tag-name member) "metadata")
(member (runes:rod-string (dom:get-attribute member "href"))
*bad-tests*
:test 'equal))
(incf n)))
(do-child-elements (member suite)
(let ((href (runes:rod-string (dom:get-attribute member "href"))))
(unless (or (runes:rod= (dom:tag-name member) #"metadata")
(member href *bad-tests* :test 'equal))
(format t "~&~D/~D ~A~%" i n href)
(let ((lisp (slurp-test (merge-pathnames href test-directory))))
(when verbose
(print lisp))
(when lisp
(incf ntried)
(with-simple-restart (skip-test "Skip this test")
(handler-case
(let ((cxml::*validate* nil))
(funcall (compile nil lisp)))
(serious-condition (c)
(incf nfailed)
(warn "test failed: ~A" c))))))
(incf i))))
(flet ((parse (test-directory)
(let* ((all-tests (merge-pathnames "alltests.xml" test-directory))
(builder (dom:make-dom-builder))
(suite (dom:document-element
(cxml:parse-file all-tests builder)))
(*files-directory*
(merge-pathnames "files/" test-directory)))
(do-child-elements (member suite)
(unless
(or (equal (dom:tag-name member) "metadata")
(member (runes:rod-string
(dom:get-attribute member "href"))
*bad-tests*
:test 'equal))
(incf n)))
suite))
(run (test-directory suite)
(print test-directory)
(let ((*files-directory*
(merge-pathnames "files/" test-directory)))
(do-child-elements (member suite)
(let ((href (runes:rod-string
(dom:get-attribute member "href"))))
(unless (or (runes:rod= (dom:tag-name member) #"metadata")
(member href *bad-tests* :test 'equal))
(format t "~&~D/~D ~A~%" i n href)
(let ((lisp (slurp-test
(merge-pathnames href test-directory))))
(when verbose
(print lisp))
(when lisp
(incf ntried)
(with-simple-restart (skip-test "Skip this test")
(handler-case
(let ((cxml::*validate* nil))
(funcall (compile nil lisp)))
(serious-condition (c)
(incf nfailed)
(warn "test failed: ~A" c))))))
(incf i)))))))
(let* ((d1 (merge-pathnames "tests/level1/core/" *directory*))
(d2 (merge-pathnames "tests/level2/core/" *directory*))
(suite1 (parse d1))
(suite2 (parse d2)))
(run d1 suite1)
#+(or)
(run d2 suite2)))
(format t "~&~D/~D tests failed; ~D test~:P were skipped"
nfailed ntried (- n ntried))))