-
-
Notifications
You must be signed in to change notification settings - Fork 8
Closed
Labels
🐛 bugSomething isn't working, or a fix is proposedSomething isn't working, or a fix is proposed
Description
Some parametrized tests are failing with the latest click release 8.2.1, possibly related to this bug: pallets/click#2863 (comment)
FAILED tests/test_envvar.py::test_auto_envvar_parsing[command|working_envvar={'Magic': 'False'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[command|working_envvar={'Magic': 'false'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[command|working_envvar={'Magic': 'fAlsE'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[command|working_envvar={'Magic': '0'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[command|working_envvar={'sUper': 'False'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[command|working_envvar={'sUper': 'false'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[command|working_envvar={'sUper': 'fAlsE'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[command|working_envvar={'sUper': '0'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'Magic': 'False'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'Magic': 'false'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'Magic': 'fAlsE'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'Magic': '0'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'sUper': 'False'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'sUper': 'false'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'sUper': 'fAlsE'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'sUper': '0'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'yo_FLAG': 'False'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'yo_FLAG': 'false'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'yo_FLAG': 'fAlsE'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
FAILED tests/test_envvar.py::test_auto_envvar_parsing[extra_command|working_envvar={'yo_FLAG': '0'}|expected_flag=False] - AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
One of them:
_______________________________________________________________________________________________ test_auto_envvar_parsing[extra_command|working_envvar={'yo_FLAG': '0'}|expected_flag=False] _______________________________________________________________________________________________
invoke = <bound method ExtraCliRunner.invoke of <click_extra.testing.ExtraCliRunner object at 0x7fa88e511940>>, cmd_decorator = <function decorator_factory.<locals>.decorator at 0x7fa88e8b5440>, envvars = {'yo_FLAG': '0'}, expected_flag = False
@pytest.mark.parametrize("cmd_decorator, envvars, expected_flag", envvars_test_cases())
def test_auto_envvar_parsing(invoke, cmd_decorator, envvars, expected_flag):
"""This test highlights the way Click recognize and parse envvars.
It shows that the default behavior is not ideal, and covers how ``extra_command``
improves the situation by normalizing the envvar name.
"""
@cmd_decorator(context_settings={"auto_envvar_prefix": "yo"})
# XXX Explicitly pass bool type to fix 8.2.0 regression:
# https://github.com/pallets/click/discussions/2863#discussioncomment-12675496
@option("--flag/--no-flag", type=bool, envvar=["Magic", "sUper"])
def my_cli(flag):
echo(f"Flag value: {flag}")
registered_envvars = ["Magic", "sUper"]
# Specific behavior of @extra_command that is not present in vanilla Click.
if cmd_decorator == extra_command:
# @extra_command forces registration of auto-generated envvar.
registered_envvars = [*registered_envvars, "yo_FLAG"]
# On Windows, envvars are normalizes to uppercase.
if os.name == "nt":
registered_envvars = [envvar.upper() for envvar in registered_envvars]
# @extra_command parameters returns envvar property as tuple, while vanilla Click
# returns a list.
registered_envvars = tuple(registered_envvars)
assert my_cli.params[0].envvar == registered_envvars
result = invoke(my_cli, env=envvars)
assert result.exit_code == 0
assert not result.stderr
> assert result.stdout == f"Flag value: {expected_flag}\n"
E AssertionError: assert 'Flag value: True\n' == 'Flag value: False\n'
E
E - Flag value: False
E ? ^^^^
E + Flag value: True
E ? ^^^
/home/danigm/Projects/suse/tmp/click-extra/tests/test_envvar.py:237: AssertionError
Metadata
Metadata
Assignees
Labels
🐛 bugSomething isn't working, or a fix is proposedSomething isn't working, or a fix is proposed