diff options
Diffstat (limited to 'test/test_results.py')
| -rw-r--r-- | test/test_results.py | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/test/test_results.py b/test/test_results.py index e2c7ca2..aa09f2f 100644 --- a/test/test_results.py +++ b/test/test_results.py @@ -43,7 +43,8 @@ CONFIG = { }, } -AUTH = { + +AUTH_REQUIRED = { "pixiv", "nijie", "horne", @@ -54,7 +55,7 @@ AUTH = { "twitter", } -AUTH_CONFIG = ( +AUTH_KEYS = ( "username", "cookies", "api-key", @@ -91,24 +92,28 @@ class TestExtractorResults(unittest.TestCase): self.assertGreaterEqual(value, range.start, msg=msg) def _run_test(self, result): + base, cat, sub = result_categories(result) result.pop("#comment", None) + result.pop("#category", None) auth = result.pop("#auth", None) - extractor.find(result["#url"]) - extr = result["#class"].from_url(result["#url"]) - if not extr: - raise exception.NoExtractorError() - if len(result) <= 3: + extr_url = extractor.find(result["#url"]) + self.assertTrue(extr_url, "extractor by URL/find") + extr_cls = extr = result["#class"].from_url(result["#url"]) + self.assertTrue(extr_url, "extractor by cls.from_url()") + self.assertIs(extr_url.__class__, extr_cls.__class__) + + if len(result) <= 2: return # only matching if auth is None: - auth = (result["#category"][1] in AUTH) + auth = (cat in AUTH_REQUIRED) elif not auth: # auth explicitly disabled - for key in AUTH_CONFIG: + for key in AUTH_KEYS: config.set((), key, None) - if auth and not any(extr.config(key) for key in AUTH_CONFIG): + if auth and not any(extr.config(key) for key in AUTH_KEYS): return self._skipped.append((result["#url"], "no auth")) if "#options" in result: @@ -411,6 +416,15 @@ def load_test_config(): path, exc.__class__.__name__, exc)) +def result_categories(result): + categories = result.get("#category") + if categories: + return categories + + cls = result["#class"] + return cls.basecategory, cls.category, cls.subcategory + + def generate_tests(): """Dynamically generate extractor unittests""" def _generate_method(result): @@ -437,7 +451,7 @@ def generate_tests(): if category.startswith("+"): basecategory = category[1:].lower() tests = [t for t in results.all() - if t["#category"][0].lower() == basecategory] + if result_categories(t)[0].lower() == basecategory] else: tests = results.category(category) @@ -450,14 +464,16 @@ def generate_tests(): tests = [t for t in tests if "#comment" in t and com in t["#comment"].lower()] else: - tests = [t for t in tests if t["#category"][-1] == subcategory] + tests = [t for t in tests + if result_categories(t)[-1] == subcategory] else: tests = results.all() # add 'test_...' methods enum = collections.defaultdict(int) for result in tests: - name = "{1}_{2}".format(*result["#category"]) + base, cat, sub = result_categories(result) + name = "{}_{}".format(cat, sub) enum[name] += 1 method = _generate_method(result) |
