def test_prompt_disallows_empty_response(mocker): console = RichConsole(file=io.StringIO()) Prompt.prompt_( "What is your name?", console=console, stream=io.StringIO("\nfoo"), ) expected = ("What is your name?: Response required. Please try again.\n" "What is your name?: ") assert console.file.getvalue() == expected
def test_prompt_with_conditional_skip(mocker, default, brack): console = RichConsole(file=io.StringIO()) mocked_validator = mocker.MagicMock(return_value="something") assert (Prompt.prompt_( "What is your name?", console=console, allow_omission=True, stream=io.StringIO("n\n"), default=default, validator=mocked_validator, ) is None) assert console.file.getvalue() == f"What is your name? {brack}: " mocked_validator.assert_not_called()
def _prompts( keys: Iterable[str], defaults: Dict[str, str] = None, validator: Callable[[str, str], Union[str, Tuple[str, str]]] = None, allow_omission: bool = True, stream: Optional[TextIO] = None, ) -> Dict[str, OptStr]: from dvc.ui.prompt import Prompt defaults = defaults or {} return { key: Prompt.prompt_( PROMPTS[key], console=ui.error_console, default=defaults.get(key), validator=partial(validator, key) if validator else None, allow_omission=allow_omission, stream=stream, ) for key in keys }