#
# The default HTML output is appropriate for use with Gitlab CI.
# You can override it with a command-line argument.
+#
+# The DANGLING list is for actions that should be considered always found
+# even if the checkfile search doesn't find them. Typically this will because
+# they emit a templated message that can't be regression-tested by equality.
import os
import sys
TEST_DIR = "."
YAML_PATH = "../adventure.yaml"
-HTML_TEMPLATE_PATH = "coverage_dungeon.html.tpl"
+HTML_TEMPLATE_PATH = "../templates/coverage_dungeon.html.tpl"
DEFAULT_HTML_OUTPUT_PATH = "../coverage/adventure.yaml.html"
+DANGLING = ["ACT_VERSION"]
STDOUT_REPORT_CATEGORY = " {name:.<19}: {percent:5.1f}% covered ({covered} of {total})\n"
report["messages"][name]["covered"] = True
report["covered"] += 1
-def specials_actions_coverage(items, text, report):
- # works for actions or specials
+def actions_coverage(items, text, report):
+ # works for actions
for name, item in items:
if name not in report["messages"]:
report["messages"][name] = {"covered" : False}
report["total"] += 1
- if report["messages"][name]["covered"] != True and search(item["message"], text):
+ if report["messages"][name]["covered"] != True and (search(item["message"], text) or name in DANGLING):
report["messages"][name]["covered"] = True
report["covered"] += 1
"messages" : {}
}
- # search for each message in ever test check file
+ # search for each message in every test check file
for chk in check_file_contents:
arb_coverage(db["arbitrary_messages"], chk, report["arbitrary_messages"])
hint_coverage(db["hints"], chk, report["hints"])
loc_coverage(db["locations"], chk, report["locations"])
obit_coverage(db["obituaries"], chk, report["obituaries"])
obj_coverage(db["objects"], chk, report["objects"])
- specials_actions_coverage(db["actions"], chk, report["actions"])
- specials_actions_coverage(db["specials"], chk, report["specials"])
+ actions_coverage(db["actions"], chk, report["actions"])
threshold_coverage(db["classes"], chk, report["classes"])
threshold_coverage(db["turn_thresholds"], chk, report["turn_thresholds"])
category["percent"] = (category["covered"] / float(category["total"])) * 100
# render section header
- cat_messages = sorted(category["messages"].items())
+ cat_messages = list(category["messages"].items())
cat_keys = cat_messages[0][1].keys()
headers_html = ""
colspan = 10 - len(cat_keys)