[tests:results] implement general tests for list items

This commit is contained in:
Mike Fährmann
2025-06-07 10:17:37 +02:00
parent fc01d85823
commit b95b71f63f
3 changed files with 39 additions and 5 deletions

View File

@@ -37,14 +37,17 @@ __tests__ = (
{
"#url" : "https://aibooru.online/posts/18315",
"#comment" : "ugoira ()",
"#comment" : "ugoira (#7630)",
"#category": ("Danbooru", "aibooru", "post"),
"#class" : danbooru.DanbooruPostExtractor,
"#options" : {"ugoira": True},
"#urls" : "https://cdn.aibooru.download/original/f9/6b/f96b2b3254884ab527fab0a7e9c39ba9.zip",
"_ugoira_frame_data": "len:list:60",
"_ugoira_original" : False,
"_ugoira_original" : False,
"_ugoira_frame_data[*]": {
"file" : r"re:^0000\d\d\.jpg$",
"delay": int,
},
},
{

View File

@@ -301,12 +301,29 @@ __tests__ = (
"uploader_id": 67005,
},
{
"#url" : "https://danbooru.donmai.us/posts/3613024",
"#category": ("Danbooru", "danbooru", "post"),
"#class" : danbooru.DanbooruPostExtractor,
"#options" : {"ugoira": False},
"#urls" : "https://cdn.donmai.us/sample/5e/e5/sample-5ee54a2d95ed36376ec1d8f6ddbdece9.webm",
"!_ugoira_original" : ...,
"!_ugoira_frame_data": ...,
},
{
"#url" : "https://danbooru.donmai.us/posts/3613024",
"#category": ("Danbooru", "danbooru", "post"),
"#class" : danbooru.DanbooruPostExtractor,
"#options" : {"ugoira": True},
"#pattern" : r"https?://.+\.zip$",
"#urls" : "https://cdn.donmai.us/original/5e/e5/5ee54a2d95ed36376ec1d8f6ddbdece9.zip",
"_ugoira_original" : False,
"_ugoira_frame_data[*]": {
"file" : r"re:^0000\d\d\.jpg$",
"delay": int,
},
},
{

View File

@@ -241,6 +241,12 @@ class TestExtractorResults(unittest.TestCase):
if key not in kwdict:
continue
if key.endswith("[*]"):
key = key[:-3]
subtest = True
else:
subtest = False
path = "{}.{}".format(parent, key) if parent else key
if key.startswith("!"):
@@ -248,7 +254,15 @@ class TestExtractorResults(unittest.TestCase):
continue
self.assertIn(key, kwdict, msg=path)
self._test_kwdict_value(kwdict[key], test, path)
value = kwdict[key]
if subtest:
self.assertNotIsInstance(value, str, msg=path)
for idx, item in enumerate(value):
subpath = "{}[{}]".format(path, idx)
self._test_kwdict_value(item, test, subpath)
else:
self._test_kwdict_value(value, test, path)
def _test_kwdict_value(self, value, test, path):
if isinstance(test, dict):