]> git.eshelyaron.com Git - emacs.git/commitdiff
xml.c:parse_region: Do not forget the first document child.
authorUlf Jasper <>
Tue, 28 Oct 2014 20:33:12 +0000 (21:33 +0100)
committerUlf Jasper <ulf.jasper@web.de>
Tue, 28 Oct 2014 20:33:12 +0000 (21:33 +0100)
* src/xml.c (parse_region): Do not forget the first document child.

* test/automated/libxml-tests.el: New file.

src/ChangeLog
src/xml.c
test/ChangeLog
test/automated/libxml-tests.el [new file with mode: 0644]

index 64dabbbfadb4857d09340dbc378bf607b7278556..25009f8a310890b41ad69c423bae1d3c86f3db32 100644 (file)
@@ -1,3 +1,7 @@
+2014-10-28  Ulf Jasper  <ulf.jasper@web.de>
+
+       * xml.c (parse_region): Do not forget the first document child.
+
 2014-10-25  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsselect.m: pasteboard_changecount is new.
index feabe00efaba23dec8d5aef4a6b3dfe4fa4bd03b..7e99beb1d0560c6d1b35050f462ca08d23164f12 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -216,7 +216,7 @@ parse_region (Lisp_Object start, Lisp_Object end, Lisp_Object base_url, int html
     {
       /* If the document is just comments, then this should get us the
         nodes anyway. */
-      xmlNode *n = doc->children->next;
+      xmlNode *n = doc->children;
       Lisp_Object r = Qnil;
 
       while (n) {
index fb19252cd3452c49344212c03130974d11c175b9..86f8e240af433f493d1b302003ca9e89c275731a 100644 (file)
@@ -1,3 +1,7 @@
+2014-10-28  Ulf Jasper  <ulf.jasper@web.de>
+
+       * automated/libxml-tests.el: New file.
+
 2014-10-22  Noam Postavsky  <npostavs@users.sourceforget.net>
 
        * test/automated/process-tests.el (process-test-quoted-batfile):
diff --git a/test/automated/libxml-tests.el b/test/automated/libxml-tests.el
new file mode 100644 (file)
index 0000000..ced0df7
--- /dev/null
@@ -0,0 +1,56 @@
+;;; libxml-parse-tests.el --- Test suite for libxml parsing.
+
+;; Copyright (C) 2014 Free Software Foundation, Inc.
+
+;; Author: Ulf Jasper <ulf.jasper@web.de>
+;; Keywords:       internal
+;; Human-Keywords: internal
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert)
+
+(defvar libxml-tests--data
+  `(;; simple case
+    ("<?xml version=\"1.0\"?><foo baz=\"true\">bar</foo>"
+     . (foo ((baz . "true")) "bar"))
+    ;; toplevel comments -- first document child must not get lost
+    (,(concat "<?xml version=\"1.0\"?><foo>bar</foo><!--comment-1-->"
+             "<!--comment-2-->")
+     . (top nil (foo nil "bar") (comment nil "comment-1")
+            (comment nil "comment-2")))
+    (,(concat "<?xml version=\"1.0\"?><!--comment-a--><foo a=\"b\">"
+             "<bar>blub</bar></foo><!--comment-b--><!--comment-c-->")
+     . (top nil (comment nil "comment-a") (foo ((a . "b")) (bar nil "blub"))
+            (comment nil "comment-b") (comment nil "comment-c"))))
+  "Alist of XML strings and their expected parse trees.")
+
+
+(ert-deftest libxml-tests ()
+  "Test libxml."
+  (when (fboundp 'libxml-parse-xml-region)
+    (with-temp-buffer
+      (dolist (test libxml-tests--data)
+        (erase-buffer)
+        (insert (car test))
+        (should (equal (cdr test)
+                       (libxml-parse-xml-region (point-min) (point-max))))))))
+
+;;; libxml-tests.el ends here