diff options
author | Tim Peters <tim.peters@gmail.com> | 2001-10-03 04:08:26 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2001-10-03 04:08:26 (GMT) |
commit | 17111f3b242be06c7ae913f106093891b82d7fee (patch) | |
tree | bdfdd1b714cc7f53935c5e2337d1e94615db882a /Lib/test/test_doctest2.py | |
parent | f49a91340a22d89bea4f0566500d5f954f35c744 (diff) | |
download | cpython-17111f3b242be06c7ae913f106093891b82d7fee.zip cpython-17111f3b242be06c7ae913f106093891b82d7fee.tar.gz cpython-17111f3b242be06c7ae913f106093891b82d7fee.tar.bz2 |
SF bug [#467336] doctest failures w/ new-style classes.
Taught doctest about static methods, class methods, and property docstrings
in new-style classes. As for inspect.py/pydoc.py before it, the new stuff
needed didn't really fit into the old architecture (but was less of a
strain to force-fit here).
New-style class docstrings still aren't found, but that's the subject
of a different bug and I want to fix that right instead of hacking around
it in doctest.
Diffstat (limited to 'Lib/test/test_doctest2.py')
-rw-r--r-- | Lib/test/test_doctest2.py | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/Lib/test/test_doctest2.py b/Lib/test/test_doctest2.py new file mode 100644 index 0000000..0cbe3d4 --- /dev/null +++ b/Lib/test/test_doctest2.py @@ -0,0 +1,112 @@ +"""A module to test whether doctest recognizes some 2.2 features, +like static and class methods. + +>>> print 'yup' # 1 +yup +""" + +import test_support + +# XXX The class docstring is skipped. +class C(object): + """Class C. + + >>> print C() # 2 + 42 + """ + + def __init__(self): + """C.__init__. + + >>> print C() # 3 + 42 + """ + + def __str__(self): + """ + >>> print C() # 4 + 42 + """ + return "42" + + # XXX The class docstring is skipped. + class D(object): + """A nested D class. + + >>> print "In D!" # 5 + In D! + """ + + def nested(self): + """ + >>> print 3 # 6 + 3 + """ + + def getx(self): + """ + >>> c = C() # 7 + >>> c.x = 12 # 8 + >>> print c.x # 9 + -12 + """ + return -self._x + + def setx(self, value): + """ + >>> c = C() # 10 + >>> c.x = 12 # 11 + >>> print c.x # 12 + -12 + """ + self._x = value + + x = property(getx, setx, doc="""\ + >>> c = C() # 13 + >>> c.x = 12 # 14 + >>> print c.x # 15 + -12 + """) + + def statm(): + """ + A static method. + + >>> print C.statm() # 16 + 666 + >>> print C().statm() # 17 + 666 + """ + return 666 + + statm = staticmethod(statm) + + def clsm(cls, val): + """ + A class method. + + >>> print C.clsm(22) # 18 + 22 + >>> print C().clsm(22) # 19 + 22 + """ + return 22 + + clsm = classmethod(clsm) + +def test_main(): + import test_doctest2 + # XXX 2 class docstrings are skipped. + # EXPECTED = 19 + EXPECTED = 17 + f, t = test_support.run_doctest(test_doctest2) + if t != EXPECTED: + raise test_support.TestFailed("expected %d tests to run, not %d" % + (EXPECTED, t)) + +# Pollute the namespace with a bunch of imported functions and classes, +# to make sure they don't get tested. +from doctest import * + +if __name__ == '__main__': + test_main() |