diff --git a/soup_cli/commands/deploy.py b/soup_cli/commands/deploy.py index 3d64f7e..abedbef 100644 --- a/soup_cli/commands/deploy.py +++ b/soup_cli/commands/deploy.py @@ -99,6 +99,11 @@ def ollama( # --- Remove mode --- if remove: + valid_name, name_err = validate_model_name(remove) + if not valid_name: + console.print(f"[red]Invalid model name:[/] {name_err}") + raise typer.Exit(1) + version = detect_ollama() if not version: console.print("[red]Ollama not found.[/] Install from https://ollama.com") diff --git a/tests/test_deploy_ollama.py b/tests/test_deploy_ollama.py index cec4708..89a2164 100644 --- a/tests/test_deploy_ollama.py +++ b/tests/test_deploy_ollama.py @@ -469,6 +469,14 @@ def test_deploy_remove_failure(mock_rm, mock_detect): assert "not found" in result.output.lower() +def test_deploy_remove_invalid_name(): + result = runner.invoke( + app, ["deploy", "ollama", "--remove", "bad/name", "--yes"] + ) + assert result.exit_code == 1 + assert "invalid" in result.output.lower() + + @patch(f"{_OLLAMA}.detect_ollama", return_value=None) def test_deploy_remove_no_ollama(mock_detect): result = runner.invoke(app, ["deploy", "ollama", "--remove", "soup-test", "--yes"])