Merge pull request #2834 from aysonje/ignore-setup
ignore valid setup.py during --doctest-modules
This commit is contained in:
commit
71c76d96d3
1
AUTHORS
1
AUTHORS
|
@ -82,6 +82,7 @@ Jason R. Coombs
|
||||||
Javier Domingo Cansino
|
Javier Domingo Cansino
|
||||||
Javier Romero
|
Javier Romero
|
||||||
Jeff Widman
|
Jeff Widman
|
||||||
|
John Eddie Ayson
|
||||||
John Towler
|
John Towler
|
||||||
Jon Sonesen
|
Jon Sonesen
|
||||||
Jonas Obrist
|
Jonas Obrist
|
||||||
|
|
|
@ -50,12 +50,19 @@ def pytest_addoption(parser):
|
||||||
def pytest_collect_file(path, parent):
|
def pytest_collect_file(path, parent):
|
||||||
config = parent.config
|
config = parent.config
|
||||||
if path.ext == ".py":
|
if path.ext == ".py":
|
||||||
if config.option.doctestmodules:
|
if config.option.doctestmodules and not _is_setup_py(config, path, parent):
|
||||||
return DoctestModule(path, parent)
|
return DoctestModule(path, parent)
|
||||||
elif _is_doctest(config, path, parent):
|
elif _is_doctest(config, path, parent):
|
||||||
return DoctestTextfile(path, parent)
|
return DoctestTextfile(path, parent)
|
||||||
|
|
||||||
|
|
||||||
|
def _is_setup_py(config, path, parent):
|
||||||
|
if path.basename != "setup.py":
|
||||||
|
return False
|
||||||
|
contents = path.read()
|
||||||
|
return 'setuptools' in contents or 'distutils' in contents
|
||||||
|
|
||||||
|
|
||||||
def _is_doctest(config, path, parent):
|
def _is_doctest(config, path, parent):
|
||||||
if path.ext in ('.txt', '.rst') and parent.session.isinitpath(path):
|
if path.ext in ('.txt', '.rst') and parent.session.isinitpath(path):
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Implement feature to skip ``setup.py`` files when ran with ``--doctest-modules``.
|
|
@ -561,6 +561,34 @@ class TestDoctests(object):
|
||||||
reportinfo = items[0].reportinfo()
|
reportinfo = items[0].reportinfo()
|
||||||
assert reportinfo[1] == 1
|
assert reportinfo[1] == 1
|
||||||
|
|
||||||
|
def test_valid_setup_py(self, testdir):
|
||||||
|
'''
|
||||||
|
Test to make sure that pytest ignores valid setup.py files when ran
|
||||||
|
with --doctest-modules
|
||||||
|
'''
|
||||||
|
p = testdir.makepyfile(setup="""
|
||||||
|
from setuptools import setup, find_packages
|
||||||
|
setup(name='sample',
|
||||||
|
version='0.0',
|
||||||
|
description='description',
|
||||||
|
packages=find_packages()
|
||||||
|
)
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest(p, '--doctest-modules')
|
||||||
|
result.stdout.fnmatch_lines(['*collected 0 items*'])
|
||||||
|
|
||||||
|
def test_invalid_setup_py(self, testdir):
|
||||||
|
'''
|
||||||
|
Test to make sure that pytest reads setup.py files that are not used
|
||||||
|
for python packages when ran with --doctest-modules
|
||||||
|
'''
|
||||||
|
p = testdir.makepyfile(setup="""
|
||||||
|
def test_foo():
|
||||||
|
return 'bar'
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest(p, '--doctest-modules')
|
||||||
|
result.stdout.fnmatch_lines(['*collected 1 item*'])
|
||||||
|
|
||||||
|
|
||||||
class TestLiterals(object):
|
class TestLiterals(object):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue