aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/filename_matching.py57
-rw-r--r--tox.ini1
2 files changed, 58 insertions, 0 deletions
diff --git a/test/filename_matching.py b/test/filename_matching.py
new file mode 100644
index 00000000..51cedf03
--- /dev/null
+++ b/test/filename_matching.py
@@ -0,0 +1,57 @@
+import os
+import re
+import glob
+import sys
+
+
+def check_src_files_have_test():
+ missing_test_files = []
+
+ excluded = ['mitmproxy/contrib/', 'mitmproxy/test/', 'mitmproxy/tools/', 'mitmproxy/platform/']
+ src_files = glob.glob('mitmproxy/**/*.py', recursive=True) + glob.glob('pathod/**/*.py', recursive=True)
+ src_files = [f for f in src_files if os.path.basename(f) != '__init__.py']
+ src_files = [f for f in src_files if not any(os.path.normpath(p) in f for p in excluded)]
+ for f in src_files:
+ p = os.path.join("test", os.path.dirname(f), "test_" + os.path.basename(f))
+ if not os.path.isfile(p):
+ missing_test_files.append((f, p))
+
+ return missing_test_files
+
+
+def check_test_files_have_src():
+ unknown_test_files = []
+
+ excluded = ['test/mitmproxy/data/', 'test/mitmproxy/net/data/', '/tservers.py']
+ test_files = glob.glob('test/mitmproxy/**/*.py', recursive=True) + glob.glob('test/pathod/**/*.py', recursive=True)
+ test_files = [f for f in test_files if os.path.basename(f) != '__init__.py']
+ test_files = [f for f in test_files if not any(os.path.normpath(p) in f for p in excluded)]
+ for f in test_files:
+ p = os.path.join(re.sub('^test/', '', os.path.dirname(f)), re.sub('^test_', '', os.path.basename(f)))
+ if not os.path.isfile(p):
+ unknown_test_files.append((f, p))
+
+ return unknown_test_files
+
+
+def main():
+ exitcode = 0
+
+ missing_test_files = check_src_files_have_test()
+ if missing_test_files:
+ exitcode += 1
+ for f, p in sorted(missing_test_files):
+ print("{} MUST have a matching test file: {}".format(f, p))
+
+ unknown_test_files = check_test_files_have_src()
+ if unknown_test_files:
+ # TODO: enable this in the future
+ # exitcode += 1
+ for f, p in sorted(unknown_test_files):
+ print("{} DOES NOT MATCH a source file! Expected to find: {}".format(f, p))
+
+ sys.exit(exitcode)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/tox.ini b/tox.ini
index d798c11a..1c5e1b96 100644
--- a/tox.ini
+++ b/tox.ini
@@ -30,6 +30,7 @@ commands = sphinx-build -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html
commands =
mitmdump --version
flake8 --jobs 8 mitmproxy pathod examples test release
+ python3 test/filename_matching.py
rstcheck README.rst
mypy --ignore-missing-imports --follow-imports=skip \
mitmproxy/addons/ \