import unittest
import urllib2
from yadis.discover import discover
def parseManifest(lines):
cases = []
for line in lines:
if line.startswith('#') or not line.strip():
continue
# remove newline
assert line[-1] == '\n'
line = line[:-1]
# split fields
parts = line.split('\t')
assert len(parts) == 3
cases.append(tuple(parts))
return cases
class DiscoverTestCase(unittest.TestCase):
def __init__(self, input_url, normalized_url, xrds_url):
unittest.TestCase.__init__(self)
self.input_url = input_url
self.normalized_url = normalized_url
self.xrds_url = xrds_url
def runTest(self):
normalized_url, content = discover(self.input_url)
msg = 'Identity URL mismatch: actual = %r, expected = %r' % (
normalized_url, self.normalized_url)
self.failUnlessEqual(self.normalized_url, normalized_url, msg)
resp = urllib2.urlopen(self.xrds_url)
expected_content = resp.read()
resp.close()
msg = 'XRDS content mismatch: actual = %r, expected = %r' % (
content, expected_content)
self.failUnlessEqual(expected_content, content, msg)
def shortDescription(self):
return "%s (%s)" % (self.input_url, self.__class__.__module__)
def mkSuite(parsed):
test_cases = [DiscoverTestCase(*t) for t in parsed]
return unittest.TestSuite(test_cases)
def mkSuiteFromURL(manifest_url):
req = urllib2.urlopen(manifest_url)
parsed = parseManifest(req)
return mkSuite(parsed)
def test(url):
suite = mkSuiteFromURL(url)
runner = unittest.TextTestRunner()
return runner.run(suite)
if __name__ == '__main__':
import sys
test(sys.argv[1])
syntax highlighted by Code2HTML, v. 0.9.1