diff options
| author | Chong Yidong | 2012-07-05 00:14:05 +0800 |
|---|---|---|
| committer | Chong Yidong | 2012-07-05 00:14:05 +0800 |
| commit | 566df3fcac8010303c1d8b8558cb07f3a057b346 (patch) | |
| tree | c03584ee0936855ce95cb9e84c241cc016c095f5 /test | |
| parent | 0781098af7c8da77b1d044dce151e6a130eb1e77 (diff) | |
| download | emacs-566df3fcac8010303c1d8b8558cb07f3a057b346.tar.gz emacs-566df3fcac8010303c1d8b8558cb07f3a057b346.zip | |
Clean up syntax-table usage in xml.el
* xml.el (xml--parse-buffer): Use xml-syntax-table.
(xml-parse-tag): Likewise, and avoid changing entity tables.
(xml-syntax-table): Define from scratch, making sure not to give
x2000 and other Unicode spaces whitespace syntax, since those are
not spaces in XML.
(xml-parse-fragment): Delete unused function.
(xml-name-start-char-re, xml-name-char-re, xml-name-re)
(xml-names-re, xml-nmtoken-re, xml-nmtokens-re, xml-char-ref-re)
(xml-entity-ref, xml-pe-reference-re)
(xml-reference-re,xml-att-value-re, xml-tokenized-type-re)
(xml-notation-type-re, xml-enumeration-re, xml-enumerated-type-re)
(xml-att-type-re, xml-default-decl-re, xml-att-def-re)
(xml-entity-value-re): Use syntax references in regexps where
possible; no need to define inside a let-binding.
(xml-parse-dtd): Use xml-pe-reference-re.
(xml-entity-or-char-ref-re): New defconst.
(xml-parse-string, xml-substitute-special): Use it.
Diffstat (limited to 'test')
| -rw-r--r-- | test/automated/xml-parse-tests.el | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/test/automated/xml-parse-tests.el b/test/automated/xml-parse-tests.el index ada9bbd4074..e6553060345 100644 --- a/test/automated/xml-parse-tests.el +++ b/test/automated/xml-parse-tests.el | |||
| @@ -30,10 +30,10 @@ | |||
| 30 | (require 'xml) | 30 | (require 'xml) |
| 31 | 31 | ||
| 32 | (defvar xml-parse-tests--data | 32 | (defvar xml-parse-tests--data |
| 33 | '(;; General entity substitution | 33 | `(;; General entity substitution |
| 34 | ("<?xml version=\"1.0\"?><!DOCTYPE foo SYSTEM \"bar.dtd\" [<!ENTITY ent \"AbC\">]><foo a=\"b\"><bar>&ent;;</bar></foo>" . | 34 | ("<?xml version=\"1.0\"?><!DOCTYPE foo SYSTEM \"bar.dtd\" [<!ENTITY ent \"AbC\">]><foo a=\"b\"><bar>&ent;;</bar></foo>" . |
| 35 | ((foo ((a . "b")) (bar nil "AbC;")))) | 35 | ((foo ((a . "b")) (bar nil "AbC;")))) |
| 36 | ("<?xml version=\"1.0\"?><foo>&amp;&apos;'<>"</foo>" . | 36 | ("<?xml version=\"1.0\"?><foo>&amp;&apos;'<>"</foo>" . |
| 37 | ((foo () "&''<>\""))) | 37 | ((foo () "&''<>\""))) |
| 38 | ;; Parameter entity substitution | 38 | ;; Parameter entity substitution |
| 39 | ("<?xml version=\"1.0\"?><!DOCTYPE foo SYSTEM \"bar.dtd\" [<!ENTITY % pent \"AbC\"><!ENTITY ent \"%pent;\">]><foo a=\"b\"><bar>&ent;;</bar></foo>" . | 39 | ("<?xml version=\"1.0\"?><!DOCTYPE foo SYSTEM \"bar.dtd\" [<!ENTITY % pent \"AbC\"><!ENTITY ent \"%pent;\">]><foo a=\"b\"><bar>&ent;;</bar></foo>" . |
| @@ -52,7 +52,11 @@ | |||
| 52 | ((foo ((a . "-aBc-")) "1"))) | 52 | ((foo ((a . "-aBc-")) "1"))) |
| 53 | ;; Character references must be treated as character data | 53 | ;; Character references must be treated as character data |
| 54 | ("<foo>AT&T;</foo>" . ((foo () "AT&T;"))) | 54 | ("<foo>AT&T;</foo>" . ((foo () "AT&T;"))) |
| 55 | ("<foo>&amp;</foo>" . ((foo () "&")))) | 55 | ("<foo>&amp;</foo>" . ((foo () "&"))) |
| 56 | ("<foo>&amp;</foo>" . ((foo () "&"))) | ||
| 57 | ;; Unusual but valid XML names [5] | ||
| 58 | ("<ÀÖØö.3·-‿⁀>abc</ÀÖØö.3·-‿⁀>" . ((,(intern "ÀÖØö.3·-‿⁀") () "abc"))) | ||
| 59 | ("<:>abc</:>" . ((,(intern ":") () "abc")))) | ||
| 56 | "Alist of XML strings and their expected parse trees.") | 60 | "Alist of XML strings and their expected parse trees.") |
| 57 | 61 | ||
| 58 | (defvar xml-parse-tests--bad-data | 62 | (defvar xml-parse-tests--bad-data |
| @@ -63,7 +67,11 @@ | |||
| 63 | ;; Non-terminating DTD | 67 | ;; Non-terminating DTD |
| 64 | "<!DOCTYPE foo [ <!ENTITY b \"B\"><!ENTITY abc \"a&b;c\">" | 68 | "<!DOCTYPE foo [ <!ENTITY b \"B\"><!ENTITY abc \"a&b;c\">" |
| 65 | "<!DOCTYPE foo [ <!ENTITY b \"B\"><!ENTITY abc \"a&b;c\">asdf" | 69 | "<!DOCTYPE foo [ <!ENTITY b \"B\"><!ENTITY abc \"a&b;c\">asdf" |
| 66 | "<!DOCTYPE foo [ <!ENTITY b \"B\"><!ENTITY abc \"a&b;c\">asdf&abc;") | 70 | "<!DOCTYPE foo [ <!ENTITY b \"B\"><!ENTITY abc \"a&b;c\">asdf&abc;" |
| 71 | ;; Invalid XML names | ||
| 72 | "<0foo>abc</0foo>" | ||
| 73 | "<‿foo>abc</‿foo>" | ||
| 74 | "<f¿>abc</f¿>") | ||
| 67 | "List of XML strings that should signal an error in the parser") | 75 | "List of XML strings that should signal an error in the parser") |
| 68 | 76 | ||
| 69 | (ert-deftest xml-parse-tests () | 77 | (ert-deftest xml-parse-tests () |