Repository: mikf/gallery-dl (branch: master)
Commit date: 2024-01-20T17:02:36Z

Workflow file: .github/workflows/tests.yml (tests)
name: tests

on:
  push:
    branches:
    - master
  pull_request:
    branches:
    - master

jobs:
  build:

    runs-on: ubuntu-20.04

    services:

      pypi_wayback:

        image: ghcr.io/waleko/pypi-wayback

        ports:

          - 8629:8080
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "pypy3.9"]

    steps:
    - uses: actions/checkout@v4

    - name: Check file permissions
      run: |
        if [[ "$(find ./gallery_dl -type f -not -perm 644)" ]]; then exit 1; fi

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v4
      with:
        python-version: ${{ matrix.python-version }}

    - name: Install dependencies
      run: |
        pip install -r requirements.txt
        pip install flake8 youtube-dl

    - name: Install yt-dlp
      run: |
        case "${{ matrix.python-version }}" in
            3.4|3.5)
                # don't install yt-dlp
                ;;
            3.6|3.7)
                # install from PyPI
                pip install yt-dlp
                ;;
            *)
                # install from master
                pip install https://github.com/yt-dlp/yt-dlp/archive/refs/heads/master.tar.gz
                ;;
        esac

    - name: Lint with flake8
      run: |
        case "${{ matrix.python-version }}" in
            3.4|3.5|3.6|3.7)
                flake8 --extend-exclude scripts/export_tests.py .
                ;;
            *)
                flake8 .
                ;;
        esac

    - name: Run tests
      run: |
        make test

    - name: Test autogeneration of man pages, bash/zsh/fish completion, etc
      run: |
        make

env:
  PIP_INDEX_URL: http://localhost:8629/2024-01-20
  UV_INDEX_URL: http://localhost:8629/2024-01-20


Failed build logs:
step_name: build (3.5)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.5.10/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.5.10/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.5.10/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.5.10/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.5.10/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.5.10/x64/lib
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig) ... ok
test_apply (test_config.TestConfig) ... ok
test_get (test_config.TestConfig) ... ok
test_interpolate (test_config.TestConfig) ... ok
test_interpolate_common (test_config.TestConfig) ... ok
test_load (test_config.TestConfig) ... ok
test_set (test_config.TestConfig) ... ok
test_setdefault (test_config.TestConfig) ... ok
test_unset (test_config.TestConfig) ... ok
test_default_config (test_config.TestConfigFiles) ... ok
test_example_config (test_config.TestConfigFiles) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt) ... ok
test_code_to_language (test_util.TestISO639_1) ... ok
test_language_to_code (test_util.TestISO639_1) ... ok
test_advance (test_util.TestOther) ... ok
test_bdecode (test_util.TestOther) ... ok
test_bencode (test_util.TestOther) ... ok
test_bencode_bdecode (test_util.TestOther) ... ok
test_build_duration_func (test_util.TestOther) ... ok
test_combine_dict (test_util.TestOther) ... ok
test_compile_expression (test_util.TestOther) ... ok
test_contains (test_util.TestOther) ... ok
test_custom_globals (test_util.TestOther) ... ok
test_datetime_to_timestamp (test_util.TestOther) ... ok
test_datetime_to_timestamp_string (test_util.TestOther) ... ok
test_enumerate_reversed (test_util.TestOther) ... ok
test_extractor_filter (test_util.TestOther) ... ok
test_filter_dict (test_util.TestOther) ... ok
test_format_value (test_util.TestOther) ... ok
test_generate_token (test_util.TestOther) ... ok
test_identity (test_util.TestOther) ... ok
test_import_file (test_util.TestOther) ... ok
test_md5 (test_util.TestOther) ... ok
test_noop (test_util.TestOther) ... ok
test_number_to_string (test_util.TestOther) ... ok
test_raises (test_util.TestOther) ... ok
test_sha1 (test_util.TestOther) ... ok
test_to_string (test_util.TestOther) ... ok
test_transform_dict (test_util.TestOther) ... ok
test_unique (test_util.TestOther) ... ok
test_unique_sequence (test_util.TestOther) ... ok
test_universal_none (test_util.TestOther) ... ok
test_build_predicate (test_util.TestPredicate) ... ok
test_filter_predicate (test_util.TestPredicate) ... ok
test_range_predicate (test_util.TestPredicate) ... ok
test_unique_predicate (test_util.TestPredicate) ... ok
test_parse_digit (test_util.TestRange) ... ok
test_parse_empty (test_util.TestRange) ... ok
test_parse_range (test_util.TestRange) ... ok
test_parse_slice (test_util.TestRange) ... ok
test_access_token (test_oauth.TestOAuthSession) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession) ... skipped ''
test_concat (test_oauth.TestOAuthSession) ... ok
test_dunder_call (test_oauth.TestOAuthSession) ... ok
test_generate_signature (test_oauth.TestOAuthSession) ... ok
test_nonce (test_oauth.TestOAuthSession) ... ok
test_quote (test_oauth.TestOAuthSession) ... ok
test_request_token (test_oauth.TestOAuthSession) ... skipped ''
test_alternative (test_formatter.TestFormatter) ... ok
test_chain_special (test_formatter.TestFormatter) ... ok
test_conversions (test_formatter.TestFormatter) ... ok
test_datetime (test_formatter.TestFormatter) ... ok
test_dict_access (test_formatter.TestFormatter) ... ok
test_expression (test_formatter.TestFormatter) ... ok
test_fmt_func (test_formatter.TestFormatter) ... ok
test_fstring (test_formatter.TestFormatter) ... skipped 'no fstring support'
test_globals_env (test_formatter.TestFormatter) ... ok
test_globals_now (test_formatter.TestFormatter) ... ok
test_indexing (test_formatter.TestFormatter) ... ok
test_join (test_formatter.TestFormatter) ... ok
test_literals (test_formatter.TestFormatter) ... ok
test_maxlen (test_formatter.TestFormatter) ... ok
test_missing (test_formatter.TestFormatter) ... ok
test_missing_custom_default (test_formatter.TestFormatter) ... ok
test_module (test_formatter.TestFormatter) ... ok
test_offset (test_formatter.TestFormatter) ... ok
test_optional (test_formatter.TestFormatter) ... ok
test_replace (test_formatter.TestFormatter) ... ok
test_separator (test_formatter.TestFormatter) ... ok
test_slice_bytes (test_formatter.TestFormatter) ... ok
test_slice_str (test_formatter.TestFormatter) ... ok
test_sort (test_formatter.TestFormatter) ... ok
test_template (test_formatter.TestFormatter) ... ok
test_template_fstring (test_formatter.TestFormatter) ... skipped 'no fstring support'
test_ensure_http_scheme (test_text.TestText) ... ok
test_ext_from_url (test_text.TestText) ... ok
test_extr (test_text.TestText) ... ok
test_extract (test_text.TestText) ... ok
test_extract_all (test_text.TestText) ... ok
test_extract_from (test_text.TestText) ... ok
test_extract_iter (test_text.TestText) ... ok
test_filename_from_url (test_text.TestText) ... ok
test_nameext_from_url (test_text.TestText) ... ok
test_parse_bytes (test_text.TestText) ... ok
test_parse_datetime (test_text.TestText) ... ok
test_parse_float (test_text.TestText) ... ok
test_parse_int (test_text.TestText) ... ok
test_parse_query (test_text.TestText) ... ok
test_parse_timestamp (test_text.TestText) ... ok
test_parse_unicode_escapes (test_text.TestText) ... ok
test_remove_html (test_text.TestText) ... ok
test_rextract (test_text.TestText) ... ok
test_root_from_url (test_text.TestText) ... ok
test_slugify (test_text.TestText) ... ok
test_split_html (test_text.TestText) ... ok
test_cache (test_downloader.TestDownloaderModule) ... ok
test_cache_http (test_downloader.TestDownloaderModule) ... ok
test_cache_https (test_downloader.TestDownloaderModule) ... ok
test_find (test_downloader.TestDownloaderModule) ... ok
ERROR
ERROR
test_shorten (test_output.TestShorten) ... ok
test_shorten_noop (test_output.TestShorten) ... ok
test_shorten_separator (test_output.TestShorten) ... ok
test_shorten_eaw (test_output.TestShortenEAW) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW) ... ok
test_cookie_login (test_cookies.TestCookieLogin) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils) ... ERROR
test_dict (test_cookies.TestCookiedict) ... ERROR
test_domain (test_cookies.TestCookiedict) ... ERROR
test_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar) ... ERROR
test_ascii (test_job.TestDataJob) ... ok
test_default (test_job.TestDataJob) ... ok
test_exception (test_job.TestDataJob) ... ok
test_num_string (test_job.TestDataJob) ... ok
test_private (test_job.TestDataJob) ... ok
test_sleep (test_job.TestDataJob) ... ok
test_extractor_filter (test_job.TestDownloadJob) ... ok
test_base_category (test_job.TestInfoJob) ... ok
test_custom (test_job.TestInfoJob) ... ok
test_default (test_job.TestInfoJob) ... ok
test_default (test_job.TestKeywordJob) ... ok
test_child (test_job.TestUrlJob) ... ok
test_default (test_job.TestUrlJob) ... ok
test_fallback (test_job.TestUrlJob) ... ok
test_parent (test_job.TestUrlJob) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments) ... ok
test_embed (test_ytdl.Test_CommandlineArguments) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments) ... ok
test_headers (test_ytdl.Test_CommandlineArguments) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments) ... ok
test_noop (test_ytdl.Test_CommandlineArguments) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments) ... ok
test_retries (test_ytdl.Test_CommandlineArguments) ... ok
test_subs (test_ytdl.Test_CommandlineArguments) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments) ... ok
skipped "cannot import module 'yt_dlp'"
test_database_read (test_cache.TestCache) ... ok
test_decorator (test_cache.TestCache) ... ok
test_expires_db (test_cache.TestCache) ... ok
test_expires_mem (test_cache.TestCache) ... ok
test_invalidate_db (test_cache.TestCache) ... ok
test_invalidate_mem (test_cache.TestCache) ... ok
test_invalidate_mem_simple (test_cache.TestCache) ... ok
test_keyarg_db (test_cache.TestCache) ... ok
test_keyarg_mem (test_cache.TestCache) ... ok
test_keyarg_mem_simple (test_cache.TestCache) ... ok
test_update_db (test_cache.TestCache) ... ok
test_update_mem (test_cache.TestCache) ... ok
test_update_mem_simple (test_cache.TestCache) ... ok
test_add (test_extractor.TestExtractorModule) ... ERROR
test_add_module (test_extractor.TestExtractorModule) ... ERROR
test_categories (test_extractor.TestExtractorModule) ... ok
test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule) ... ERROR
test_from_url (test_extractor.TestExtractorModule) ... ERROR
test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule) ... skipped 'test fails in CI'
test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait) ... ERROR
test_wait_until (test_extractor.TestExtractorWait) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookie_login (test_cookies.TestCookieLogin)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ImportError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ImportError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ImportError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ImportError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ImportError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ImportError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ImportError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ImportError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1223, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1197, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1223, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1197, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1223, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1197, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1223, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1197, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1223, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1197, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1223, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1197, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1223, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.5.10/x64/lib/python3.5/unittest/mock.py", line 1197, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 193 tests in 0.978s

FAILED (errors=26, skipped=7)
unable to import test_postprocessor
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.

step_name: build (3.6)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.6.15/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.6.15/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.6.15/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.6.15/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.6.15/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.6.15/x64/lib
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig) ... ok
test_apply (test_config.TestConfig) ... ok
test_get (test_config.TestConfig) ... ok
test_interpolate (test_config.TestConfig) ... ok
test_interpolate_common (test_config.TestConfig) ... ok
test_load (test_config.TestConfig) ... ok
test_set (test_config.TestConfig) ... ok
test_setdefault (test_config.TestConfig) ... ok
test_unset (test_config.TestConfig) ... ok
test_default_config (test_config.TestConfigFiles) ... ok
test_example_config (test_config.TestConfigFiles) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt) ... ok
test_code_to_language (test_util.TestISO639_1) ... ok
test_language_to_code (test_util.TestISO639_1) ... ok
test_advance (test_util.TestOther) ... ok
test_bdecode (test_util.TestOther) ... ok
test_bencode (test_util.TestOther) ... ok
test_bencode_bdecode (test_util.TestOther) ... ok
test_build_duration_func (test_util.TestOther) ... ok
test_combine_dict (test_util.TestOther) ... ok
test_compile_expression (test_util.TestOther) ... ok
test_contains (test_util.TestOther) ... ok
test_custom_globals (test_util.TestOther) ... ok
test_datetime_to_timestamp (test_util.TestOther) ... ok
test_datetime_to_timestamp_string (test_util.TestOther) ... ok
test_enumerate_reversed (test_util.TestOther) ... ok
test_extractor_filter (test_util.TestOther) ... ok
test_filter_dict (test_util.TestOther) ... ok
test_format_value (test_util.TestOther) ... ok
test_generate_token (test_util.TestOther) ... ok
test_identity (test_util.TestOther) ... ok
test_import_file (test_util.TestOther) ... ok
test_md5 (test_util.TestOther) ... ok
test_noop (test_util.TestOther) ... ok
test_number_to_string (test_util.TestOther) ... ok
test_raises (test_util.TestOther) ... ok
test_sha1 (test_util.TestOther) ... ok
test_to_string (test_util.TestOther) ... ok
test_transform_dict (test_util.TestOther) ... ok
test_unique (test_util.TestOther) ... ok
test_unique_sequence (test_util.TestOther) ... ok
test_universal_none (test_util.TestOther) ... ok
test_build_predicate (test_util.TestPredicate) ... ok
test_filter_predicate (test_util.TestPredicate) ... ok
test_range_predicate (test_util.TestPredicate) ... ok
test_unique_predicate (test_util.TestPredicate) ... ok
test_parse_digit (test_util.TestRange) ... ok
test_parse_empty (test_util.TestRange) ... ok
test_parse_range (test_util.TestRange) ... ok
test_parse_slice (test_util.TestRange) ... ok
test_access_token (test_oauth.TestOAuthSession) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession) ... skipped ''
test_concat (test_oauth.TestOAuthSession) ... ok
test_dunder_call (test_oauth.TestOAuthSession) ... ok
test_generate_signature (test_oauth.TestOAuthSession) ... ok
test_nonce (test_oauth.TestOAuthSession) ... ok
test_quote (test_oauth.TestOAuthSession) ... ok
test_request_token (test_oauth.TestOAuthSession) ... skipped ''
test_alternative (test_formatter.TestFormatter) ... ok
test_chain_special (test_formatter.TestFormatter) ... ok
test_conversions (test_formatter.TestFormatter) ... ok
test_datetime (test_formatter.TestFormatter) ... ok
test_dict_access (test_formatter.TestFormatter) ... ok
test_expression (test_formatter.TestFormatter) ... ok
test_fmt_func (test_formatter.TestFormatter) ... ok
test_fstring (test_formatter.TestFormatter) ... ok
test_globals_env (test_formatter.TestFormatter) ... ok
test_globals_now (test_formatter.TestFormatter) ... ok
test_indexing (test_formatter.TestFormatter) ... ok
test_join (test_formatter.TestFormatter) ... ok
test_literals (test_formatter.TestFormatter) ... ok
test_maxlen (test_formatter.TestFormatter) ... ok
test_missing (test_formatter.TestFormatter) ... ok
test_missing_custom_default (test_formatter.TestFormatter) ... ok
test_module (test_formatter.TestFormatter) ... ok
test_offset (test_formatter.TestFormatter) ... ok
test_optional (test_formatter.TestFormatter) ... ok
test_replace (test_formatter.TestFormatter) ... ok
test_separator (test_formatter.TestFormatter) ... ok
test_slice_bytes (test_formatter.TestFormatter) ... ok
test_slice_str (test_formatter.TestFormatter) ... ok
test_sort (test_formatter.TestFormatter) ... ok
test_template (test_formatter.TestFormatter) ... ok
test_template_fstring (test_formatter.TestFormatter) ... ok
test_ensure_http_scheme (test_text.TestText) ... ok
test_ext_from_url (test_text.TestText) ... ok
test_extr (test_text.TestText) ... ok
test_extract (test_text.TestText) ... ok
test_extract_all (test_text.TestText) ... ok
test_extract_from (test_text.TestText) ... ok
test_extract_iter (test_text.TestText) ... ok
test_filename_from_url (test_text.TestText) ... ok
test_nameext_from_url (test_text.TestText) ... ok
test_parse_bytes (test_text.TestText) ... ok
test_parse_datetime (test_text.TestText) ... ok
test_parse_float (test_text.TestText) ... ok
test_parse_int (test_text.TestText) ... ok
test_parse_query (test_text.TestText) ... ok
test_parse_timestamp (test_text.TestText) ... ok
test_parse_unicode_escapes (test_text.TestText) ... ok
test_remove_html (test_text.TestText) ... ok
test_rextract (test_text.TestText) ... ok
test_root_from_url (test_text.TestText) ... ok
test_slugify (test_text.TestText) ... ok
test_split_html (test_text.TestText) ... ok
test_cache (test_downloader.TestDownloaderModule) ... ok
test_cache_http (test_downloader.TestDownloaderModule) ... ok
test_cache_https (test_downloader.TestDownloaderModule) ... ok
test_find (test_downloader.TestDownloaderModule) ... ok
ERROR
ERROR
test_shorten (test_output.TestShorten) ... ok
test_shorten_noop (test_output.TestShorten) ... ok
test_shorten_separator (test_output.TestShorten) ... ok
test_shorten_eaw (test_output.TestShortenEAW) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW) ... ok
test_cookie_login (test_cookies.TestCookieLogin) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils) ... ERROR
test_dict (test_cookies.TestCookiedict) ... ERROR
test_domain (test_cookies.TestCookiedict) ... ERROR
test_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar) ... ERROR
test_ascii (test_job.TestDataJob) ... ok
test_default (test_job.TestDataJob) ... ok
test_exception (test_job.TestDataJob) ... ok
test_num_string (test_job.TestDataJob) ... ok
test_private (test_job.TestDataJob) ... ok
test_sleep (test_job.TestDataJob) ... ok
test_extractor_filter (test_job.TestDownloadJob) ... ok
test_base_category (test_job.TestInfoJob) ... ok
test_custom (test_job.TestInfoJob) ... ok
test_default (test_job.TestInfoJob) ... ok
test_default (test_job.TestKeywordJob) ... ok
test_child (test_job.TestUrlJob) ... ok
test_default (test_job.TestUrlJob) ... ok
test_fallback (test_job.TestUrlJob) ... ok
test_parent (test_job.TestUrlJob) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments) ... ok
test_embed (test_ytdl.Test_CommandlineArguments) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments) ... ok
test_headers (test_ytdl.Test_CommandlineArguments) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments) ... ok
test_noop (test_ytdl.Test_CommandlineArguments) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments) ... ok
test_retries (test_ytdl.Test_CommandlineArguments) ... ok
test_subs (test_ytdl.Test_CommandlineArguments) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_embed (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_headers (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_noop (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_remuxs_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries_extractor (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subs (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_database_read (test_cache.TestCache) ... ok
test_decorator (test_cache.TestCache) ... ok
test_expires_db (test_cache.TestCache) ... ok
test_expires_mem (test_cache.TestCache) ... ok
test_invalidate_db (test_cache.TestCache) ... ok
test_invalidate_mem (test_cache.TestCache) ... ok
test_invalidate_mem_simple (test_cache.TestCache) ... ok
test_keyarg_db (test_cache.TestCache) ... ok
test_keyarg_mem (test_cache.TestCache) ... ok
test_keyarg_mem_simple (test_cache.TestCache) ... ok
test_update_db (test_cache.TestCache) ... ok
test_update_mem (test_cache.TestCache) ... ok
test_update_mem_simple (test_cache.TestCache) ... ok
test_add (test_extractor.TestExtractorModule) ... ERROR
test_add_module (test_extractor.TestExtractorModule) ... ERROR
test_categories (test_extractor.TestExtractorModule) ... ok
test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule) ... ERROR
test_from_url (test_extractor.TestExtractorModule) ... ERROR
test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule) ... ERROR
test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait) ... ERROR
test_wait_until (test_extractor.TestExtractorWait) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookie_login (test_cookies.TestCookieLogin)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init_ytdl (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 164, in test_init_ytdl
    extr = extractor.find("ytdl:")
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1247, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1221, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1247, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1221, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1247, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1221, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1247, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1221, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1247, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1221, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1247, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1221, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1247, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/unittest/mock.py", line 1221, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 214 tests in 1.434s

FAILED (errors=27, skipped=3)
unable to import test_postprocessor
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.

step_name: build (3.7)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.7.17/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.7.17/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.7.17/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.7.17/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.7.17/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.7.17/x64/lib
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig) ... ok
test_apply (test_config.TestConfig) ... ok
test_get (test_config.TestConfig) ... ok
test_interpolate (test_config.TestConfig) ... ok
test_interpolate_common (test_config.TestConfig) ... ok
test_load (test_config.TestConfig) ... ok
test_set (test_config.TestConfig) ... ok
test_setdefault (test_config.TestConfig) ... ok
test_unset (test_config.TestConfig) ... ok
test_default_config (test_config.TestConfigFiles) ... ok
test_example_config (test_config.TestConfigFiles) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt) ... ok
test_code_to_language (test_util.TestISO639_1) ... ok
test_language_to_code (test_util.TestISO639_1) ... ok
test_advance (test_util.TestOther) ... ok
test_bdecode (test_util.TestOther) ... ok
test_bencode (test_util.TestOther) ... ok
test_bencode_bdecode (test_util.TestOther) ... ok
test_build_duration_func (test_util.TestOther) ... ok
test_combine_dict (test_util.TestOther) ... ok
test_compile_expression (test_util.TestOther) ... ok
test_contains (test_util.TestOther) ... ok
test_custom_globals (test_util.TestOther) ... ok
test_datetime_to_timestamp (test_util.TestOther) ... ok
test_datetime_to_timestamp_string (test_util.TestOther) ... ok
test_enumerate_reversed (test_util.TestOther) ... ok
test_extractor_filter (test_util.TestOther) ... ok
test_filter_dict (test_util.TestOther) ... ok
test_format_value (test_util.TestOther) ... ok
test_generate_token (test_util.TestOther) ... ok
test_identity (test_util.TestOther) ... ok
test_import_file (test_util.TestOther) ... ok
test_md5 (test_util.TestOther) ... ok
test_noop (test_util.TestOther) ... ok
test_number_to_string (test_util.TestOther) ... ok
test_raises (test_util.TestOther) ... ok
test_sha1 (test_util.TestOther) ... ok
test_to_string (test_util.TestOther) ... ok
test_transform_dict (test_util.TestOther) ... ok
test_unique (test_util.TestOther) ... ok
test_unique_sequence (test_util.TestOther) ... ok
test_universal_none (test_util.TestOther) ... ok
test_build_predicate (test_util.TestPredicate) ... ok
test_filter_predicate (test_util.TestPredicate) ... ok
test_range_predicate (test_util.TestPredicate) ... ok
test_unique_predicate (test_util.TestPredicate) ... ok
test_parse_digit (test_util.TestRange) ... ok
test_parse_empty (test_util.TestRange) ... ok
test_parse_range (test_util.TestRange) ... ok
test_parse_slice (test_util.TestRange) ... ok
test_access_token (test_oauth.TestOAuthSession) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession) ... skipped ''
test_concat (test_oauth.TestOAuthSession) ... ok
test_dunder_call (test_oauth.TestOAuthSession) ... ok
test_generate_signature (test_oauth.TestOAuthSession) ... ok
test_nonce (test_oauth.TestOAuthSession) ... ok
test_quote (test_oauth.TestOAuthSession) ... ok
test_request_token (test_oauth.TestOAuthSession) ... skipped ''
test_alternative (test_formatter.TestFormatter) ... ok
test_chain_special (test_formatter.TestFormatter) ... ok
test_conversions (test_formatter.TestFormatter) ... ok
test_datetime (test_formatter.TestFormatter) ... ok
test_dict_access (test_formatter.TestFormatter) ... ok
test_expression (test_formatter.TestFormatter) ... ok
test_fmt_func (test_formatter.TestFormatter) ... ok
test_fstring (test_formatter.TestFormatter) ... ok
test_globals_env (test_formatter.TestFormatter) ... ok
test_globals_now (test_formatter.TestFormatter) ... ok
test_indexing (test_formatter.TestFormatter) ... ok
test_join (test_formatter.TestFormatter) ... ok
test_literals (test_formatter.TestFormatter) ... ok
test_maxlen (test_formatter.TestFormatter) ... ok
test_missing (test_formatter.TestFormatter) ... ok
test_missing_custom_default (test_formatter.TestFormatter) ... ok
test_module (test_formatter.TestFormatter) ... ok
test_offset (test_formatter.TestFormatter) ... ok
test_optional (test_formatter.TestFormatter) ... ok
test_replace (test_formatter.TestFormatter) ... ok
test_separator (test_formatter.TestFormatter) ... ok
test_slice_bytes (test_formatter.TestFormatter) ... ok
test_slice_str (test_formatter.TestFormatter) ... ok
test_sort (test_formatter.TestFormatter) ... ok
test_template (test_formatter.TestFormatter) ... ok
test_template_fstring (test_formatter.TestFormatter) ... ok
test_ensure_http_scheme (test_text.TestText) ... ok
test_ext_from_url (test_text.TestText) ... ok
test_extr (test_text.TestText) ... ok
test_extract (test_text.TestText) ... ok
test_extract_all (test_text.TestText) ... ok
test_extract_from (test_text.TestText) ... ok
test_extract_iter (test_text.TestText) ... ok
test_filename_from_url (test_text.TestText) ... ok
test_nameext_from_url (test_text.TestText) ... ok
test_parse_bytes (test_text.TestText) ... ok
test_parse_datetime (test_text.TestText) ... ok
test_parse_float (test_text.TestText) ... ok
test_parse_int (test_text.TestText) ... ok
test_parse_query (test_text.TestText) ... ok
test_parse_timestamp (test_text.TestText) ... ok
test_parse_unicode_escapes (test_text.TestText) ... ok
test_remove_html (test_text.TestText) ... ok
test_rextract (test_text.TestText) ... ok
test_root_from_url (test_text.TestText) ... ok
test_slugify (test_text.TestText) ... ok
test_split_html (test_text.TestText) ... ok
test_cache (test_downloader.TestDownloaderModule) ... ok
test_cache_http (test_downloader.TestDownloaderModule) ... ok
test_cache_https (test_downloader.TestDownloaderModule) ... ok
test_find (test_downloader.TestDownloaderModule) ... ok
ERROR
ERROR
test_shorten (test_output.TestShorten) ... ok
test_shorten_noop (test_output.TestShorten) ... ok
test_shorten_separator (test_output.TestShorten) ... ok
test_shorten_eaw (test_output.TestShortenEAW) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW) ... ok
test_cookie_login (test_cookies.TestCookieLogin) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils) ... ERROR
test_dict (test_cookies.TestCookiedict) ... ERROR
test_domain (test_cookies.TestCookiedict) ... ERROR
test_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar) ... ERROR
test_ascii (test_job.TestDataJob) ... ok
test_default (test_job.TestDataJob) ... ok
test_exception (test_job.TestDataJob) ... ok
test_num_string (test_job.TestDataJob) ... ok
test_private (test_job.TestDataJob) ... ok
test_sleep (test_job.TestDataJob) ... ok
test_extractor_filter (test_job.TestDownloadJob) ... ok
test_base_category (test_job.TestInfoJob) ... ok
test_custom (test_job.TestInfoJob) ... ok
test_default (test_job.TestInfoJob) ... ok
test_default (test_job.TestKeywordJob) ... ok
test_child (test_job.TestUrlJob) ... ok
test_default (test_job.TestUrlJob) ... ok
test_fallback (test_job.TestUrlJob) ... ok
test_parent (test_job.TestUrlJob) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments) ... ok
test_embed (test_ytdl.Test_CommandlineArguments) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments) ... ok
test_headers (test_ytdl.Test_CommandlineArguments) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments) ... ok
test_noop (test_ytdl.Test_CommandlineArguments) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments) ... ok
test_retries (test_ytdl.Test_CommandlineArguments) ... ok
test_subs (test_ytdl.Test_CommandlineArguments) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_embed (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_headers (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_noop (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_remuxs_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries_extractor (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subs (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_database_read (test_cache.TestCache) ... ok
test_decorator (test_cache.TestCache) ... ok
test_expires_db (test_cache.TestCache) ... ok
test_expires_mem (test_cache.TestCache) ... ok
test_invalidate_db (test_cache.TestCache) ... ok
test_invalidate_mem (test_cache.TestCache) ... ok
test_invalidate_mem_simple (test_cache.TestCache) ... ok
test_keyarg_db (test_cache.TestCache) ... ok
test_keyarg_mem (test_cache.TestCache) ... ok
test_keyarg_mem_simple (test_cache.TestCache) ... ok
test_update_db (test_cache.TestCache) ... ok
test_update_mem (test_cache.TestCache) ... ok
test_update_mem_simple (test_cache.TestCache) ... ok
test_add (test_extractor.TestExtractorModule) ... ERROR
test_add_module (test_extractor.TestExtractorModule) ... ERROR
test_categories (test_extractor.TestExtractorModule) ... ok
test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule) ... ERROR
test_from_url (test_extractor.TestExtractorModule) ... ERROR
test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule) ... ERROR
test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait) ... ERROR
test_wait_until (test_extractor.TestExtractorWait) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookie_login (test_cookies.TestCookieLogin)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init_ytdl (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 164, in test_init_ytdl
    extr = extractor.find("ytdl:")
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 232, in extractors
    key=lambda x: x.__name__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1307, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1281, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1307, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1281, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1307, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1281, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1307, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1281, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1307, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1281, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1307, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1281, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1307, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/unittest/mock.py", line 1281, in get_original
    "%s does not have the attribute %r" % (target, name)
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 214 tests in 1.028s

FAILED (errors=27, skipped=3)
unable to import test_postprocessor
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.

step_name: build (3.8)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.8.18/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.8.18/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.8.18/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.18/x64/lib
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig) ... ok
test_apply (test_config.TestConfig) ... ok
test_get (test_config.TestConfig) ... ok
test_interpolate (test_config.TestConfig) ... ok
test_interpolate_common (test_config.TestConfig) ... ok
test_load (test_config.TestConfig) ... ok
test_set (test_config.TestConfig) ... ok
test_setdefault (test_config.TestConfig) ... ok
test_unset (test_config.TestConfig) ... ok
test_default_config (test_config.TestConfigFiles) ... ok
test_example_config (test_config.TestConfigFiles) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt) ... ok
test_code_to_language (test_util.TestISO639_1) ... ok
test_language_to_code (test_util.TestISO639_1) ... ok
test_advance (test_util.TestOther) ... ok
test_bdecode (test_util.TestOther) ... ok
test_bencode (test_util.TestOther) ... ok
test_bencode_bdecode (test_util.TestOther) ... ok
test_build_duration_func (test_util.TestOther) ... ok
test_combine_dict (test_util.TestOther) ... ok
test_compile_expression (test_util.TestOther) ... ok
test_contains (test_util.TestOther) ... ok
test_custom_globals (test_util.TestOther) ... ok
test_datetime_to_timestamp (test_util.TestOther) ... ok
test_datetime_to_timestamp_string (test_util.TestOther) ... ok
test_enumerate_reversed (test_util.TestOther) ... ok
test_extractor_filter (test_util.TestOther) ... ok
test_filter_dict (test_util.TestOther) ... ok
test_format_value (test_util.TestOther) ... ok
test_generate_token (test_util.TestOther) ... ok
test_identity (test_util.TestOther) ... ok
test_import_file (test_util.TestOther) ... ok
test_md5 (test_util.TestOther) ... ok
test_noop (test_util.TestOther) ... ok
test_number_to_string (test_util.TestOther) ... ok
test_raises (test_util.TestOther) ... ok
test_sha1 (test_util.TestOther) ... ok
test_to_string (test_util.TestOther) ... ok
test_transform_dict (test_util.TestOther) ... ok
test_unique (test_util.TestOther) ... ok
test_unique_sequence (test_util.TestOther) ... ok
test_universal_none (test_util.TestOther) ... ok
test_build_predicate (test_util.TestPredicate) ... ok
test_filter_predicate (test_util.TestPredicate) ... ok
test_range_predicate (test_util.TestPredicate) ... ok
test_unique_predicate (test_util.TestPredicate) ... ok
test_parse_digit (test_util.TestRange) ... ok
test_parse_empty (test_util.TestRange) ... ok
test_parse_range (test_util.TestRange) ... ok
test_parse_slice (test_util.TestRange) ... ok
test_access_token (test_oauth.TestOAuthSession) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession) ... skipped ''
test_concat (test_oauth.TestOAuthSession) ... ok
test_dunder_call (test_oauth.TestOAuthSession) ... ok
test_generate_signature (test_oauth.TestOAuthSession) ... ok
test_nonce (test_oauth.TestOAuthSession) ... ok
test_quote (test_oauth.TestOAuthSession) ... ok
test_request_token (test_oauth.TestOAuthSession) ... skipped ''
test_alternative (test_formatter.TestFormatter) ... ok
test_chain_special (test_formatter.TestFormatter) ... ok
test_conversions (test_formatter.TestFormatter) ... ok
test_datetime (test_formatter.TestFormatter) ... ok
test_dict_access (test_formatter.TestFormatter) ... ok
test_expression (test_formatter.TestFormatter) ... ok
test_fmt_func (test_formatter.TestFormatter) ... ok
test_fstring (test_formatter.TestFormatter) ... ok
test_globals_env (test_formatter.TestFormatter) ... ok
test_globals_now (test_formatter.TestFormatter) ... ok
test_indexing (test_formatter.TestFormatter) ... ok
test_join (test_formatter.TestFormatter) ... ok
test_literals (test_formatter.TestFormatter) ... ok
test_maxlen (test_formatter.TestFormatter) ... ok
test_missing (test_formatter.TestFormatter) ... ok
test_missing_custom_default (test_formatter.TestFormatter) ... ok
test_module (test_formatter.TestFormatter) ... ok
test_offset (test_formatter.TestFormatter) ... ok
test_optional (test_formatter.TestFormatter) ... ok
test_replace (test_formatter.TestFormatter) ... ok
test_separator (test_formatter.TestFormatter) ... ok
test_slice_bytes (test_formatter.TestFormatter) ... ok
test_slice_str (test_formatter.TestFormatter) ... ok
test_sort (test_formatter.TestFormatter) ... ok
test_template (test_formatter.TestFormatter) ... ok
test_template_fstring (test_formatter.TestFormatter) ... ok
test_ensure_http_scheme (test_text.TestText) ... ok
test_ext_from_url (test_text.TestText) ... ok
test_extr (test_text.TestText) ... ok
test_extract (test_text.TestText) ... ok
test_extract_all (test_text.TestText) ... ok
test_extract_from (test_text.TestText) ... ok
test_extract_iter (test_text.TestText) ... ok
test_filename_from_url (test_text.TestText) ... ok
test_nameext_from_url (test_text.TestText) ... ok
test_parse_bytes (test_text.TestText) ... ok
test_parse_datetime (test_text.TestText) ... ok
test_parse_float (test_text.TestText) ... ok
test_parse_int (test_text.TestText) ... ok
test_parse_query (test_text.TestText) ... ok
test_parse_timestamp (test_text.TestText) ... ok
test_parse_unicode_escapes (test_text.TestText) ... ok
test_remove_html (test_text.TestText) ... ok
test_rextract (test_text.TestText) ... ok
test_root_from_url (test_text.TestText) ... ok
test_slugify (test_text.TestText) ... ok
test_split_html (test_text.TestText) ... ok
test_cache (test_downloader.TestDownloaderModule) ... ok
test_cache_http (test_downloader.TestDownloaderModule) ... ok
test_cache_https (test_downloader.TestDownloaderModule) ... ok
test_find (test_downloader.TestDownloaderModule) ... ok
ERROR
ERROR
test_shorten (test_output.TestShorten) ... ok
test_shorten_noop (test_output.TestShorten) ... ok
test_shorten_separator (test_output.TestShorten) ... ok
test_shorten_eaw (test_output.TestShortenEAW) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW) ... ok
test_cookie_login (test_cookies.TestCookieLogin) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils) ... ERROR
test_dict (test_cookies.TestCookiedict) ... ERROR
test_domain (test_cookies.TestCookiedict) ... ERROR
test_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar) ... ERROR
test_ascii (test_job.TestDataJob) ... ok
test_default (test_job.TestDataJob) ... ok
test_exception (test_job.TestDataJob) ... ok
test_num_string (test_job.TestDataJob) ... ok
test_private (test_job.TestDataJob) ... ok
test_sleep (test_job.TestDataJob) ... ok
test_extractor_filter (test_job.TestDownloadJob) ... ok
test_base_category (test_job.TestInfoJob) ... ok
test_custom (test_job.TestInfoJob) ... ok
test_default (test_job.TestInfoJob) ... ok
test_default (test_job.TestKeywordJob) ... ok
test_child (test_job.TestUrlJob) ... ok
test_default (test_job.TestUrlJob) ... ok
test_fallback (test_job.TestUrlJob) ... ok
test_parent (test_job.TestUrlJob) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments) ... ok
test_embed (test_ytdl.Test_CommandlineArguments) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments) ... ok
test_headers (test_ytdl.Test_CommandlineArguments) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments) ... ok
test_noop (test_ytdl.Test_CommandlineArguments) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments) ... ok
test_retries (test_ytdl.Test_CommandlineArguments) ... ok
test_subs (test_ytdl.Test_CommandlineArguments) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_embed (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_headers (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_noop (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_remuxs_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries_extractor (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subs (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_database_read (test_cache.TestCache) ... ok
test_decorator (test_cache.TestCache) ... ok
test_expires_db (test_cache.TestCache) ... ok
test_expires_mem (test_cache.TestCache) ... ok
test_invalidate_db (test_cache.TestCache) ... ok
test_invalidate_mem (test_cache.TestCache) ... ok
test_invalidate_mem_simple (test_cache.TestCache) ... ok
test_keyarg_db (test_cache.TestCache) ... ok
test_keyarg_mem (test_cache.TestCache) ... ok
test_keyarg_mem_simple (test_cache.TestCache) ... ok
test_update_db (test_cache.TestCache) ... ok
test_update_mem (test_cache.TestCache) ... ok
test_update_mem_simple (test_cache.TestCache) ... ok
test_add (test_extractor.TestExtractorModule) ... ERROR
test_add_module (test_extractor.TestExtractorModule) ... ERROR
test_categories (test_extractor.TestExtractorModule) ... ok
test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule) ... ERROR
test_from_url (test_extractor.TestExtractorModule) ... ERROR
test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule) ... ERROR
test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait) ... ERROR
test_wait_until (test_extractor.TestExtractorWait) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
unable to import test_postprocessor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookie_login (test_cookies.TestCookieLogin)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init_ytdl (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 164, in test_init_ytdl
    extr = extractor.find("ytdl:")
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1393, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1366, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1393, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1366, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1393, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1366, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1393, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1366, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1393, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1366, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1393, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1366, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1393, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/unittest/mock.py", line 1366, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 214 tests in 1.366s

FAILED (errors=27, skipped=3)
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.

step_name: build (3.9)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.9.18/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.9.18/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.18/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.18/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.9.18/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.9.18/x64/lib
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig) ... ok
test_apply (test_config.TestConfig) ... ok
test_get (test_config.TestConfig) ... ok
test_interpolate (test_config.TestConfig) ... ok
test_interpolate_common (test_config.TestConfig) ... ok
test_load (test_config.TestConfig) ... ok
test_set (test_config.TestConfig) ... ok
test_setdefault (test_config.TestConfig) ... ok
test_unset (test_config.TestConfig) ... ok
test_default_config (test_config.TestConfigFiles) ... ok
test_example_config (test_config.TestConfigFiles) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt) ... ok
test_code_to_language (test_util.TestISO639_1) ... ok
test_language_to_code (test_util.TestISO639_1) ... ok
test_advance (test_util.TestOther) ... ok
test_bdecode (test_util.TestOther) ... ok
test_bencode (test_util.TestOther) ... ok
test_bencode_bdecode (test_util.TestOther) ... ok
test_build_duration_func (test_util.TestOther) ... ok
test_combine_dict (test_util.TestOther) ... ok
test_compile_expression (test_util.TestOther) ... ok
test_contains (test_util.TestOther) ... ok
test_custom_globals (test_util.TestOther) ... ok
test_datetime_to_timestamp (test_util.TestOther) ... ok
test_datetime_to_timestamp_string (test_util.TestOther) ... ok
test_enumerate_reversed (test_util.TestOther) ... ok
test_extractor_filter (test_util.TestOther) ... ok
test_filter_dict (test_util.TestOther) ... ok
test_format_value (test_util.TestOther) ... ok
test_generate_token (test_util.TestOther) ... ok
test_identity (test_util.TestOther) ... ok
test_import_file (test_util.TestOther) ... ok
test_md5 (test_util.TestOther) ... ok
test_noop (test_util.TestOther) ... ok
test_number_to_string (test_util.TestOther) ... ok
test_raises (test_util.TestOther) ... ok
test_sha1 (test_util.TestOther) ... ok
test_to_string (test_util.TestOther) ... ok
test_transform_dict (test_util.TestOther) ... ok
test_unique (test_util.TestOther) ... ok
test_unique_sequence (test_util.TestOther) ... ok
test_universal_none (test_util.TestOther) ... ok
test_build_predicate (test_util.TestPredicate) ... ok
test_filter_predicate (test_util.TestPredicate) ... ok
test_range_predicate (test_util.TestPredicate) ... ok
test_unique_predicate (test_util.TestPredicate) ... ok
test_parse_digit (test_util.TestRange) ... ok
test_parse_empty (test_util.TestRange) ... ok
test_parse_range (test_util.TestRange) ... ok
test_parse_slice (test_util.TestRange) ... ok
test_access_token (test_oauth.TestOAuthSession) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession) ... skipped ''
test_concat (test_oauth.TestOAuthSession) ... ok
test_dunder_call (test_oauth.TestOAuthSession) ... ok
test_generate_signature (test_oauth.TestOAuthSession) ... ok
test_nonce (test_oauth.TestOAuthSession) ... ok
test_quote (test_oauth.TestOAuthSession) ... ok
test_request_token (test_oauth.TestOAuthSession) ... skipped ''
test_alternative (test_formatter.TestFormatter) ... ok
test_chain_special (test_formatter.TestFormatter) ... ok
test_conversions (test_formatter.TestFormatter) ... ok
test_datetime (test_formatter.TestFormatter) ... ok
test_dict_access (test_formatter.TestFormatter) ... ok
test_expression (test_formatter.TestFormatter) ... ok
test_fmt_func (test_formatter.TestFormatter) ... ok
test_fstring (test_formatter.TestFormatter) ... ok
test_globals_env (test_formatter.TestFormatter) ... ok
test_globals_now (test_formatter.TestFormatter) ... ok
test_indexing (test_formatter.TestFormatter) ... ok
test_join (test_formatter.TestFormatter) ... ok
test_literals (test_formatter.TestFormatter) ... ok
test_maxlen (test_formatter.TestFormatter) ... ok
test_missing (test_formatter.TestFormatter) ... ok
test_missing_custom_default (test_formatter.TestFormatter) ... ok
test_module (test_formatter.TestFormatter) ... ok
test_offset (test_formatter.TestFormatter) ... ok
test_optional (test_formatter.TestFormatter) ... ok
test_replace (test_formatter.TestFormatter) ... ok
test_separator (test_formatter.TestFormatter) ... ok
test_slice_bytes (test_formatter.TestFormatter) ... ok
test_slice_str (test_formatter.TestFormatter) ... ok
test_sort (test_formatter.TestFormatter) ... ok
test_template (test_formatter.TestFormatter) ... ok
test_template_fstring (test_formatter.TestFormatter) ... ok
test_ensure_http_scheme (test_text.TestText) ... ok
test_ext_from_url (test_text.TestText) ... ok
test_extr (test_text.TestText) ... ok
test_extract (test_text.TestText) ... ok
test_extract_all (test_text.TestText) ... ok
test_extract_from (test_text.TestText) ... ok
test_extract_iter (test_text.TestText) ... ok
test_filename_from_url (test_text.TestText) ... ok
test_nameext_from_url (test_text.TestText) ... ok
test_parse_bytes (test_text.TestText) ... ok
test_parse_datetime (test_text.TestText) ... ok
test_parse_float (test_text.TestText) ... ok
test_parse_int (test_text.TestText) ... ok
test_parse_query (test_text.TestText) ... ok
test_parse_timestamp (test_text.TestText) ... ok
test_parse_unicode_escapes (test_text.TestText) ... ok
test_remove_html (test_text.TestText) ... ok
test_rextract (test_text.TestText) ... ok
test_root_from_url (test_text.TestText) ... ok
test_slugify (test_text.TestText) ... ok
test_split_html (test_text.TestText) ... ok
test_cache (test_downloader.TestDownloaderModule) ... ok
test_cache_http (test_downloader.TestDownloaderModule) ... ok
test_cache_https (test_downloader.TestDownloaderModule) ... ok
test_find (test_downloader.TestDownloaderModule) ... ok
ERROR
ERROR
test_shorten (test_output.TestShorten) ... ok
test_shorten_noop (test_output.TestShorten) ... ok
test_shorten_separator (test_output.TestShorten) ... ok
test_shorten_eaw (test_output.TestShortenEAW) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW) ... ok
test_cookie_login (test_cookies.TestCookieLogin) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils) ... ERROR
test_dict (test_cookies.TestCookiedict) ... ERROR
test_domain (test_cookies.TestCookiedict) ... ERROR
test_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar) ... ERROR
test_ascii (test_job.TestDataJob) ... ok
test_default (test_job.TestDataJob) ... ok
test_exception (test_job.TestDataJob) ... ok
test_num_string (test_job.TestDataJob) ... ok
test_private (test_job.TestDataJob) ... ok
test_sleep (test_job.TestDataJob) ... ok
test_extractor_filter (test_job.TestDownloadJob) ... ok
test_base_category (test_job.TestInfoJob) ... ok
test_custom (test_job.TestInfoJob) ... ok
test_default (test_job.TestInfoJob) ... ok
test_default (test_job.TestKeywordJob) ... ok
test_child (test_job.TestUrlJob) ... ok
test_default (test_job.TestUrlJob) ... ok
test_fallback (test_job.TestUrlJob) ... ok
test_parent (test_job.TestUrlJob) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments) ... ok
test_embed (test_ytdl.Test_CommandlineArguments) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments) ... ok
test_headers (test_ytdl.Test_CommandlineArguments) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments) ... ok
test_noop (test_ytdl.Test_CommandlineArguments) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments) ... ok
test_retries (test_ytdl.Test_CommandlineArguments) ... ok
test_subs (test_ytdl.Test_CommandlineArguments) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_embed (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_headers (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_noop (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_remuxs_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries_extractor (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subs (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_database_read (test_cache.TestCache) ... ok
test_decorator (test_cache.TestCache) ... ok
test_expires_db (test_cache.TestCache) ... ok
test_expires_mem (test_cache.TestCache) ... ok
test_invalidate_db (test_cache.TestCache) ... ok
test_invalidate_mem (test_cache.TestCache) ... ok
test_invalidate_mem_simple (test_cache.TestCache) ... ok
test_keyarg_db (test_cache.TestCache) ... ok
test_keyarg_mem (test_cache.TestCache) ... ok
test_keyarg_mem_simple (test_cache.TestCache) ... ok
test_update_db (test_cache.TestCache) ... ok
test_update_mem (test_cache.TestCache) ... ok
test_update_mem_simple (test_cache.TestCache) ... ok
test_add (test_extractor.TestExtractorModule) ... ERROR
test_add_module (test_extractor.TestExtractorModule) ... ERROR
test_categories (test_extractor.TestExtractorModule) ... ok
test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule) ... ERROR
test_from_url (test_extractor.TestExtractorModule) ... ERROR
test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule) ... ERROR
test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait) ... ERROR
test_wait_until (test_extractor.TestExtractorWait) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
unable to import test_postprocessor
ERROR: test_cookie_login (test_cookies.TestCookieLogin)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init_ytdl (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 164, in test_init_ytdl
    extr = extractor.find("ytdl:")
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 214 tests in 1.444s

FAILED (errors=27, skipped=3)
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.

step_name: build (3.10)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.10.13/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.10.13/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.10.13/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.10.13/x64/lib
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig) ... ok
test_apply (test_config.TestConfig) ... ok
test_get (test_config.TestConfig) ... ok
test_interpolate (test_config.TestConfig) ... ok
test_interpolate_common (test_config.TestConfig) ... ok
test_load (test_config.TestConfig) ... ok
test_set (test_config.TestConfig) ... ok
test_setdefault (test_config.TestConfig) ... ok
test_unset (test_config.TestConfig) ... ok
test_default_config (test_config.TestConfigFiles) ... ok
test_example_config (test_config.TestConfigFiles) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt) ... ok
test_code_to_language (test_util.TestISO639_1) ... ok
test_language_to_code (test_util.TestISO639_1) ... ok
test_advance (test_util.TestOther) ... ok
test_bdecode (test_util.TestOther) ... ok
test_bencode (test_util.TestOther) ... ok
test_bencode_bdecode (test_util.TestOther) ... ok
test_build_duration_func (test_util.TestOther) ... ok
test_combine_dict (test_util.TestOther) ... ok
test_compile_expression (test_util.TestOther) ... ok
test_contains (test_util.TestOther) ... ok
test_custom_globals (test_util.TestOther) ... ok
test_datetime_to_timestamp (test_util.TestOther) ... ok
test_datetime_to_timestamp_string (test_util.TestOther) ... ok
test_enumerate_reversed (test_util.TestOther) ... ok
test_extractor_filter (test_util.TestOther) ... ok
test_filter_dict (test_util.TestOther) ... ok
test_format_value (test_util.TestOther) ... ok
test_generate_token (test_util.TestOther) ... ok
test_identity (test_util.TestOther) ... ok
test_import_file (test_util.TestOther) ... ok
test_md5 (test_util.TestOther) ... ok
test_noop (test_util.TestOther) ... ok
test_number_to_string (test_util.TestOther) ... ok
test_raises (test_util.TestOther) ... ok
test_sha1 (test_util.TestOther) ... ok
test_to_string (test_util.TestOther) ... ok
test_transform_dict (test_util.TestOther) ... ok
test_unique (test_util.TestOther) ... ok
test_unique_sequence (test_util.TestOther) ... ok
test_universal_none (test_util.TestOther) ... ok
test_build_predicate (test_util.TestPredicate) ... ok
test_filter_predicate (test_util.TestPredicate) ... ok
test_range_predicate (test_util.TestPredicate) ... ok
test_unique_predicate (test_util.TestPredicate) ... ok
test_parse_digit (test_util.TestRange) ... ok
test_parse_empty (test_util.TestRange) ... ok
test_parse_range (test_util.TestRange) ... ok
test_parse_slice (test_util.TestRange) ... ok
test_access_token (test_oauth.TestOAuthSession) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession) ... skipped ''
test_concat (test_oauth.TestOAuthSession) ... ok
test_dunder_call (test_oauth.TestOAuthSession) ... ok
test_generate_signature (test_oauth.TestOAuthSession) ... ok
test_nonce (test_oauth.TestOAuthSession) ... ok
test_quote (test_oauth.TestOAuthSession) ... ok
test_request_token (test_oauth.TestOAuthSession) ... skipped ''
test_alternative (test_formatter.TestFormatter) ... ok
test_chain_special (test_formatter.TestFormatter) ... ok
test_conversions (test_formatter.TestFormatter) ... ok
test_datetime (test_formatter.TestFormatter) ... ok
test_dict_access (test_formatter.TestFormatter) ... ok
test_expression (test_formatter.TestFormatter) ... ok
test_fmt_func (test_formatter.TestFormatter) ... ok
test_fstring (test_formatter.TestFormatter) ... ok
test_globals_env (test_formatter.TestFormatter) ... ok
test_globals_now (test_formatter.TestFormatter) ... ok
test_indexing (test_formatter.TestFormatter) ... ok
test_join (test_formatter.TestFormatter) ... ok
test_literals (test_formatter.TestFormatter) ... ok
test_maxlen (test_formatter.TestFormatter) ... ok
test_missing (test_formatter.TestFormatter) ... ok
test_missing_custom_default (test_formatter.TestFormatter) ... ok
test_module (test_formatter.TestFormatter) ... ok
test_offset (test_formatter.TestFormatter) ... ok
test_optional (test_formatter.TestFormatter) ... ok
test_replace (test_formatter.TestFormatter) ... ok
test_separator (test_formatter.TestFormatter) ... ok
test_slice_bytes (test_formatter.TestFormatter) ... ok
test_slice_str (test_formatter.TestFormatter) ... ok
test_sort (test_formatter.TestFormatter) ... ok
test_template (test_formatter.TestFormatter) ... ok
test_template_fstring (test_formatter.TestFormatter) ... ok
test_ensure_http_scheme (test_text.TestText) ... ok
test_ext_from_url (test_text.TestText) ... ok
test_extr (test_text.TestText) ... ok
test_extract (test_text.TestText) ... ok
test_extract_all (test_text.TestText) ... ok
test_extract_from (test_text.TestText) ... ok
test_extract_iter (test_text.TestText) ... ok
test_filename_from_url (test_text.TestText) ... ok
test_nameext_from_url (test_text.TestText) ... ok
test_parse_bytes (test_text.TestText) ... ok
test_parse_datetime (test_text.TestText) ... ok
test_parse_float (test_text.TestText) ... ok
test_parse_int (test_text.TestText) ... ok
test_parse_query (test_text.TestText) ... ok
test_parse_timestamp (test_text.TestText) ... ok
test_parse_unicode_escapes (test_text.TestText) ... ok
test_remove_html (test_text.TestText) ... ok
test_rextract (test_text.TestText) ... ok
test_root_from_url (test_text.TestText) ... ok
test_slugify (test_text.TestText) ... ok
test_split_html (test_text.TestText) ... ok
test_cache (test_downloader.TestDownloaderModule) ... ok
test_cache_http (test_downloader.TestDownloaderModule) ... ok
test_cache_https (test_downloader.TestDownloaderModule) ... ok
test_find (test_downloader.TestDownloaderModule) ... ok
ERROR
ERROR
test_shorten (test_output.TestShorten) ... ok
test_shorten_noop (test_output.TestShorten) ... ok
test_shorten_separator (test_output.TestShorten) ... ok
test_shorten_eaw (test_output.TestShortenEAW) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW) ... ok
test_cookie_login (test_cookies.TestCookieLogin) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils) ... ERROR
test_dict (test_cookies.TestCookiedict) ... ERROR
test_domain (test_cookies.TestCookiedict) ... ERROR
test_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar) ... ERROR
test_ascii (test_job.TestDataJob) ... ok
test_default (test_job.TestDataJob) ... ok
test_exception (test_job.TestDataJob) ... ok
test_num_string (test_job.TestDataJob) ... ok
test_private (test_job.TestDataJob) ... ok
test_sleep (test_job.TestDataJob) ... ok
test_extractor_filter (test_job.TestDownloadJob) ... ok
test_base_category (test_job.TestInfoJob) ... ok
test_custom (test_job.TestInfoJob) ... ok
test_default (test_job.TestInfoJob) ... ok
test_default (test_job.TestKeywordJob) ... ok
test_child (test_job.TestUrlJob) ... ok
test_default (test_job.TestUrlJob) ... ok
test_fallback (test_job.TestUrlJob) ... ok
test_parent (test_job.TestUrlJob) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments) ... ok
test_embed (test_ytdl.Test_CommandlineArguments) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments) ... ok
test_headers (test_ytdl.Test_CommandlineArguments) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments) ... ok
test_noop (test_ytdl.Test_CommandlineArguments) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments) ... ok
test_retries (test_ytdl.Test_CommandlineArguments) ... ok
test_subs (test_ytdl.Test_CommandlineArguments) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_embed (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_headers (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_noop (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_remuxs_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries_extractor (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subs (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_database_read (test_cache.TestCache) ... ok
test_decorator (test_cache.TestCache) ... ok
test_expires_db (test_cache.TestCache) ... ok
test_expires_mem (test_cache.TestCache) ... ok
test_invalidate_db (test_cache.TestCache) ... ok
test_invalidate_mem (test_cache.TestCache) ... ok
test_invalidate_mem_simple (test_cache.TestCache) ... ok
test_keyarg_db (test_cache.TestCache) ... ok
test_keyarg_mem (test_cache.TestCache) ... ok
test_keyarg_mem_simple (test_cache.TestCache) ... ok
test_update_db (test_cache.TestCache) ... ok
test_update_mem (test_cache.TestCache) ... ok
test_update_mem_simple (test_cache.TestCache) ... ok
test_add (test_extractor.TestExtractorModule) ... ERROR
test_add_module (test_extractor.TestExtractorModule) ... ERROR
test_categories (test_extractor.TestExtractorModule) ... ok
test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule) ... ERROR
test_from_url (test_extractor.TestExtractorModule) ... ERROR
test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule) ... ERROR
test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait) ... ERROR
test_wait_until (test_extractor.TestExtractorWait) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookie_login (test_cookies.TestCookieLogin)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init_ytdl (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 164, in test_init_ytdl
    extr = extractor.find("ytdl:")
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1447, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1420, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1447, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1420, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1447, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1420, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1447, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1420, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1447, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1420, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1447, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1420, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1447, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/unittest/mock.py", line 1420, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 214 tests in 1.563s

FAILED (errors=27, skipped=3)
unable to import test_postprocessor
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.

step_name: build (3.11)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.11.7/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.7/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.7/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.7/x64/lib
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig.test_accumulate) ... ok
test_apply (test_config.TestConfig.test_apply) ... ok
test_get (test_config.TestConfig.test_get) ... ok
test_interpolate (test_config.TestConfig.test_interpolate) ... ok
test_interpolate_common (test_config.TestConfig.test_interpolate_common) ... ok
test_load (test_config.TestConfig.test_load) ... ok
test_set (test_config.TestConfig.test_set) ... ok
test_setdefault (test_config.TestConfig.test_setdefault) ... ok
test_unset (test_config.TestConfig.test_unset) ... ok
test_default_config (test_config.TestConfigFiles.test_default_config) ... ok
test_example_config (test_config.TestConfigFiles.test_example_config) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt.test_cookiestxt_load) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt.test_cookiestxt_store) ... ok
test_code_to_language (test_util.TestISO639_1.test_code_to_language) ... ok
test_language_to_code (test_util.TestISO639_1.test_language_to_code) ... ok
test_advance (test_util.TestOther.test_advance) ... ok
test_bdecode (test_util.TestOther.test_bdecode) ... ok
test_bencode (test_util.TestOther.test_bencode) ... ok
test_bencode_bdecode (test_util.TestOther.test_bencode_bdecode) ... ok
test_build_duration_func (test_util.TestOther.test_build_duration_func) ... ok
test_combine_dict (test_util.TestOther.test_combine_dict) ... ok
test_compile_expression (test_util.TestOther.test_compile_expression) ... ok
test_contains (test_util.TestOther.test_contains) ... ok
test_custom_globals (test_util.TestOther.test_custom_globals) ... ok
test_datetime_to_timestamp (test_util.TestOther.test_datetime_to_timestamp) ... ok
test_datetime_to_timestamp_string (test_util.TestOther.test_datetime_to_timestamp_string) ... ok
test_enumerate_reversed (test_util.TestOther.test_enumerate_reversed) ... ok
test_extractor_filter (test_util.TestOther.test_extractor_filter) ... ok
test_filter_dict (test_util.TestOther.test_filter_dict) ... ok
test_format_value (test_util.TestOther.test_format_value) ... ok
test_generate_token (test_util.TestOther.test_generate_token) ... ok
test_identity (test_util.TestOther.test_identity) ... ok
test_import_file (test_util.TestOther.test_import_file) ... ok
test_md5 (test_util.TestOther.test_md5) ... ok
test_noop (test_util.TestOther.test_noop) ... ok
test_number_to_string (test_util.TestOther.test_number_to_string) ... ok
test_raises (test_util.TestOther.test_raises) ... ok
test_sha1 (test_util.TestOther.test_sha1) ... ok
test_to_string (test_util.TestOther.test_to_string) ... ok
test_transform_dict (test_util.TestOther.test_transform_dict) ... ok
test_unique (test_util.TestOther.test_unique) ... ok
test_unique_sequence (test_util.TestOther.test_unique_sequence) ... ok
test_universal_none (test_util.TestOther.test_universal_none) ... ok
test_build_predicate (test_util.TestPredicate.test_build_predicate) ... ok
test_filter_predicate (test_util.TestPredicate.test_filter_predicate) ... ok
test_range_predicate (test_util.TestPredicate.test_range_predicate) ... ok
test_unique_predicate (test_util.TestPredicate.test_unique_predicate) ... ok
test_parse_digit (test_util.TestRange.test_parse_digit) ... ok
test_parse_empty (test_util.TestRange.test_parse_empty) ... ok
test_parse_range (test_util.TestRange.test_parse_range) ... ok
test_parse_slice (test_util.TestRange.test_parse_slice) ... ok
test_access_token (test_oauth.TestOAuthSession.test_access_token) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession.test_authenticated_call) ... skipped ''
test_concat (test_oauth.TestOAuthSession.test_concat) ... ok
test_dunder_call (test_oauth.TestOAuthSession.test_dunder_call) ... ok
test_generate_signature (test_oauth.TestOAuthSession.test_generate_signature) ... ok
test_nonce (test_oauth.TestOAuthSession.test_nonce) ... ok
test_quote (test_oauth.TestOAuthSession.test_quote) ... ok
test_request_token (test_oauth.TestOAuthSession.test_request_token) ... skipped ''
test_alternative (test_formatter.TestFormatter.test_alternative) ... ok
test_chain_special (test_formatter.TestFormatter.test_chain_special) ... ok
test_conversions (test_formatter.TestFormatter.test_conversions) ... ok
test_datetime (test_formatter.TestFormatter.test_datetime) ... ok
test_dict_access (test_formatter.TestFormatter.test_dict_access) ... ok
test_expression (test_formatter.TestFormatter.test_expression) ... ok
test_fmt_func (test_formatter.TestFormatter.test_fmt_func) ... ok
test_fstring (test_formatter.TestFormatter.test_fstring) ... ok
test_globals_env (test_formatter.TestFormatter.test_globals_env) ... ok
test_globals_now (test_formatter.TestFormatter.test_globals_now) ... ok
test_indexing (test_formatter.TestFormatter.test_indexing) ... ok
test_join (test_formatter.TestFormatter.test_join) ... ok
test_literals (test_formatter.TestFormatter.test_literals) ... ok
test_maxlen (test_formatter.TestFormatter.test_maxlen) ... ok
test_missing (test_formatter.TestFormatter.test_missing) ... ok
test_missing_custom_default (test_formatter.TestFormatter.test_missing_custom_default) ... ok
test_module (test_formatter.TestFormatter.test_module) ... ok
test_offset (test_formatter.TestFormatter.test_offset) ... ok
test_optional (test_formatter.TestFormatter.test_optional) ... ok
test_replace (test_formatter.TestFormatter.test_replace) ... ok
test_separator (test_formatter.TestFormatter.test_separator) ... ok
test_slice_bytes (test_formatter.TestFormatter.test_slice_bytes) ... ok
test_slice_str (test_formatter.TestFormatter.test_slice_str) ... ok
test_sort (test_formatter.TestFormatter.test_sort) ... ok
test_template (test_formatter.TestFormatter.test_template) ... ok
test_template_fstring (test_formatter.TestFormatter.test_template_fstring) ... ok
test_ensure_http_scheme (test_text.TestText.test_ensure_http_scheme) ... ok
test_ext_from_url (test_text.TestText.test_ext_from_url) ... ok
test_extr (test_text.TestText.test_extr) ... ok
test_extract (test_text.TestText.test_extract) ... ok
test_extract_all (test_text.TestText.test_extract_all) ... ok
test_extract_from (test_text.TestText.test_extract_from) ... ok
test_extract_iter (test_text.TestText.test_extract_iter) ... ok
test_filename_from_url (test_text.TestText.test_filename_from_url) ... ok
test_nameext_from_url (test_text.TestText.test_nameext_from_url) ... ok
test_parse_bytes (test_text.TestText.test_parse_bytes) ... ok
test_parse_datetime (test_text.TestText.test_parse_datetime) ... ok
test_parse_float (test_text.TestText.test_parse_float) ... ok
test_parse_int (test_text.TestText.test_parse_int) ... ok
test_parse_query (test_text.TestText.test_parse_query) ... ok
test_parse_timestamp (test_text.TestText.test_parse_timestamp) ... ok
test_parse_unicode_escapes (test_text.TestText.test_parse_unicode_escapes) ... ok
test_remove_html (test_text.TestText.test_remove_html) ... ok
test_rextract (test_text.TestText.test_rextract) ... ok
test_root_from_url (test_text.TestText.test_root_from_url) ... ok
test_slugify (test_text.TestText.test_slugify) ... ok
test_split_html (test_text.TestText.test_split_html) ... ok
test_cache (test_downloader.TestDownloaderModule.test_cache) ... ok
test_cache_http (test_downloader.TestDownloaderModule.test_cache_http) ... ok
test_cache_https (test_downloader.TestDownloaderModule.test_cache_https) ... ok
test_find (test_downloader.TestDownloaderModule.test_find) ... ok
setUpClass (test_downloader.TestHTTPDownloader) ... ERROR
setUpClass (test_downloader.TestTextDownloader) ... ERROR
test_shorten (test_output.TestShorten.test_shorten) ... ok
test_shorten_noop (test_output.TestShorten.test_shorten_noop) ... ok
test_shorten_separator (test_output.TestShorten.test_shorten_separator) ... ok
test_shorten_eaw (test_output.TestShortenEAW.test_shorten_eaw) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW.test_shorten_eaw_mix) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW.test_shorten_eaw_noop) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW.test_shorten_eaw_separator) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW.test_shorten_eaw_separator_mix_) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW.test_shorten_eaw_separator_wide) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW.test_shorten_eaw_wide) ... ok
test_cookie_login (test_cookies.TestCookieLogin.test_cookie_login) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils.test_check_cookies) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils.test_check_cookies_domain) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils.test_check_cookies_expires) ... ERROR
test_dict (test_cookies.TestCookiedict.test_dict) ... ERROR
test_domain (test_cookies.TestCookiedict.test_domain) ... ERROR
test_cookiefile (test_cookies.TestCookiejar.test_cookiefile) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar.test_invalid_cookiefile) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar.test_invalid_filename) ... ERROR
test_ascii (test_job.TestDataJob.test_ascii) ... ok
test_default (test_job.TestDataJob.test_default) ... ok
test_exception (test_job.TestDataJob.test_exception) ... ok
test_num_string (test_job.TestDataJob.test_num_string) ... ok
test_private (test_job.TestDataJob.test_private) ... ok
test_sleep (test_job.TestDataJob.test_sleep) ... ok
test_extractor_filter (test_job.TestDownloadJob.test_extractor_filter) ... ok
test_base_category (test_job.TestInfoJob.test_base_category) ... ok
test_custom (test_job.TestInfoJob.test_custom) ... ok
test_default (test_job.TestInfoJob.test_default) ... ok
test_default (test_job.TestKeywordJob.test_default) ... ok
test_child (test_job.TestUrlJob.test_child) ... ok
test_default (test_job.TestUrlJob.test_default) ... ok
test_fallback (test_job.TestUrlJob.test_fallback) ... ok
test_parent (test_job.TestUrlJob.test_parent) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments.test_authentication_options) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments.test_default_search) ... ok
test_embed (test_ytdl.Test_CommandlineArguments.test_embed) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments.test_extract_audio) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments.test_geo_bypass) ... ok
test_headers (test_ytdl.Test_CommandlineArguments.test_headers) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments.test_ignore_errors) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments.test_mark_watched) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments.test_metadata) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments.test_metadata_from_title) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments.test_network_options) ... ok
test_noop (test_ytdl.Test_CommandlineArguments.test_noop) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments.test_proxy) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments.test_recode_video) ... ok
test_retries (test_ytdl.Test_CommandlineArguments.test_retries) ... ok
test_subs (test_ytdl.Test_CommandlineArguments.test_subs) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments.test_subtitle_options) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments.test_thumbnail_options) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments.test_xattr) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments_YtDlp.test_authentication_options) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments_YtDlp.test_default_search) ... ok
test_embed (test_ytdl.Test_CommandlineArguments_YtDlp.test_embed) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments_YtDlp.test_extract_audio) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments_YtDlp.test_geo_bypass) ... ok
test_headers (test_ytdl.Test_CommandlineArguments_YtDlp.test_headers) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments_YtDlp.test_ignore_errors) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments_YtDlp.test_mark_watched) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments_YtDlp.test_metadata) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments_YtDlp.test_metadata_from_title) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments_YtDlp.test_network_options) ... ok
test_noop (test_ytdl.Test_CommandlineArguments_YtDlp.test_noop) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments_YtDlp.test_proxy) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments_YtDlp.test_recode_video) ... ok
test_remuxs_video (test_ytdl.Test_CommandlineArguments_YtDlp.test_remuxs_video) ... ok
test_retries (test_ytdl.Test_CommandlineArguments_YtDlp.test_retries) ... ok
test_retries_extractor (test_ytdl.Test_CommandlineArguments_YtDlp.test_retries_extractor) ... ok
test_subs (test_ytdl.Test_CommandlineArguments_YtDlp.test_subs) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments_YtDlp.test_subtitle_options) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments_YtDlp.test_thumbnail_options) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments_YtDlp.test_xattr) ... ok
test_database_read (test_cache.TestCache.test_database_read) ... ok
test_decorator (test_cache.TestCache.test_decorator) ... ok
test_expires_db (test_cache.TestCache.test_expires_db) ... ok
test_expires_mem (test_cache.TestCache.test_expires_mem) ... ok
test_invalidate_db (test_cache.TestCache.test_invalidate_db) ... ok
test_invalidate_mem (test_cache.TestCache.test_invalidate_mem) ... ok
test_invalidate_mem_simple (test_cache.TestCache.test_invalidate_mem_simple) ... ok
test_keyarg_db (test_cache.TestCache.test_keyarg_db) ... ok
test_keyarg_mem (test_cache.TestCache.test_keyarg_mem) ... ok
test_keyarg_mem_simple (test_cache.TestCache.test_keyarg_mem_simple) ... ok
test_update_db (test_cache.TestCache.test_update_db) ... ok
test_update_mem (test_cache.TestCache.test_update_mem) ... ok
test_update_mem_simple (test_cache.TestCache.test_update_mem_simple) ... ok
test_add (test_extractor.TestExtractorModule.test_add) ... ERROR
test_add_module (test_extractor.TestExtractorModule.test_add_module) ... ERROR
test_categories (test_extractor.TestExtractorModule.test_categories) ... ok
test_docstrings (test_extractor.TestExtractorModule.test_docstrings)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule.test_find) ... ERROR
test_from_url (test_extractor.TestExtractorModule.test_from_url) ... ERROR
test_init (test_extractor.TestExtractorModule.test_init)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule.test_init_ytdl) ... ERROR
test_names (test_extractor.TestExtractorModule.test_names)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule.test_unique_pattern_matches) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait.test_wait_seconds) ... ERROR
test_wait_until (test_extractor.TestExtractorWait.test_wait_until) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait.test_wait_until_datetime) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth.test_oauth1) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth.test_oauth2) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth.test_oauth2_mastodon) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth.test_oauth2_mastodon_unknown) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
              ^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
    ^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
              ^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
    ^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookie_login (test_cookies.TestCookieLogin.test_cookie_login)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils.test_check_cookies)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils.test_check_cookies_domain)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils.test_check_cookies_expires)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict.test_dict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict.test_domain)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar.test_cookiefile)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar.test_invalid_cookiefile)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar.test_invalid_filename)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule.test_add)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
                      ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule.test_add_module)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
                      ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule.test_docstrings)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
                 ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
           ^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule.test_find)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
             ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule.test_from_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
          ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule.test_init)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
           ^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init_ytdl (test_extractor.TestExtractorModule.test_init_ytdl)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 164, in test_init_ytdl
    extr = extractor.find("ytdl:")
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule.test_names)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
                ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
           ^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule.test_unique_pattern_matches)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait.test_wait_seconds)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1443, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1416, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait.test_wait_until)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1443, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1416, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait.test_wait_until_datetime)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1443, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1416, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth.test_oauth1)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1443, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1416, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth.test_oauth2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1443, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1416, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth.test_oauth2_mastodon)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1443, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1416, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth.test_oauth2_mastodon_unknown)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1443, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.11.7/x64/lib/python3.11/unittest/mock.py", line 1416, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 214 tests in 1.268s

FAILED (errors=27, skipped=3)
unable to import test_postprocessor
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.

step_name: build (3.12)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/Python/3.12.1/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.12.1/x64/lib/pkgconfig
  Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.1/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.1/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.1/x64
  LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.12.1/x64/lib
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig.test_accumulate) ... ok
test_apply (test_config.TestConfig.test_apply) ... ok
test_get (test_config.TestConfig.test_get) ... ok
test_interpolate (test_config.TestConfig.test_interpolate) ... ok
test_interpolate_common (test_config.TestConfig.test_interpolate_common) ... ok
test_load (test_config.TestConfig.test_load) ... ok
test_set (test_config.TestConfig.test_set) ... ok
test_setdefault (test_config.TestConfig.test_setdefault) ... ok
test_unset (test_config.TestConfig.test_unset) ... ok
test_default_config (test_config.TestConfigFiles.test_default_config) ... ok
test_example_config (test_config.TestConfigFiles.test_example_config) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt.test_cookiestxt_load) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt.test_cookiestxt_store) ... ok
test_code_to_language (test_util.TestISO639_1.test_code_to_language) ... ok
test_language_to_code (test_util.TestISO639_1.test_language_to_code) ... ok
test_advance (test_util.TestOther.test_advance) ... ok
test_bdecode (test_util.TestOther.test_bdecode) ... ok
test_bencode (test_util.TestOther.test_bencode) ... ok
test_bencode_bdecode (test_util.TestOther.test_bencode_bdecode) ... ok
test_build_duration_func (test_util.TestOther.test_build_duration_func) ... ok
test_combine_dict (test_util.TestOther.test_combine_dict) ... ok
test_compile_expression (test_util.TestOther.test_compile_expression) ... ok
test_contains (test_util.TestOther.test_contains) ... ok
test_custom_globals (test_util.TestOther.test_custom_globals) ... ok
test_datetime_to_timestamp (test_util.TestOther.test_datetime_to_timestamp) ... ok
test_datetime_to_timestamp_string (test_util.TestOther.test_datetime_to_timestamp_string) ... ok
test_enumerate_reversed (test_util.TestOther.test_enumerate_reversed) ... ok
test_extractor_filter (test_util.TestOther.test_extractor_filter) ... ok
test_filter_dict (test_util.TestOther.test_filter_dict) ... ok
test_format_value (test_util.TestOther.test_format_value) ... ok
test_generate_token (test_util.TestOther.test_generate_token) ... ok
test_identity (test_util.TestOther.test_identity) ... ok
test_import_file (test_util.TestOther.test_import_file) ... ok
test_md5 (test_util.TestOther.test_md5) ... ok
test_noop (test_util.TestOther.test_noop) ... ok
test_number_to_string (test_util.TestOther.test_number_to_string) ... ok
test_raises (test_util.TestOther.test_raises) ... ok
test_sha1 (test_util.TestOther.test_sha1) ... ok
test_to_string (test_util.TestOther.test_to_string) ... ok
test_transform_dict (test_util.TestOther.test_transform_dict) ... ok
test_unique (test_util.TestOther.test_unique) ... ok
test_unique_sequence (test_util.TestOther.test_unique_sequence) ... ok
test_universal_none (test_util.TestOther.test_universal_none) ... ok
test_build_predicate (test_util.TestPredicate.test_build_predicate) ... ok
test_filter_predicate (test_util.TestPredicate.test_filter_predicate) ... ok
test_range_predicate (test_util.TestPredicate.test_range_predicate) ... ok
test_unique_predicate (test_util.TestPredicate.test_unique_predicate) ... ok
test_parse_digit (test_util.TestRange.test_parse_digit) ... ok
test_parse_empty (test_util.TestRange.test_parse_empty) ... ok
test_parse_range (test_util.TestRange.test_parse_range) ... ok
test_parse_slice (test_util.TestRange.test_parse_slice) ... ok
test_access_token (test_oauth.TestOAuthSession.test_access_token) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession.test_authenticated_call) ... skipped ''
test_concat (test_oauth.TestOAuthSession.test_concat) ... ok
test_dunder_call (test_oauth.TestOAuthSession.test_dunder_call) ... ok
test_generate_signature (test_oauth.TestOAuthSession.test_generate_signature) ... ok
test_nonce (test_oauth.TestOAuthSession.test_nonce) ... ok
test_quote (test_oauth.TestOAuthSession.test_quote) ... ok
test_request_token (test_oauth.TestOAuthSession.test_request_token) ... skipped ''
test_alternative (test_formatter.TestFormatter.test_alternative) ... ok
test_chain_special (test_formatter.TestFormatter.test_chain_special) ... ok
test_conversions (test_formatter.TestFormatter.test_conversions) ... ok
test_datetime (test_formatter.TestFormatter.test_datetime) ... ok
test_dict_access (test_formatter.TestFormatter.test_dict_access) ... ok
test_expression (test_formatter.TestFormatter.test_expression) ... ok
test_fmt_func (test_formatter.TestFormatter.test_fmt_func) ... ok
test_fstring (test_formatter.TestFormatter.test_fstring) ... ok
test_globals_env (test_formatter.TestFormatter.test_globals_env) ... ok
test_globals_now (test_formatter.TestFormatter.test_globals_now) ... ok
test_indexing (test_formatter.TestFormatter.test_indexing) ... ok
test_join (test_formatter.TestFormatter.test_join) ... ok
test_literals (test_formatter.TestFormatter.test_literals) ... ok
test_maxlen (test_formatter.TestFormatter.test_maxlen) ... ok
test_missing (test_formatter.TestFormatter.test_missing) ... ok
test_missing_custom_default (test_formatter.TestFormatter.test_missing_custom_default) ... ok
test_module (test_formatter.TestFormatter.test_module) ... ok
test_offset (test_formatter.TestFormatter.test_offset) ... ok
test_optional (test_formatter.TestFormatter.test_optional) ... ok
test_replace (test_formatter.TestFormatter.test_replace) ... ok
test_separator (test_formatter.TestFormatter.test_separator) ... ok
test_slice_bytes (test_formatter.TestFormatter.test_slice_bytes) ... ok
test_slice_str (test_formatter.TestFormatter.test_slice_str) ... ok
test_sort (test_formatter.TestFormatter.test_sort) ... ok
test_template (test_formatter.TestFormatter.test_template) ... ok
test_template_fstring (test_formatter.TestFormatter.test_template_fstring) ... ok
test_ensure_http_scheme (test_text.TestText.test_ensure_http_scheme) ... ok
test_ext_from_url (test_text.TestText.test_ext_from_url) ... ok
test_extr (test_text.TestText.test_extr) ... ok
test_extract (test_text.TestText.test_extract) ... ok
test_extract_all (test_text.TestText.test_extract_all) ... ok
test_extract_from (test_text.TestText.test_extract_from) ... ok
test_extract_iter (test_text.TestText.test_extract_iter) ... ok
test_filename_from_url (test_text.TestText.test_filename_from_url) ... ok
test_nameext_from_url (test_text.TestText.test_nameext_from_url) ... ok
test_parse_bytes (test_text.TestText.test_parse_bytes) ... ok
test_parse_datetime (test_text.TestText.test_parse_datetime) ... ok
test_parse_float (test_text.TestText.test_parse_float) ... ok
test_parse_int (test_text.TestText.test_parse_int) ... ok
test_parse_query (test_text.TestText.test_parse_query) ... ok
test_parse_timestamp (test_text.TestText.test_parse_timestamp) ... ok
test_parse_unicode_escapes (test_text.TestText.test_parse_unicode_escapes) ... ok
test_remove_html (test_text.TestText.test_remove_html) ... ok
test_rextract (test_text.TestText.test_rextract) ... ok
test_root_from_url (test_text.TestText.test_root_from_url) ... ok
test_slugify (test_text.TestText.test_slugify) ... ok
test_split_html (test_text.TestText.test_split_html) ... ok
test_cache (test_downloader.TestDownloaderModule.test_cache) ... ok
test_cache_http (test_downloader.TestDownloaderModule.test_cache_http) ... ok
test_cache_https (test_downloader.TestDownloaderModule.test_cache_https) ... ok
test_find (test_downloader.TestDownloaderModule.test_find) ... ok
setUpClass (test_downloader.TestHTTPDownloader) ... ERROR
setUpClass (test_downloader.TestTextDownloader) ... ERROR
test_shorten (test_output.TestShorten.test_shorten) ... ok
test_shorten_noop (test_output.TestShorten.test_shorten_noop) ... ok
test_shorten_separator (test_output.TestShorten.test_shorten_separator) ... ok
test_shorten_eaw (test_output.TestShortenEAW.test_shorten_eaw) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW.test_shorten_eaw_mix) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW.test_shorten_eaw_noop) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW.test_shorten_eaw_separator) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW.test_shorten_eaw_separator_mix_) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW.test_shorten_eaw_separator_wide) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW.test_shorten_eaw_wide) ... ok
test_cookie_login (test_cookies.TestCookieLogin.test_cookie_login) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils.test_check_cookies) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils.test_check_cookies_domain) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils.test_check_cookies_expires) ... ERROR
test_dict (test_cookies.TestCookiedict.test_dict) ... ERROR
test_domain (test_cookies.TestCookiedict.test_domain) ... ERROR
test_cookiefile (test_cookies.TestCookiejar.test_cookiefile) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar.test_invalid_cookiefile) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar.test_invalid_filename) ... ERROR
test_ascii (test_job.TestDataJob.test_ascii) ... ok
test_default (test_job.TestDataJob.test_default) ... ok
test_exception (test_job.TestDataJob.test_exception) ... ok
test_num_string (test_job.TestDataJob.test_num_string) ... ok
test_private (test_job.TestDataJob.test_private) ... ok
test_sleep (test_job.TestDataJob.test_sleep) ... ok
test_extractor_filter (test_job.TestDownloadJob.test_extractor_filter) ... ok
test_base_category (test_job.TestInfoJob.test_base_category) ... ok
test_custom (test_job.TestInfoJob.test_custom) ... ok
test_default (test_job.TestInfoJob.test_default) ... ok
test_default (test_job.TestKeywordJob.test_default) ... ok
test_child (test_job.TestUrlJob.test_child) ... ok
test_default (test_job.TestUrlJob.test_default) ... ok
test_fallback (test_job.TestUrlJob.test_fallback) ... ok
test_parent (test_job.TestUrlJob.test_parent) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments.test_authentication_options) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments.test_default_search) ... ok
test_embed (test_ytdl.Test_CommandlineArguments.test_embed) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments.test_extract_audio) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments.test_geo_bypass) ... ok
test_headers (test_ytdl.Test_CommandlineArguments.test_headers) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments.test_ignore_errors) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments.test_mark_watched) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments.test_metadata) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments.test_metadata_from_title) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments.test_network_options) ... ok
test_noop (test_ytdl.Test_CommandlineArguments.test_noop) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments.test_proxy) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments.test_recode_video) ... ok
test_retries (test_ytdl.Test_CommandlineArguments.test_retries) ... ok
test_subs (test_ytdl.Test_CommandlineArguments.test_subs) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments.test_subtitle_options) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments.test_thumbnail_options) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments.test_xattr) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments_YtDlp.test_authentication_options) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments_YtDlp.test_default_search) ... ok
test_embed (test_ytdl.Test_CommandlineArguments_YtDlp.test_embed) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments_YtDlp.test_extract_audio) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments_YtDlp.test_geo_bypass) ... ok
test_headers (test_ytdl.Test_CommandlineArguments_YtDlp.test_headers) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments_YtDlp.test_ignore_errors) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments_YtDlp.test_mark_watched) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments_YtDlp.test_metadata) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments_YtDlp.test_metadata_from_title) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments_YtDlp.test_network_options) ... ok
test_noop (test_ytdl.Test_CommandlineArguments_YtDlp.test_noop) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments_YtDlp.test_proxy) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments_YtDlp.test_recode_video) ... ok
test_remuxs_video (test_ytdl.Test_CommandlineArguments_YtDlp.test_remuxs_video) ... ok
test_retries (test_ytdl.Test_CommandlineArguments_YtDlp.test_retries) ... ok
test_retries_extractor (test_ytdl.Test_CommandlineArguments_YtDlp.test_retries_extractor) ... ok
test_subs (test_ytdl.Test_CommandlineArguments_YtDlp.test_subs) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments_YtDlp.test_subtitle_options) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments_YtDlp.test_thumbnail_options) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments_YtDlp.test_xattr) ... ok
test_database_read (test_cache.TestCache.test_database_read) ... ok
test_decorator (test_cache.TestCache.test_decorator) ... ok
test_expires_db (test_cache.TestCache.test_expires_db) ... ok
test_expires_mem (test_cache.TestCache.test_expires_mem) ... ok
test_invalidate_db (test_cache.TestCache.test_invalidate_db) ... ok
test_invalidate_mem (test_cache.TestCache.test_invalidate_mem) ... ok
test_invalidate_mem_simple (test_cache.TestCache.test_invalidate_mem_simple) ... ok
test_keyarg_db (test_cache.TestCache.test_keyarg_db) ... ok
test_keyarg_mem (test_cache.TestCache.test_keyarg_mem) ... ok
test_keyarg_mem_simple (test_cache.TestCache.test_keyarg_mem_simple) ... ok
test_update_db (test_cache.TestCache.test_update_db) ... ok
test_update_mem (test_cache.TestCache.test_update_mem) ... ok
test_update_mem_simple (test_cache.TestCache.test_update_mem_simple) ... ok
test_add (test_extractor.TestExtractorModule.test_add) ... ERROR
test_add_module (test_extractor.TestExtractorModule.test_add_module) ... ERROR
test_categories (test_extractor.TestExtractorModule.test_categories) ... ok
test_docstrings (test_extractor.TestExtractorModule.test_docstrings)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule.test_find) ... ERROR
test_from_url (test_extractor.TestExtractorModule.test_from_url) ... ERROR
test_init (test_extractor.TestExtractorModule.test_init)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule.test_init_ytdl) ... ERROR
test_names (test_extractor.TestExtractorModule.test_names)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule.test_unique_pattern_matches) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait.test_wait_seconds) ... ERROR
test_wait_until (test_extractor.TestExtractorWait.test_wait_until) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait.test_wait_until_datetime) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth.test_oauth1) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth.test_oauth2) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth.test_oauth2_mastodon) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth.test_oauth2_mastodon_unknown) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
              ^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
    ^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
              ^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
    ^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookie_login (test_cookies.TestCookieLogin.test_cookie_login)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils.test_check_cookies)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils.test_check_cookies_domain)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils.test_check_cookies_expires)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict.test_dict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict.test_domain)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar.test_cookiefile)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar.test_invalid_cookiefile)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar.test_invalid_filename)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
              ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
    ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule.test_add)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
                      ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule.test_add_module)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
                      ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule.test_docstrings)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
                 ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
           ^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule.test_find)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
             ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule.test_from_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
          ^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule.test_init)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
           ^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init_ytdl (test_extractor.TestExtractorModule.test_init_ytdl)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 164, in test_init_ytdl
    extr = extractor.find("ytdl:")
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule.test_names)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
                ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
           ^^^^^^^
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule.test_unique_pattern_matches)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait.test_wait_seconds)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1455, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1428, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait.test_wait_until)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1455, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1428, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait.test_wait_until_datetime)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1455, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1428, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth.test_oauth1)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1455, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1428, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth.test_oauth2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1455, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1428, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth.test_oauth2_mastodon)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1455, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1428, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth.test_oauth2_mastodon_unknown)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1455, in __enter__
    original, local = self.get_original()
                      ^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/unittest/mock.py", line 1428, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 214 tests in 1.539s

FAILED (errors=27, skipped=3)
unable to import test_postprocessor
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.

step_name: build (pypy3.9)/8_Run tests.txt
log: ##[group]Run make test
[36;1mmake test[0m
shell: /usr/bin/bash -e {0}
env:
  pythonLocation: /opt/hostedtoolcache/PyPy/3.9.18/x64
  Python_ROOT_DIR: /opt/hostedtoolcache/PyPy/3.9.18/x64
  Python2_ROOT_DIR: /opt/hostedtoolcache/PyPy/3.9.18/x64
  Python3_ROOT_DIR: /opt/hostedtoolcache/PyPy/3.9.18/x64
  PKG_CONFIG_PATH: /opt/hostedtoolcache/PyPy/3.9.18/x64/bin/lib/pkgconfig
##[endgroup]
scripts/run_tests.py
test_accumulate (test_config.TestConfig) ... ok
test_apply (test_config.TestConfig) ... ok
test_get (test_config.TestConfig) ... ok
test_interpolate (test_config.TestConfig) ... ok
test_interpolate_common (test_config.TestConfig) ... ok
test_load (test_config.TestConfig) ... ok
test_set (test_config.TestConfig) ... ok
test_setdefault (test_config.TestConfig) ... ok
test_unset (test_config.TestConfig) ... ok
test_default_config (test_config.TestConfigFiles) ... ok
test_example_config (test_config.TestConfigFiles) ... ok
test_cookiestxt_load (test_util.TestCookiesTxt) ... ok
test_cookiestxt_store (test_util.TestCookiesTxt) ... ok
test_code_to_language (test_util.TestISO639_1) ... ok
test_language_to_code (test_util.TestISO639_1) ... ok
test_advance (test_util.TestOther) ... ok
test_bdecode (test_util.TestOther) ... ok
test_bencode (test_util.TestOther) ... ok
test_bencode_bdecode (test_util.TestOther) ... ok
test_build_duration_func (test_util.TestOther) ... ok
test_combine_dict (test_util.TestOther) ... ok
test_compile_expression (test_util.TestOther) ... ok
test_contains (test_util.TestOther) ... ok
test_custom_globals (test_util.TestOther) ... ok
test_datetime_to_timestamp (test_util.TestOther) ... ok
test_datetime_to_timestamp_string (test_util.TestOther) ... ok
test_enumerate_reversed (test_util.TestOther) ... ok
test_extractor_filter (test_util.TestOther) ... ok
test_filter_dict (test_util.TestOther) ... ok
test_format_value (test_util.TestOther) ... ok
test_generate_token (test_util.TestOther) ... ok
test_identity (test_util.TestOther) ... ok
test_import_file (test_util.TestOther) ... ok
test_md5 (test_util.TestOther) ... ok
test_noop (test_util.TestOther) ... ok
test_number_to_string (test_util.TestOther) ... ok
test_raises (test_util.TestOther) ... ok
test_sha1 (test_util.TestOther) ... ok
test_to_string (test_util.TestOther) ... ok
test_transform_dict (test_util.TestOther) ... ok
test_unique (test_util.TestOther) ... ok
test_unique_sequence (test_util.TestOther) ... ok
test_universal_none (test_util.TestOther) ... ok
test_build_predicate (test_util.TestPredicate) ... ok
test_filter_predicate (test_util.TestPredicate) ... ok
test_range_predicate (test_util.TestPredicate) ... ok
test_unique_predicate (test_util.TestPredicate) ... ok
test_parse_digit (test_util.TestRange) ... ok
test_parse_empty (test_util.TestRange) ... ok
test_parse_range (test_util.TestRange) ... ok
test_parse_slice (test_util.TestRange) ... ok
test_access_token (test_oauth.TestOAuthSession) ... skipped ''
test_authenticated_call (test_oauth.TestOAuthSession) ... skipped ''
test_concat (test_oauth.TestOAuthSession) ... ok
test_dunder_call (test_oauth.TestOAuthSession) ... ok
test_generate_signature (test_oauth.TestOAuthSession) ... ok
test_nonce (test_oauth.TestOAuthSession) ... ok
test_quote (test_oauth.TestOAuthSession) ... ok
test_request_token (test_oauth.TestOAuthSession) ... skipped ''
test_alternative (test_formatter.TestFormatter) ... ok
test_chain_special (test_formatter.TestFormatter) ... ok
test_conversions (test_formatter.TestFormatter) ... ok
test_datetime (test_formatter.TestFormatter) ... ok
test_dict_access (test_formatter.TestFormatter) ... ok
test_expression (test_formatter.TestFormatter) ... ok
test_fmt_func (test_formatter.TestFormatter) ... ok
test_fstring (test_formatter.TestFormatter) ... ok
test_globals_env (test_formatter.TestFormatter) ... ok
test_globals_now (test_formatter.TestFormatter) ... ok
test_indexing (test_formatter.TestFormatter) ... ok
test_join (test_formatter.TestFormatter) ... ok
test_literals (test_formatter.TestFormatter) ... ok
test_maxlen (test_formatter.TestFormatter) ... ok
test_missing (test_formatter.TestFormatter) ... ok
test_missing_custom_default (test_formatter.TestFormatter) ... ok
test_module (test_formatter.TestFormatter) ... ok
test_offset (test_formatter.TestFormatter) ... ok
test_optional (test_formatter.TestFormatter) ... ok
test_replace (test_formatter.TestFormatter) ... ok
test_separator (test_formatter.TestFormatter) ... ok
test_slice_bytes (test_formatter.TestFormatter) ... ok
test_slice_str (test_formatter.TestFormatter) ... ok
test_sort (test_formatter.TestFormatter) ... ok
test_template (test_formatter.TestFormatter) ... ok
test_template_fstring (test_formatter.TestFormatter) ... ok
test_ensure_http_scheme (test_text.TestText) ... ok
test_ext_from_url (test_text.TestText) ... ok
test_extr (test_text.TestText) ... ok
test_extract (test_text.TestText) ... ok
test_extract_all (test_text.TestText) ... ok
test_extract_from (test_text.TestText) ... ok
test_extract_iter (test_text.TestText) ... ok
test_filename_from_url (test_text.TestText) ... ok
test_nameext_from_url (test_text.TestText) ... ok
test_parse_bytes (test_text.TestText) ... ok
test_parse_datetime (test_text.TestText) ... ok
test_parse_float (test_text.TestText) ... ok
test_parse_int (test_text.TestText) ... ok
test_parse_query (test_text.TestText) ... ok
test_parse_timestamp (test_text.TestText) ... ok
test_parse_unicode_escapes (test_text.TestText) ... ok
test_remove_html (test_text.TestText) ... ok
test_rextract (test_text.TestText) ... ok
test_root_from_url (test_text.TestText) ... ok
test_slugify (test_text.TestText) ... ok
test_split_html (test_text.TestText) ... ok
test_cache (test_downloader.TestDownloaderModule) ... ok
test_cache_http (test_downloader.TestDownloaderModule) ... ok
test_cache_https (test_downloader.TestDownloaderModule) ... ok
test_find (test_downloader.TestDownloaderModule) ... ok
ERROR
ERROR
test_shorten (test_output.TestShorten) ... ok
test_shorten_noop (test_output.TestShorten) ... ok
test_shorten_separator (test_output.TestShorten) ... ok
test_shorten_eaw (test_output.TestShortenEAW) ... ok
test_shorten_eaw_mix (test_output.TestShortenEAW) ... ok
test_shorten_eaw_noop (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_mix_ (test_output.TestShortenEAW) ... ok
test_shorten_eaw_separator_wide (test_output.TestShortenEAW) ... ok
test_shorten_eaw_wide (test_output.TestShortenEAW) ... ok
test_cookie_login (test_cookies.TestCookieLogin) ... ERROR
test_check_cookies (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_domain (test_cookies.TestCookieUtils) ... ERROR
test_check_cookies_expires (test_cookies.TestCookieUtils) ... ERROR
test_dict (test_cookies.TestCookiedict) ... ERROR
test_domain (test_cookies.TestCookiedict) ... ERROR
test_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_cookiefile (test_cookies.TestCookiejar) ... ERROR
test_invalid_filename (test_cookies.TestCookiejar) ... ERROR
test_ascii (test_job.TestDataJob) ... ok
test_default (test_job.TestDataJob) ... ok
test_exception (test_job.TestDataJob) ... ok
test_num_string (test_job.TestDataJob) ... ok
test_private (test_job.TestDataJob) ... ok
test_sleep (test_job.TestDataJob) ... ok
test_extractor_filter (test_job.TestDownloadJob) ... ok
test_base_category (test_job.TestInfoJob) ... ok
test_custom (test_job.TestInfoJob) ... ok
test_default (test_job.TestInfoJob) ... ok
test_default (test_job.TestKeywordJob) ... ok
test_child (test_job.TestUrlJob) ... ok
test_default (test_job.TestUrlJob) ... ok
test_fallback (test_job.TestUrlJob) ... ok
test_parent (test_job.TestUrlJob) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments) ... ok
test_embed (test_ytdl.Test_CommandlineArguments) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments) ... ok
test_headers (test_ytdl.Test_CommandlineArguments) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments) ... ok
test_noop (test_ytdl.Test_CommandlineArguments) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments) ... ok
test_retries (test_ytdl.Test_CommandlineArguments) ... ok
test_subs (test_ytdl.Test_CommandlineArguments) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments) ... ok
test_authentication_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_default_search (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_embed (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_extract_audio (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_geo_bypass (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_headers (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_ignore_errors (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_mark_watched (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_metadata_from_title (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_network_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_noop (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_proxy (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_recode_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_remuxs_video (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_retries_extractor (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subs (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_subtitle_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_thumbnail_options (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_xattr (test_ytdl.Test_CommandlineArguments_YtDlp) ... ok
test_database_read (test_cache.TestCache) ... ok
test_decorator (test_cache.TestCache) ... ok
test_expires_db (test_cache.TestCache) ... ok
test_expires_mem (test_cache.TestCache) ... ok
test_invalidate_db (test_cache.TestCache) ... ok
test_invalidate_mem (test_cache.TestCache) ... ok
test_invalidate_mem_simple (test_cache.TestCache) ... ok
test_keyarg_db (test_cache.TestCache) ... ok
test_keyarg_mem (test_cache.TestCache) ... ok
test_keyarg_mem_simple (test_cache.TestCache) ... ok
test_update_db (test_cache.TestCache) ... ok
test_update_mem (test_cache.TestCache) ... ok
test_update_mem_simple (test_cache.TestCache) ... ok
test_add (test_extractor.TestExtractorModule) ... ERROR
test_add_module (test_extractor.TestExtractorModule) ... ERROR
test_categories (test_extractor.TestExtractorModule) ... ok
test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness ... ERROR
test_find (test_extractor.TestExtractorModule) ... ERROR
test_from_url (test_extractor.TestExtractorModule) ... ERROR
test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize() ... ERROR
test_init_ytdl (test_extractor.TestExtractorModule) ... ERROR
test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor ... ERROR
test_unique_pattern_matches (test_extractor.TestExtractorModule) ... ERROR
test_wait_seconds (test_extractor.TestExtractorWait) ... ERROR
test_wait_until (test_extractor.TestExtractorWait) ... ERROR
test_wait_until_datetime (test_extractor.TestExtractorWait) ... ERROR
test_oauth1 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2 (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon (test_extractor.TextExtractorOAuth) ... ERROR
test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth) ... ERROR

======================================================================
ERROR: setUpClass (test_downloader.TestHTTPDownloader)
----------------------------------------------------------------------
unable to import test_postprocessor
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 174, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: setUpClass (test_downloader.TestTextDownloader)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 234, in setUpClass
    TestDownloaderBase.setUpClass()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 113, in setUpClass
    cls.job = FakeJob()
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_downloader.py", line 37, in __init__
    self.extractor.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookie_login (test_cookies.TestCookieLogin)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 118, in test_cookie_login
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 127, in test_check_cookies
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_domain (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 149, in test_check_cookies_domain
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_check_cookies_expires (test_cookies.TestCookieUtils)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 171, in test_check_cookies_expires
    extr = _get_extractor("test")
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_dict (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 87, in test_dict
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_domain (test_cookies.TestCookiedict)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 95, in test_domain
    extr = _get_extractor(category)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 49, in test_cookiefile
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_cookiefile (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 59, in test_invalid_cookiefile
    self._test_warning(self.invalid_cookiefile, ValueError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_invalid_filename (test_cookies.TestCookiejar)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 62, in test_invalid_filename
    self._test_warning(join(self.path.name, "nothing"), FileNotFoundError)
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 69, in _test_warning
    cookies = _get_extractor("test").cookies
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_cookies.py", line 206, in _get_extractor
    extr.initialize()
AttributeError: 'NoneType' object has no attribute 'initialize'

======================================================================
ERROR: test_add (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 71, in test_add
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_add_module (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 78, in test_add_module
    self.assertIsNone(extractor.find(uri))
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_docstrings (test_extractor.TestExtractorModule)
Ensure docstring uniqueness
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 175, in test_docstrings
    for extr1 in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_find (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 59, in test_find
    result = extractor.find(uri)
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_from_url (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 88, in test_from_url
    cls = extractor.find(uri).__class__
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init (test_extractor.TestExtractorModule)
Test for exceptions in Extractor.initialize() and .finalize()
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 152, in test_init
    for cls in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_init_ytdl (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 164, in test_init_ytdl
    extr = extractor.find("ytdl:")
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 205, in find
    for cls in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_names (test_extractor.TestExtractorModule)
Ensure extractor classes are named CategorySubcategoryExtractor
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 191, in test_names
    for extr in extractor.extractors():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 230, in extractors
    return sorted(
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_unique_pattern_matches (test_extractor.TestExtractorModule)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 124, in test_unique_pattern_matches
    for extr2 in _list_classes():
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 244, in _list_classes
    for module in _module_iter:
  File "/home/runner/work/gallery-dl/gallery-dl/gallery_dl/extractor/__init__.py", line 253, in _modules_internal
    yield __import__(module_name, globals_, None, (), 1)
ModuleNotFoundError: No module named 'gallery_dl.extractor.hbrowse'

======================================================================
ERROR: test_wait_seconds (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 209, in test_wait_seconds
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 222, in test_wait_until
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_wait_until_datetime (test_extractor.TestExtractorWait)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 238, in test_wait_until_datetime
    with patch("time.sleep") as sleep, patch.object(extr, "log") as log:
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute 'log'

======================================================================
ERROR: test_oauth1 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 268, in test_oauth1
    with patch.object(extr, "_oauth1_authorization_flow") as m:
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth1_authorization_flow'

======================================================================
ERROR: test_oauth2 (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 277, in test_oauth2
    with patch.object(extr, "_oauth2_authorization_code_grant") as m:
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 285, in test_oauth2_mastodon
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

======================================================================
ERROR: test_oauth2_mastodon_unknown (test_extractor.TextExtractorOAuth)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/gallery-dl/gallery-dl/test/test_extractor.py", line 295, in test_oauth2_mastodon_unknown
    with patch.object(extr, "_oauth2_authorization_code_grant") as m, \
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1404, in __enter__
    original, local = self.get_original()
  File "/opt/hostedtoolcache/PyPy/3.9.18/x64/lib/pypy3.9/unittest/mock.py", line 1377, in get_original
    raise AttributeError(
AttributeError: None does not have the attribute '_oauth2_authorization_code_grant'

----------------------------------------------------------------------
Ran 214 tests in 3.359s

FAILED (errors=27, skipped=3)
make: *** [Makefile:22: test] Error 1
##[error]Process completed with exit code 2.


Changed files:
gallery_dl/extractor/__init__.py

Fix diff:
diff --git a/gallery_dl/extractor/__init__.py b/gallery_dl/extractor/__init__.py
index 86308917..d6247362 100644
--- a/gallery_dl/extractor/__init__.py
+++ b/gallery_dl/extractor/__init__.py
@@ -55,7 +55,6 @@ modules = [
     "gelbooru_v02",
     "gofile",
     "hatenablog",
-    "hbrowse",
     "hentai2read",
     "hentaicosplays",
     "hentaifoundry",