Files
Red-DiscordBot/tests/cogs/test_trivia.py
Red-GitHubBot 2c38a7c4f2 [3.4] [Trivia] Validate custom trivia file upload using schema (#4659) (#5267)
* Add custom trivia list schema validation and test

* Address review

* Improve error formatting in trivia list test

(cherry picked from commit 173127e015)

Co-authored-by: Grant LeBlanc <37914048+leblancg@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

Co-authored-by: Grant LeBlanc <37914048+leblancg@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2021-09-08 21:37:59 +02:00

28 lines
799 B
Python

import textwrap
import yaml
from schema import SchemaError
def test_trivia_lists():
from redbot.cogs.trivia import InvalidListError, get_core_lists, get_list
list_names = get_core_lists()
assert list_names
problem_lists = []
for l in list_names:
try:
get_list(l)
except InvalidListError as exc:
e = exc.__cause__
if isinstance(e, SchemaError):
problem_lists.append((l.stem, f"SCHEMA error:\n{e!s}"))
else:
problem_lists.append((l.stem, f"YAML error:\n{e!s}"))
if problem_lists:
msg = ""
for name, error in problem_lists:
msg += f"- {name}:\n{textwrap.indent(error, ' ')}"
raise TypeError("The following lists contain errors:\n" + msg)