X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tests%2Fcoverage_dungeon.py;h=50697feedb7b5fbd701f65a6e37a012e020d5046;hb=99595f6a2a68a0c309b9955c56c2a8d297ecac76;hp=63649f62dd73d21b1706b09261f688c28246e2f0;hpb=e176039b01def153b6b5222e145f0b2b8589ab3f;p=open-adventure.git diff --git a/tests/coverage_dungeon.py b/tests/coverage_dungeon.py index 63649f6..50697fe 100755 --- a/tests/coverage_dungeon.py +++ b/tests/coverage_dungeon.py @@ -44,6 +44,8 @@ def search(needle, haystack): # replacing %s, %d, etc. with regex wildcards, so the variable messages # within the dungeon definition will actually match needle = re.escape(needle) \ + .replace("\\n", "\n") \ + .replace("\\t", "\t") \ .replace("\%S", ".*") \ .replace("\%s", ".*") \ .replace("\%d", ".*") \ @@ -111,6 +113,22 @@ def threshold_coverage(classes, text): if search(msg["message"], text): msg["message"] = True +def obit_coverage(obituaries, text): + for i, obit in enumerate(obituaries): + if obit["query"] != True: + if search(obit["query"], text): + obit["query"] = True + if obit["yes_response"] != True: + if search(obit["yes_response"], text): + obit["yes_response"] = True + +def actions_coverage(actions, text): + for name, action in actions: + if action["message"] == None or action["message"] == "NO_MESSAGE": + action["message"] = True + if action["message"] != True: + if search(action["message"], text): + action["message"] = True if __name__ == "__main__": with open(yaml_name, "r") as f: @@ -119,12 +137,15 @@ if __name__ == "__main__": with open(html_template_path, "r") as f: html_template = f.read() + motions = db["motions"] locations = db["locations"] arb_msgs = db["arbitrary_messages"] objects = db["objects"] hintsraw = db["hints"] classes = db["classes"] turn_thresholds = db["turn_thresholds"] + obituaries = db["obituaries"] + actions = db["actions"] specials = db["specials"] hints = [] @@ -142,6 +163,8 @@ if __name__ == "__main__": hint_coverage(hints, text) threshold_coverage(classes, text) threshold_coverage(turn_thresholds, text) + obit_coverage(obituaries, text) + actions_coverage(actions, text) special_coverage(specials, text) location_html = "" @@ -237,6 +260,36 @@ if __name__ == "__main__": turn_html += arb_msg_row.format(msg["threshold"], success) turn_percent = round((turn_covered / float(turn_total)) * 100, 1) + obituaries_html = ""; + obituaries_total = len(obituaries) * 2 + obituaries_covered = 0 + for i, obit in enumerate(obituaries): + if obit["query"] != True: + query_success = "uncovered" + else: + query_success = "covered" + obituaries_covered += 1 + if obit["yes_response"] != True: + obit_success = "uncovered" + else: + obit_success = "covered" + obituaries_covered += 1 + obituaries_html += location_row.format(i, query_success, obit_success) + obituaries_percent = round((obituaries_covered / float(obituaries_total)) * 100, 1) + + actions.sort() + actions_html = ""; + actions_total = len(actions) + actions_covered = 0 + for name, action in actions: + if action["message"] != True: + success = "uncovered" + else: + success = "covered" + actions_covered += 1 + actions_html += arb_msg_row.format(name, success) + actions_percent = round((actions_covered / float(actions_total)) * 100, 1) + special_html = "" special_total = len(specials) special_covered = 0 @@ -257,6 +310,8 @@ if __name__ == "__main__": print(" hints..............: {}% covered ({} of {})".format(hints_percent, hints_covered, hints_total)) print(" classes............: {}% covered ({} of {})".format(class_percent, class_covered, class_total)) print(" turn_thresholds....: {}% covered ({} of {})".format(turn_percent, turn_covered, turn_total)) + print(" obituaries.........: {}% covered ({} of {})".format(obituaries_percent, obituaries_covered, obituaries_total)) + print(" actions............: {}% covered ({} of {})".format(actions_percent, actions_covered, actions_total)) print(" specials...........: {}% covered ({} of {})".format(special_percent, special_covered, special_total)) # render HTML report @@ -268,7 +323,9 @@ if __name__ == "__main__": hints_total, hints_covered, hints_percent, class_total, class_covered, class_percent, turn_total, turn_covered, turn_percent, + obituaries_total, obituaries_covered, obituaries_percent, + actions_total, actions_covered, actions_percent, special_total, special_covered, special_percent, location_html, arb_msg_html, object_html, hints_html, - class_html, turn_html, special_html + class_html, turn_html, obituaries_html, actions_html, special_html ))