Skip to content

test_lazy_choices_help fails on Python 3.14 #1641

Open
@hroncok

Description

@hroncok

Checklist

  • I've searched for similar issues.
  • I'm using the latest version of HTTPie (from git HEAD)

Minimal reproduction code and steps

This is with Python 3.14.0b3 and b4 alike.

uv venv --python=python3.14 venv
. venv/bin/activate
uv pip install '.[dev]'
uv pip install -U httpbin flask werkzeug  # to support Python 3.14
python -m pytest --verbose -k test_lazy_choices_help

Current result

============================= test session starts ==============================
platform linux -- Python 3.14.0b3, pytest-8.4.1, pluggy-1.6.0 -- .../httpie/venv/bin/python
cachedir: .pytest_cache
rootdir: .../httpie
configfile: pytest.ini
plugins: mock-3.14.1, httpbin-2.1.0, cov-6.2.1
collecting ... collected 1028 items / 1027 deselected / 1 selected

tests/test_cli_utils.py::test_lazy_choices_help FAILED                   [100%]

=================================== FAILURES ===================================
____________________________ test_lazy_choices_help ____________________________

self = <Mock name='mock.getter' id='140611738470112'>

    def assert_not_called(self):
        """assert that the mock was never called.
        """
        if self.call_count != 0:
            msg = ("Expected '%s' to not have been called. Called %s times.%s"
                   % (self._mock_name or 'mock',
                      self.call_count,
                      self._calls_repr()))
>           raise AssertionError(msg)
E           AssertionError: Expected 'getter' to not have been called. Called 1 times.
E           Calls: [call()].

/usr/lib64/python3.14/unittest/mock.py:946: AssertionError

During handling of the above exception, another exception occurred:

    def test_lazy_choices_help():
        mock = Mock()
        getter = mock.getter
        getter.return_value = ['a', 'b', 'c']
    
        help_formatter = mock.help_formatter
        help_formatter.return_value = '<my help>'
    
        parser = ArgumentParser()
        parser.register('action', 'lazy_choices', LazyChoices)
        parser.add_argument(
            '--lazy-option',
            default='a',
            metavar='SYMBOL',
            action='lazy_choices',
            getter=getter,
            help_formatter=help_formatter,
            cache=False  # for test purposes
        )
    
        # Parser initialization doesn't call it.
>       getter.assert_not_called()
E       AssertionError: Expected 'getter' to not have been called. Called 1 times.
E       Calls: [call()].

tests/test_cli_utils.py:73: AssertionError
=============================== warnings summary ===============================
httpie/cli/definition.py:526
  .../httpie/httpie/cli/definition.py:526: PendingDeprecationWarning: FileType is deprecated. Simply open files after parsing arguments.
    type=FileType('a+b'),

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_cli_utils.py::test_lazy_choices_help - AssertionError: Expe...
================ 1 failed, 1027 deselected, 1 warning in 0.20s =================

Expected result

Tests pass.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingnewNeeds triage. Comments are welcome!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions