summaryrefslogtreecommitdiff
path: root/coverage/files.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2012-07-04 00:13:03 -0400
committerNed Batchelder <ned@nedbatchelder.com>2012-07-04 00:13:03 -0400
commit5a8af8616b6638921d0c7bc74537eca372a5eeaf (patch)
tree2c081c758d23d7e640d4678692766c44fa6d5128 /coverage/files.py
parentc7d1c79367fa22c88a932d6a5e88095b74092fcf (diff)
downloadpython-coveragepy-git-5a8af8616b6638921d0c7bc74537eca372a5eeaf.tar.gz
With --source=dir, dir/__init__.py need not exist any longer, but dir/sub/__init__.py still does.
Diffstat (limited to 'coverage/files.py')
-rw-r--r--coverage/files.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/coverage/files.py b/coverage/files.py
index e6dc4aa1..e07c5766 100644
--- a/coverage/files.py
+++ b/coverage/files.py
@@ -207,9 +207,17 @@ class PathAliases(object):
def find_python_files(dirname):
- """Yield all of the importable Python files in `dirname`, recursively."""
- for dirpath, dirnames, filenames in os.walk(dirname, topdown=True):
- if '__init__.py' not in filenames:
+ """Yield all of the importable Python files in `dirname`, recursively.
+
+ To be importable, the files have to be in a directory with a __init__.py,
+ except for `dirname` itself, which isn't required to have one. The
+ assumption is that `dirname` was specified directly, so the user knows
+ best, but subdirectories are checked for a __init__.py to be sure we only
+ find the importable files.
+
+ """
+ for i, (dirpath, dirnames, filenames) in enumerate(os.walk(dirname)):
+ if i > 0 and '__init__.py' not in filenames:
# If a directory doesn't have __init__.py, then it isn't
# importable and neither are its files
del dirnames[:]