# information regarding copyright ownership.
############################################################################
+import glob
import os
import re
release_notes_regex = re.compile(r"doc/(arm|notes)/notes-.*\.(rst|xml)")
modified_files = danger.git.modified_files
+affected_files = (
+ danger.git.modified_files + danger.git.created_files + danger.git.deleted_files
+)
mr_labels = danger.gitlab.mr.labels
target_branch = danger.gitlab.mr.target_branch
is_backport = "Backport" in mr_labels or "Backport::Partial" in mr_labels
"sure none of the messages added is a leftover debug message."
)
break
+
+###############################################################################
+# SYSTEM TEST FILES
+###############################################################################
+#
+# FAIL if newly added system test directory contains an underscore (invalid char)
+# FAIL if there are no pytest files in the system test directory
+# FAIL if the pytest glue file for tests.sh is missing
+
+TESTNAME_CANDIDATE_RE = re.compile(r"bin/tests/system/([^/]+)")
+testnames = set()
+for path in affected_files:
+ match = TESTNAME_CANDIDATE_RE.search(path)
+ if match is not None:
+ testnames.add(match.groups()[0])
+
+for testname in testnames:
+ dirpath = f"bin/tests/system/{testname}"
+ if (
+ not os.path.isdir(dirpath)
+ or testname.startswith(".")
+ or testname.startswith("_")
+ ):
+ continue
+ if "_" in testname:
+ fail(
+ f"System test directory `{testname}` may not contain an underscore, "
+ "use hyphen instead."
+ )
+ if not glob.glob(f"{dirpath}/**/tests_*.py", recursive=True):
+ fail(
+ f"System test directory `{testname}` doesn't contain any "
+ "`tests_*.py` pytest file."
+ )
+ tests_sh_exists = os.path.exists(f"{dirpath}/tests.sh")
+ glue_file_name = f"tests_sh_{testname.replace('-', '_')}.py"
+ tests_sh_py_exists = os.path.exists(f"{dirpath}/{glue_file_name}")
+ if tests_sh_exists and not tests_sh_py_exists:
+ fail(
+ f"System test directory `{testname}` is missing the "
+ f"`{glue_file_name}` pytest glue file."
+ )