import unittest import libxml2 from urlparse import urljoin class TestText(unittest.TestCase): base = "http://example.com/blog/index.atom" def parse(self, feed, base=base): doc = libxml2.parseDoc(feed) doc.setBase(base) ctxt = doc.xpathNewContext() ctxt.xpathRegisterNs("atom","http://www.w3.org/2005/Atom") node = ctxt.xpathEval("//atom:link")[0] result = urljoin(node.getBase(doc), node.prop("href")) doc.freeDoc() return result def test_no_xml_base_abs(self): assert "http://example.org/archives/2005/08/123.html" == self.parse(""" """) def test_no_xml_base_rel(self): assert "http://example.com/archives/2005/08/123.html" == self.parse(""" """) def test_xml_base_on_feed_and_entry(self): assert "http://example.com/archives/2005/08/123.html" == self.parse(""" """) def test_xml_base_overridden_on_link(self): assert "http://example.com/123.html" == self.parse(""" """) if __name__ == "__main__": unittest.main()