1 from openid
.yadis
.parsehtml
import YadisHTMLParser
, ParseDone
2 from HTMLParser
import HTMLParseError
4 import os
.path
, unittest
, sys
6 class _TestCase(unittest
.TestCase
):
7 reserved_values
= ['None', 'EOF']
9 def __init__(self
, filename
, testname
, expected
, case
):
10 self
.filename
= filename
11 self
.testname
= testname
12 self
.expected
= expected
14 unittest
.TestCase
.__init
__(self
)
20 except ParseDone
, why
:
23 # make sure we protect outselves against accidental bogus
25 assert found
not in self
.reserved_values
31 msg
= "%r != %r for case %s" % (found
, self
.expected
, self
.case
)
32 self
.failUnlessEqual(found
, self
.expected
, msg
)
33 except HTMLParseError
:
34 self
.failUnless(self
.expected
== 'None', (self
.case
, self
.expected
))
36 self
.failUnless(self
.expected
== 'EOF', (self
.case
, self
.expected
))
38 def shortDescription(self
):
39 return "%s (%s<%s>)" % (
41 self
.__class
__.__module
__,
42 os
.path
.basename(self
.filename
))
46 for chunk
in data
.split('\f\n'):
47 expected
, case
= chunk
.split('\n', 1)
48 cases
.append((expected
, case
))
52 """Make a pyunit TestSuite from a file defining test cases."""
53 s
= unittest
.TestSuite()
54 for (filename
, test_num
, expected
, case
) in getCases():
55 s
.addTest(_TestCase(filename
, str(test_num
), expected
, case
))
59 runner
= unittest
.TextTestRunner()
60 return runner
.run(loadTests())
62 filenames
= ['data/test1-parsehtml.txt']
64 default_test_files
= []
65 base
= os
.path
.dirname(__file__
)
66 for filename
in filenames
:
67 full_name
= os
.path
.join(base
, filename
)
68 default_test_files
.append(full_name
)
70 def getCases(test_files
=default_test_files
):
72 for filename
in test_files
:
74 data
= file(filename
).read()
75 for expected
, case
in parseCases(data
):
77 cases
.append((filename
, test_num
, expected
, case
))
81 if __name__
== '__main__':
82 sys
.exit(not test().wasSuccessful())