mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-29 11:41:22 +03:00
fixed some htmlSetMetaEncoding() problems fixup and integrated tests for
* HTMLtree.c: fixed some htmlSetMetaEncoding() problems * python/libxml.c python/tests/Makefile.am python/tests/serialize.py: fixup and integrated tests for the serialization stuff Daniel
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
Wed Mar 6 22:38:03 CET 2002 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
|
* HTMLtree.c: fixed some htmlSetMetaEncoding() problems
|
||||||
|
* python/libxml.c python/tests/Makefile.am python/tests/serialize.py:
|
||||||
|
fixup and integrated tests for the serialization stuff
|
||||||
|
|
||||||
Wed Mar 6 19:40:57 CET 2002 Daniel Veillard <daniel@veillard.com>
|
Wed Mar 6 19:40:57 CET 2002 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* Makefile.am libxml.3 libxml.4 libxml.spec.in: Fixed bug #72570
|
* Makefile.am libxml.3 libxml.4 libxml.spec.in: Fixed bug #72570
|
||||||
|
10
HTMLtree.c
10
HTMLtree.c
@ -242,11 +242,9 @@ found_meta:
|
|||||||
xmlAttrPtr attr = cur->properties;
|
xmlAttrPtr attr = cur->properties;
|
||||||
int http;
|
int http;
|
||||||
const xmlChar *value;
|
const xmlChar *value;
|
||||||
int same_charset;
|
|
||||||
|
|
||||||
content = NULL;
|
content = NULL;
|
||||||
http = 0;
|
http = 0;
|
||||||
same_charset = 0;
|
|
||||||
while (attr != NULL) {
|
while (attr != NULL) {
|
||||||
if ((attr->children != NULL) &&
|
if ((attr->children != NULL) &&
|
||||||
(attr->children->type == XML_TEXT_NODE) &&
|
(attr->children->type == XML_TEXT_NODE) &&
|
||||||
@ -264,17 +262,13 @@ found_meta:
|
|||||||
if ((value != NULL) &&
|
if ((value != NULL) &&
|
||||||
(!xmlStrcasecmp(attr->name, BAD_CAST"content")))
|
(!xmlStrcasecmp(attr->name, BAD_CAST"content")))
|
||||||
content = value;
|
content = value;
|
||||||
else
|
|
||||||
if ((!xmlStrcasecmp(attr->name, BAD_CAST"charset"))
|
|
||||||
&& (!xmlStrcasecmp(value, encoding)))
|
|
||||||
same_charset = 1;
|
|
||||||
}
|
}
|
||||||
if ((http != 0) && (content != NULL) && (same_charset != 0))
|
if ((http != 0) && (content != NULL))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
attr = attr->next;
|
attr = attr->next;
|
||||||
}
|
}
|
||||||
if ((http != 0) && (content != NULL) && (same_charset != 0)) {
|
if ((http != 0) && (content != NULL)) {
|
||||||
meta = cur;
|
meta = cur;
|
||||||
cur = cur->next;
|
cur = cur->next;
|
||||||
xmlUnlinkNode(meta);
|
xmlUnlinkNode(meta);
|
||||||
|
@ -1491,8 +1491,9 @@ libxml_serializeNode(PyObject *self, PyObject *args) {
|
|||||||
xmlCharEncodingHandlerPtr handler = NULL;
|
xmlCharEncodingHandlerPtr handler = NULL;
|
||||||
|
|
||||||
doc = (xmlDocPtr) node;
|
doc = (xmlDocPtr) node;
|
||||||
if (encoding == NULL)
|
if (encoding != NULL)
|
||||||
encoding = (xmlChar *) htmlGetMetaEncoding(doc);
|
htmlSetMetaEncoding(doc, encoding);
|
||||||
|
encoding = (xmlChar *) htmlGetMetaEncoding(doc);
|
||||||
|
|
||||||
if (encoding != NULL) {
|
if (encoding != NULL) {
|
||||||
handler = xmlFindCharEncodingHandler(encoding);
|
handler = xmlFindCharEncodingHandler(encoding);
|
||||||
@ -1564,6 +1565,9 @@ libxml_serializeNode(PyObject *self, PyObject *args) {
|
|||||||
xmlOutputBufferPtr buf;
|
xmlOutputBufferPtr buf;
|
||||||
xmlCharEncodingHandlerPtr handler = NULL;
|
xmlCharEncodingHandlerPtr handler = NULL;
|
||||||
|
|
||||||
|
if (encoding != NULL)
|
||||||
|
htmlSetMetaEncoding(doc, encoding);
|
||||||
|
encoding = (xmlChar *) htmlGetMetaEncoding(doc);
|
||||||
if (encoding != NULL) {
|
if (encoding != NULL) {
|
||||||
handler = xmlFindCharEncodingHandler(encoding);
|
handler = xmlFindCharEncodingHandler(encoding);
|
||||||
if (handler == NULL) {
|
if (handler == NULL) {
|
||||||
|
@ -8,6 +8,7 @@ PYTESTS= \
|
|||||||
push.py \
|
push.py \
|
||||||
pushSAX.py \
|
pushSAX.py \
|
||||||
error.py \
|
error.py \
|
||||||
|
serialize.py\
|
||||||
validate.py \
|
validate.py \
|
||||||
tstURI.py \
|
tstURI.py \
|
||||||
xpathret.py \
|
xpathret.py \
|
||||||
|
150
python/tests/serialize.py
Executable file
150
python/tests/serialize.py
Executable file
@ -0,0 +1,150 @@
|
|||||||
|
#!/usr/bin/python -u
|
||||||
|
import sys
|
||||||
|
import libxml2
|
||||||
|
|
||||||
|
# Memory debug specific
|
||||||
|
libxml2.debugMemory(1)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Testing XML document serialization
|
||||||
|
#
|
||||||
|
doc = libxml2.parseDoc("""<root><foo>hello</foo></root>""")
|
||||||
|
str = doc.serialize()
|
||||||
|
if str != """<?xml version="1.0"?>
|
||||||
|
<root><foo>hello</foo></root>
|
||||||
|
""":
|
||||||
|
print "error serializing XML document 1"
|
||||||
|
sys.exit(1)
|
||||||
|
str = doc.serialize("iso-8859-1")
|
||||||
|
if str != """<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<root><foo>hello</foo></root>
|
||||||
|
""":
|
||||||
|
print "error serializing XML document 2"
|
||||||
|
sys.exit(1)
|
||||||
|
str = doc.serialize(format=1)
|
||||||
|
if str != """<?xml version="1.0"?>
|
||||||
|
<root>
|
||||||
|
<foo>hello</foo>
|
||||||
|
</root>
|
||||||
|
""":
|
||||||
|
print "error serializing XML document 3"
|
||||||
|
sys.exit(1)
|
||||||
|
str = doc.serialize("iso-8859-1", 1)
|
||||||
|
if str != """<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<root>
|
||||||
|
<foo>hello</foo>
|
||||||
|
</root>
|
||||||
|
""":
|
||||||
|
print "error serializing XML document 4"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test serializing a subnode
|
||||||
|
#
|
||||||
|
root = doc.getRootElement()
|
||||||
|
str = root.serialize()
|
||||||
|
if str != """<root><foo>hello</foo></root>""":
|
||||||
|
print "error serializing XML root 1"
|
||||||
|
sys.exit(1)
|
||||||
|
str = root.serialize("iso-8859-1")
|
||||||
|
if str != """<root><foo>hello</foo></root>""":
|
||||||
|
print "error serializing XML root 2"
|
||||||
|
sys.exit(1)
|
||||||
|
str = root.serialize(format=1)
|
||||||
|
if str != """<root>
|
||||||
|
<foo>hello</foo>
|
||||||
|
</root>""":
|
||||||
|
print "error serializing XML root 3"
|
||||||
|
sys.exit(1)
|
||||||
|
str = root.serialize("iso-8859-1", 1)
|
||||||
|
if str != """<root>
|
||||||
|
<foo>hello</foo>
|
||||||
|
</root>""":
|
||||||
|
print "error serializing XML root 4"
|
||||||
|
sys.exit(1)
|
||||||
|
doc.freeDoc()
|
||||||
|
|
||||||
|
#
|
||||||
|
# Testing HTML document serialization
|
||||||
|
#
|
||||||
|
doc = libxml2.htmlParseDoc("""<html><head><title>Hello</title><body><p>hello</body></html>""", None)
|
||||||
|
str = doc.serialize()
|
||||||
|
if str != """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html><head><title>Hello</title></head><body><p>hello</p></body></html>
|
||||||
|
""":
|
||||||
|
print "error serializing HTML document 1"
|
||||||
|
sys.exit(1)
|
||||||
|
str = doc.serialize("ISO-8859-1")
|
||||||
|
if str != """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>Hello</title></head><body><p>hello</p></body></html>
|
||||||
|
""":
|
||||||
|
print "error serializing HTML document 2"
|
||||||
|
sys.exit(1)
|
||||||
|
str = doc.serialize(format=1)
|
||||||
|
if str != """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
|
||||||
|
<title>Hello</title>
|
||||||
|
</head>
|
||||||
|
<body><p>hello</p></body>
|
||||||
|
</html>
|
||||||
|
""":
|
||||||
|
print "error serializing HTML document 3"
|
||||||
|
sys.exit(1)
|
||||||
|
str = doc.serialize("iso-8859-1", 1)
|
||||||
|
if str != """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
|
||||||
|
<title>Hello</title>
|
||||||
|
</head>
|
||||||
|
<body><p>hello</p></body>
|
||||||
|
</html>
|
||||||
|
""":
|
||||||
|
print "error serializing HTML document 4"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test serializing a subnode
|
||||||
|
#
|
||||||
|
doc.htmlSetMetaEncoding(None)
|
||||||
|
root = doc.getRootElement()
|
||||||
|
str = root.serialize()
|
||||||
|
if str != """<html><head><title>Hello</title></head><body><p>hello</p></body></html>""":
|
||||||
|
print "error serializing HTML root 1"
|
||||||
|
sys.exit(1)
|
||||||
|
str = root.serialize("ISO-8859-1")
|
||||||
|
if str != """<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>Hello</title></head><body><p>hello</p></body></html>""":
|
||||||
|
print "error serializing HTML root 2"
|
||||||
|
sys.exit(1)
|
||||||
|
str = root.serialize(format=1)
|
||||||
|
if str != """<html>
|
||||||
|
<head>
|
||||||
|
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
|
||||||
|
<title>Hello</title>
|
||||||
|
</head>
|
||||||
|
<body><p>hello</p></body>
|
||||||
|
</html>""":
|
||||||
|
print "error serializing HTML root 3"
|
||||||
|
sys.exit(1)
|
||||||
|
str = root.serialize("iso-8859-1", 1)
|
||||||
|
if str != """<html>
|
||||||
|
<head>
|
||||||
|
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
|
||||||
|
<title>Hello</title>
|
||||||
|
</head>
|
||||||
|
<body><p>hello</p></body>
|
||||||
|
</html>""":
|
||||||
|
print "error serializing HTML root 4"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
doc.freeDoc()
|
||||||
|
|
||||||
|
# Memory debug specific
|
||||||
|
libxml2.cleanupParser()
|
||||||
|
if libxml2.debugMemory(1) == 0:
|
||||||
|
print "OK"
|
||||||
|
else:
|
||||||
|
print "Memory leak %d bytes" % (libxml2.debugMemory(1))
|
||||||
|
libxml2.dumpMemory()
|
Reference in New Issue
Block a user