Compare commits

...

4 Commits

4 changed files with 24 additions and 11 deletions

View File

@@ -61,6 +61,7 @@ def main():
setup_logger(verbose=False, log_file=LOG_FILE)
logger = get_logger()
try:
if registry.requires_config(args.command):
require_config(logger)
config = Configuration()
@@ -68,7 +69,6 @@ def main():
verbose = config_data.get("verbose", False)
setup_logger(verbose=verbose, log_file=LOG_FILE)
try:
registry.execute(
args.command, skip_confirmation=getattr(args, "yes", False))
except (ValueError, Exception) as e:

View File

@@ -94,7 +94,10 @@ def get_logger() -> logging.Logger:
def handle_error(error: Exception, logger: logging.Logger, exit_on_error: bool = False) -> None:
if isinstance(error, ValueError):
if isinstance(error, KeyError):
message = error.args[0] if error.args else str(error)
logger.error(f"{message}")
elif isinstance(error, ValueError):
logger.error(f"{error}")
else:
logger.error(f"Unexpected error: {error}", exc_info=True)

View File

@@ -13,7 +13,7 @@ def user_input(monkeypatch) -> Callable[[Iterable[str], Iterable[str]], None]:
password_iter = iter(passwords)
monkeypatch.setattr("builtins.input", lambda _prompt: next(input_iter))
monkeypatch.setattr("getpass.getpass",
monkeypatch.setattr("skywipe.configure.getpass",
lambda _prompt: next(password_iter))
return _set

View File

@@ -50,9 +50,14 @@ def _setup_error_mocks(monkeypatch, calls, error_factory):
monkeypatch.setattr(cli, "get_logger",
lambda: logging.getLogger(TEST_LOGGER_NAME))
def _format_error_message(error):
if isinstance(error, KeyError):
return error.args[0] if error.args else str(error)
return str(error)
def mock_handle_error(error, logger, exit_on_error=False):
calls["handle_error"] = (type(error).__name__,
str(error), exit_on_error)
_format_error_message(error), exit_on_error)
monkeypatch.setattr(cli, "handle_error", mock_handle_error)
@@ -186,9 +191,14 @@ def test_main_handles_config_load_error(monkeypatch):
def raise_config_error(self):
raise RuntimeError("config error")
def _format_error_message(error):
if isinstance(error, KeyError):
return error.args[0] if error.args else str(error)
return str(error)
def mock_handle_error(error, logger, exit_on_error=False):
calls["handle_error"] = (type(error).__name__,
str(error), exit_on_error)
_format_error_message(error), exit_on_error)
_setup_parser_mocks(monkeypatch)
monkeypatch.setattr(cli.registry, "requires_config", lambda name: True)