Skip to content

Commit 95e5301

Browse files
jvansantenstefanseefeld
authored andcommitted
Conditionalize nested test for py2
__qualname__ didn't exist before python 3.3. Skip checks that depend on it if running in earlier Python versions
1 parent 301256c commit 95e5301

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

test/nested.py

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
>>> X.__name__
1414
'X'
1515
16-
>>> X.Y
16+
>>> X.Y # doctest: +py2
17+
<class 'nested_ext.Y'>
18+
19+
>>> X.Y # doctest: +py3
1720
<class 'nested_ext.X.Y'>
1821
1922
>>> X.Y.__module__
@@ -22,16 +25,22 @@
2225
>>> X.Y.__name__
2326
'Y'
2427
25-
>>> X.color.__qualname__
28+
>>> getattr(X.color, "__qualname__", None) # doctest: +py3
2629
'X.color'
2730
28-
>>> repr(X.color.red)
31+
>>> repr(X.color.red) # doctest: +py2
32+
'nested_ext.color.red'
33+
34+
>>> repr(X.color.red) # doctest: +py3
2935
'nested_ext.X.color.red'
3036
31-
>>> repr(X.color(1))
37+
>>> repr(X.color(1)) # doctest: +py2
38+
'nested_ext.color(1)'
39+
40+
>>> repr(X.color(1)) # doctest: +py3
3241
'nested_ext.X.color(1)'
3342
34-
>>> test_function.__doc__.strip().split('\\n')[0]
43+
>>> test_function.__doc__.strip().split('\\n')[0] # doctest: +py3
3544
'test_function( (X)arg1, (X.Y)arg2) -> None :'
3645
3746
'''
@@ -42,7 +51,23 @@ def run(args = None):
4251

4352
if args is not None:
4453
sys.argv = args
45-
return doctest.testmod(sys.modules.get(__name__))
54+
55+
py2 = doctest.register_optionflag("py2")
56+
py3 = doctest.register_optionflag("py3")
57+
58+
class ConditionalChecker(doctest.OutputChecker):
59+
def check_output(self, want, got, optionflags):
60+
if (optionflags & py3) and (sys.version_info[0] < 3):
61+
return True
62+
if (optionflags & py2) and (sys.version_info[0] >= 3):
63+
return True
64+
return doctest.OutputChecker.check_output(self, want, got, optionflags)
65+
66+
runner = doctest.DocTestRunner(ConditionalChecker())
67+
for test in doctest.DocTestFinder().find(sys.modules.get(__name__)):
68+
runner.run(test)
69+
70+
return doctest.TestResults(runner.failures, runner.tries)
4671

4772
if __name__ == '__main__':
4873
print("running...")

0 commit comments

Comments
 (0)