+
+@validates("R-81339", "R-87247", "R-76057")
+def test_template_names_valid_characters(template_dir):
+ filenames = list_filenames(template_dir)
+ errors = []
+ for f in filenames:
+ stem = Path(f).stem
+ if not stem.replace("_", "").isalnum():
+ errors.append(f)
+ assert not errors, (
+ "The following Heat template names include characters other than "
+ "alphanumerics and underscores: {}"
+ ).format(", ".join(errors))
+
+
+@validates("R-37028", "R-87485", "R-81339", "R-87247", "R-76057")
+def test_base_template_names(template_dir):
+ """
+ Check all base templates have a filename that includes "_base_".
+ """
+ filenames = list_filenames(template_dir)
+