The code in test_makefile was attempting to ignore any
non-interesting files, but missed some corners:
1. There is never a *file* called `__pycache__`.
2. A directory containing only a `__pycache__` subdirectory should be
ignored.
3. A directory containing only hidden files should be ignored.
Simplify this all into a couple of filters that let us check for empty
lists.
if dirname == '__pycache__' or dirname.startswith('.'):
dirs.clear() # do not process subfolders
continue
- # Skip empty dirs:
+
+ # Skip empty dirs (ignoring hidden files and __pycache__):
+ files = [
+ filename for filename in files
+ if not filename.startswith('.')
+ ]
+ dirs = [
+ dirname for dirname in dirs
+ if not dirname.startswith('.') and dirname != "__pycache__"
+ ]
if not dirs and not files:
continue
- # Skip dirs with hidden-only files:
- if files and all(
- filename.startswith('.') or filename == '__pycache__'
- for filename in files
- ):
- continue
relpath = os.path.relpath(dirpath, support.STDLIB_DIR)
with self.subTest(relpath=relpath):