You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 00:45:53 +08:00
A bug in 2.7 test_descr.py revealed a problem with the way we were detecting docstrings. __doc__ = DocDescr() was getting confused with a docstring. This program also reveals other bugs in 3.2+ but we'll deal with that in another commit.
28 lines
941 B
Python
28 lines
941 B
Python
# From 2.7 test_descr.py
|
|
# Testing __doc__ descriptor...
|
|
# The bug in decompilation was erroneously matching
|
|
# __doc__ = as a docstring
|
|
|
|
"""This program is self-checking!"""
|
|
|
|
def test_doc_descriptor():
|
|
# Testing __doc__ descriptor...
|
|
# Python SF bug 542984
|
|
class DocDescr(object):
|
|
def __get__(self, object, otype):
|
|
if object:
|
|
object = object.__class__.__name__ + ' instance'
|
|
if otype:
|
|
otype = otype.__name__
|
|
return 'object=%s; type=%s' % (object, otype)
|
|
class OldClass:
|
|
__doc__ = DocDescr()
|
|
class NewClass(object):
|
|
__doc__ = DocDescr()
|
|
assert OldClass.__doc__ == 'object=None; type=OldClass'
|
|
assert OldClass().__doc__ == 'object=OldClass instance; type=OldClass'
|
|
assert NewClass.__doc__ == 'object=None; type=NewClass'
|
|
assert NewClass().__doc__ == 'object=NewClass instance; type=NewClass'
|
|
|
|
test_doc_descriptor()
|