diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2002-03-06 21:39:42 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2002-03-06 21:39:42 +0000 |
commit | 4e0e29746889d4a70728e6406eed2f546287bdd6 (patch) | |
tree | 4ed60303bdd125885d709608ded57fbdab02c320 /python | |
parent | e915b2d423f00add4abd968390e96edcf5d7e6a4 (diff) | |
download | libxml2-4e0e29746889d4a70728e6406eed2f546287bdd6.tar.gz |
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
Diffstat (limited to 'python')
-rw-r--r-- | python/libxml.c | 8 | ||||
-rw-r--r-- | python/tests/Makefile.am | 1 | ||||
-rwxr-xr-x | python/tests/serialize.py | 150 |
3 files changed, 157 insertions, 2 deletions
diff --git a/python/libxml.c b/python/libxml.c index efa42fcd..026b0bc2 100644 --- a/python/libxml.c +++ b/python/libxml.c @@ -1491,8 +1491,9 @@ libxml_serializeNode(PyObject *self, PyObject *args) { xmlCharEncodingHandlerPtr handler = NULL; doc = (xmlDocPtr) node; - if (encoding == NULL) - encoding = (xmlChar *) htmlGetMetaEncoding(doc); + if (encoding != NULL) + htmlSetMetaEncoding(doc, encoding); + encoding = (xmlChar *) htmlGetMetaEncoding(doc); if (encoding != NULL) { handler = xmlFindCharEncodingHandler(encoding); @@ -1564,6 +1565,9 @@ libxml_serializeNode(PyObject *self, PyObject *args) { xmlOutputBufferPtr buf; xmlCharEncodingHandlerPtr handler = NULL; + if (encoding != NULL) + htmlSetMetaEncoding(doc, encoding); + encoding = (xmlChar *) htmlGetMetaEncoding(doc); if (encoding != NULL) { handler = xmlFindCharEncodingHandler(encoding); if (handler == NULL) { diff --git a/python/tests/Makefile.am b/python/tests/Makefile.am index e836fd5b..b5e2c43f 100644 --- a/python/tests/Makefile.am +++ b/python/tests/Makefile.am @@ -8,6 +8,7 @@ PYTESTS= \ push.py \ pushSAX.py \ error.py \ + serialize.py\ validate.py \ tstURI.py \ xpathret.py \ diff --git a/python/tests/serialize.py b/python/tests/serialize.py new file mode 100755 index 00000000..b79d0a5d --- /dev/null +++ b/python/tests/serialize.py @@ -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() |