From b29a9711c4cb236f9515fca8f36d7733a8301738 Mon Sep 17 00:00:00 2001
From: je <aysonje@gmail.com>
Date: Fri, 13 Oct 2017 18:57:52 +0800
Subject: [PATCH] ignore valid setup.py during --doctest-modules

---
 _pytest/doctest.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/_pytest/doctest.py b/_pytest/doctest.py
index cc505c8d0..c1b6a81a8 100644
--- a/_pytest/doctest.py
+++ b/_pytest/doctest.py
@@ -50,12 +50,20 @@ def pytest_addoption(parser):
 def pytest_collect_file(path, parent):
     config = parent.config
     if path.ext == ".py":
-        if config.option.doctestmodules:
+        if config.option.doctestmodules and not _is_setup_py(config, path, parent):
             return DoctestModule(path, parent)
     elif _is_doctest(config, path, parent):
         return DoctestTextfile(path, parent)
 
 
+def _is_setup_py(config, path, parent):
+    if path.basename != "setup.py":
+        return False
+    with open(path.strpath, 'r') as f:
+        contents = f.read()
+    return 'setuptools' in contents or 'distutils' in contents
+
+
 def _is_doctest(config, path, parent):
     if path.ext in ('.txt', '.rst') and parent.session.isinitpath(path):
         return True