[libgdata/gxml] * don't compare owner documents; we were doing that to replace the comparison of xmlNs's context, bu
- From: Richard Hans Schwarting <rschwart src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgdata/gxml] * don't compare owner documents; we were doing that to replace the comparison of xmlNs's context, bu
- Date: Tue, 27 Sep 2011 15:49:16 +0000 (UTC)
commit 67d973eb83196e0d5d84b77be5e8b9761707734f
Author: Richard Schwarting <aquarichy gmail com>
Date: Tue Sep 27 11:47:30 2011 -0400
* don't compare owner documents; we were doing that to replace the comparison of xmlNs's context, but that was usually NULL when this test got ran anyway and I can't find when it would actually be an xmlDoc
* compare_xml_nodes sometimes compares non-elements, so we shouldn't try to obtain content by treating the node as an element, but rather just stringifying its children
* GXml returns NULL for attributes on non-Element nodes, so check that before accessing attributes
gdata/tests/common.c | 49 ++++++++++++++++++++++++++-----------------------
1 files changed, 26 insertions(+), 23 deletions(-)
---
diff --git a/gdata/tests/common.c b/gdata/tests/common.c
index f92193f..e0445f2 100644
--- a/gdata/tests/common.c
+++ b/gdata/tests/common.c
@@ -398,8 +398,8 @@ compare_xml_namespaces (GXmlDomXNode *node1, GXmlDomXNode *node2)
if (g_strcmp0 (gxml_dom_xnode_get_namespace_uri (node1),
gxml_dom_xnode_get_namespace_uri (node2)) != 0 ||
g_strcmp0 (gxml_dom_xnode_get_prefix (node1),
- gxml_dom_xnode_get_prefix (node2)) != 0 ||
- gxml_dom_xnode_get_owner_document (node1) != gxml_dom_xnode_get_owner_document (node2)) {
+ gxml_dom_xnode_get_prefix (node2)) != 0) {
+ /* GXml: we used to also compare libxml2 xmlNs's context, but that doesn't translate to GXml well */
return FALSE;
}
@@ -471,8 +471,8 @@ compare_xml_nodes (GXmlDomXNode *node1, GXmlDomXNode *node2)
if (gxml_dom_xnode_get_node_type (node1) != gxml_dom_xnode_get_node_type (node2) ||
g_strcmp0 (gxml_dom_xnode_get_node_name (node1), gxml_dom_xnode_get_node_name (node2)) != 0 ||
compare_xml_namespaces (node1, node2) == FALSE ||
- g_strcmp0 (gxml_dom_element_get_content (GXML_DOM_ELEMENT (node1)),
- gxml_dom_element_get_content (GXML_DOM_ELEMENT (node2))) != 0) {
+ g_strcmp0 (gxml_dom_node_list_to_string (gxml_dom_xnode_get_child_nodes (node1), FALSE),
+ gxml_dom_node_list_to_string (gxml_dom_xnode_get_child_nodes (node1), FALSE)) != 0) {
return FALSE;
}
@@ -498,31 +498,34 @@ compare_xml_nodes (GXmlDomXNode *node1, GXmlDomXNode *node2)
attrs1 = gxml_dom_xnode_get_attributes (node1);
attrs2 = gxml_dom_xnode_get_attributes (node2);
- if (g_hash_table_size (attrs1) != g_hash_table_size (attrs2)) {
- return FALSE;
- }
+ // GXml returns NULL for attributes if you're not an Element
+ if (attrs1 != NULL || attrs2 != NULL) {
+ if (g_hash_table_size (attrs1) != g_hash_table_size (attrs2)) {
+ return FALSE;
+ }
- keys1 = g_hash_table_get_keys (attrs1);
+ keys1 = g_hash_table_get_keys (attrs1);
- for (key1 = keys1; key1 != NULL; key1 = key1->next) {
- attr1name = (gchar*)key1->data;
+ for (key1 = keys1; key1 != NULL; key1 = key1->next) {
+ attr1name = (gchar*)key1->data;
- attr1 = (GXmlDomXNode*)g_hash_table_lookup (attrs1 ,attr1name);
- attr2 = (GXmlDomXNode*)g_hash_table_lookup (attrs2 ,attr1name);
+ attr1 = (GXmlDomXNode*)g_hash_table_lookup (attrs1 ,attr1name);
+ attr2 = (GXmlDomXNode*)g_hash_table_lookup (attrs2 ,attr1name);
- if (attr1 == NULL || attr2 == NULL) {
- return FALSE;
- }
+ if (attr1 == NULL || attr2 == NULL) {
+ return FALSE;
+ }
- if (g_strcmp0 (gxml_dom_xnode_get_node_name (attr1),
- gxml_dom_xnode_get_node_name (attr2)) != 0
- || compare_xml_namespaces (attr1, attr2) == FALSE) {
- return FALSE;
- }
+ if (g_strcmp0 (gxml_dom_xnode_get_node_name (attr1),
+ gxml_dom_xnode_get_node_name (attr2)) != 0
+ || compare_xml_namespaces (attr1, attr2) == FALSE) {
+ return FALSE;
+ }
- if (compare_xml_node_lists (gxml_dom_xnode_get_child_nodes (attr1),
- gxml_dom_xnode_get_child_nodes (attr2)) == FALSE)
- return FALSE;
+ if (compare_xml_node_lists (gxml_dom_xnode_get_child_nodes (attr1),
+ gxml_dom_xnode_get_child_nodes (attr2)) == FALSE)
+ return FALSE;
+ }
}
// no straglers like we once had, since we now check list size
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]