mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
Practracker: improve exclude-directory logic
Instead of excluding directories at the last minute if they happen to appear in our filenames, we exclude them early, before recursing into all their subdirectories. Part of 29746.
This commit is contained in:
parent
f93057fc0a
commit
43f163de80
1 changed files with 10 additions and 4 deletions
|
@ -2,15 +2,24 @@ import os
|
|||
|
||||
# We don't want to run metrics for unittests, automatically-generated C files,
|
||||
# external libraries or git leftovers.
|
||||
EXCLUDE_SOURCE_DIRS = {"/src/test/", "/src/trunnel/", "/src/ext/", "/.git/"}
|
||||
EXCLUDE_SOURCE_DIRS = {"src/test/", "src/trunnel/", "src/rust/",
|
||||
"src/ext/", ".git/"}
|
||||
|
||||
def _norm(p):
|
||||
return os.path.normcase(os.path.normpath(p))
|
||||
|
||||
def get_tor_c_files(tor_topdir):
|
||||
"""
|
||||
Return a list with the .c filenames we want to get metrics of.
|
||||
"""
|
||||
files_list = []
|
||||
exclude_dirs = { _norm(os.path.join(tor_topdir, p)) for p in EXCLUDE_SOURCE_DIRS }
|
||||
|
||||
|
||||
for root, directories, filenames in os.walk(tor_topdir):
|
||||
# Remove all the directories that are excluded.
|
||||
directories[:] = [ d for d in directories
|
||||
if _norm(os.path.join(root,d)) not in exclude_dirs ]
|
||||
directories.sort()
|
||||
filenames.sort()
|
||||
for filename in filenames:
|
||||
|
@ -18,10 +27,7 @@ def get_tor_c_files(tor_topdir):
|
|||
if not filename.endswith(".c"):
|
||||
continue
|
||||
|
||||
# Exclude the excluded paths
|
||||
full_path = os.path.join(root,filename)
|
||||
if any(os.path.normcase(exclude_dir) in full_path for exclude_dir in EXCLUDE_SOURCE_DIRS):
|
||||
continue
|
||||
|
||||
files_list.append(full_path)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue