1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
import pytest
from briefcase.console import InputDisabled
@pytest.mark.parametrize(
"user_input, expected",
[
("y", True),
("Y", True),
("yes", True),
("YES", True),
("Yes", True),
("YeS", True),
("Yay", True),
("Yaaaas!", True),
("n", False),
("N", False),
("No", False),
("NO", False),
("Nay", False),
("never!", False),
],
)
def test_boolean(console, user_input, expected):
question = "Are you handsome"
prompt = "Are you handsome [y/N]? "
console.values = [user_input]
result = console.input_boolean(question=question)
assert result == expected
assert console.prompts == [prompt]
def test_boolean_default_true(console):
"""If True is the default, it is returned."""
question = "Are you handsome"
prompt = "Are you handsome [Y/n]? "
console.values = [""]
result = console.input_boolean(question=question, default=True)
assert result
assert console.prompts == [prompt]
def test_boolean_default_false(console):
"""If False is the default, it is returned."""
question = "Are you handsome"
prompt = "Are you handsome [y/N]? "
console.values = [""]
result = console.input_boolean(question=question, default=False)
assert not result
assert console.prompts == [prompt]
def test_boolean_default_None(console):
"""If no default is specified, no response is not accepted."""
question = "Are you handsome"
console.values = ["", "y"]
result = console.input_boolean(question=question, default=None)
assert result
assert console.prompts == [f"{question} [y/n]? "] * 2
def test_bad_input(console):
question = "Are you handsome"
console.values = ["pork", "ham", "spam", "Yam"]
result = console.input_boolean(question=question)
assert result
assert console.prompts == [f"{question} [y/N]? "] * 4
def test_disabled(disabled_console):
"""If input is disabled, the default is returned."""
question = "Are you handsome "
result = disabled_console.input_boolean(question=question)
assert not result
assert disabled_console.prompts == []
def test_disabled_no_default(disabled_console):
"""If input is disabled and there is no default, an error is raised."""
question = "Are you handsome "
with pytest.raises(InputDisabled):
disabled_console.input_boolean(question=question, default=None)
assert disabled_console.prompts == []
|