From b8a9e1e21d728e4dd783a4aaecba81dc4f0b11f3 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Mon, 30 Aug 2010 23:08:39 -0400 Subject: Some prep work for finding completely uncovered files. --- coverage/files.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'coverage/files.py') diff --git a/coverage/files.py b/coverage/files.py index 741b456f..9a8ac564 100644 --- a/coverage/files.py +++ b/coverage/files.py @@ -102,6 +102,7 @@ class TreeMatcher(object): return True return False + class FnmatchMatcher(object): """A matcher for files by filename pattern.""" def __init__(self, pats): @@ -116,3 +117,16 @@ class FnmatchMatcher(object): if fnmatch.fnmatch(fpath, pat): return True return False + + +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: + # If a directory doesn't have __init__.py, then it isn't + # importable and neither are its files + del dirnames[:] + continue + for filename in filenames: + if fnmatch.fnmatch(filename, "*.py"): + yield os.path.join(dirpath, filename) -- cgit v1.2.1