test: add unit tests to pass diff-coverage gate (91%)
test / unit (pull_request) Successful in 57s
test / integration (pull_request) Successful in 16s
test / coverage (pull_request) Successful in 1m4s
lint / lint (push) Successful in 1m56s
prd-number / assign-numbers (push) Successful in 19s
test / unit (push) Successful in 1m0s
test / integration (push) Successful in 19s
test / coverage (push) Successful in 1m5s
Update Quality Badges / update-badges (push) Failing after 59s
test / unit (pull_request) Successful in 57s
test / integration (pull_request) Successful in 16s
test / coverage (pull_request) Successful in 1m4s
lint / lint (push) Successful in 1m56s
prd-number / assign-numbers (push) Successful in 19s
test / unit (push) Successful in 1m0s
test / integration (push) Successful in 19s
test / coverage (push) Successful in 1m5s
Update Quality Badges / update-badges (push) Failing after 59s
Cover the new production lines added on this branch: - cli/__init__: MissingEnvVarError maps to return 1 - cli/start: no-agents-defined path, prepare_with_preflight calls render_preflight, _text_render_preflight backend name output - env: resolve_env raises MissingEnvVarError for missing interpolated var - smolmachines/launch: _proxy_host Linux/non-Linux branches, _discover_urls git-gate host and supervise URL stamping Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit was merged in pull request #284.
This commit is contained in:
@@ -9,6 +9,7 @@ is created.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import io
|
||||
import os
|
||||
import unittest
|
||||
from unittest.mock import MagicMock, patch
|
||||
@@ -184,5 +185,55 @@ class TestCmdStartHeadless(unittest.TestCase):
|
||||
self.assertEqual("docker", self._launch_mock.call_args[1]["backend_name"])
|
||||
|
||||
|
||||
class TestPrepareWithPreflight(unittest.TestCase):
|
||||
"""prepare_with_preflight calls render_preflight with the plan and backend name."""
|
||||
|
||||
def test_render_preflight_called(self):
|
||||
from pathlib import Path
|
||||
mock_backend = MagicMock()
|
||||
mock_plan = MagicMock()
|
||||
mock_backend.prepare.return_value = mock_plan
|
||||
mock_backend.name = "test-backend"
|
||||
render = MagicMock()
|
||||
|
||||
with patch("bot_bottle.cli.start.get_bottle_backend", return_value=mock_backend), \
|
||||
patch("bot_bottle.cli.start._identity_from_plan", return_value="id"), \
|
||||
patch("bot_bottle.cli.start.info"):
|
||||
start_mod.prepare_with_preflight(
|
||||
MagicMock(),
|
||||
stage_dir=Path("/tmp"),
|
||||
render_preflight=render,
|
||||
prompt_yes=MagicMock(),
|
||||
dry_run=True,
|
||||
)
|
||||
|
||||
render.assert_called_once_with(mock_plan, "test-backend")
|
||||
|
||||
|
||||
class TestNoAgentsDefined(unittest.TestCase):
|
||||
"""cmd_start prints an error and returns 1 when the manifest has no agents."""
|
||||
|
||||
def test_no_agents_defined_returns_1(self):
|
||||
manifest = _make_manifest([], [])
|
||||
with patch(
|
||||
"bot_bottle.cli.start.ManifestIndex.resolve", return_value=manifest
|
||||
), patch("sys.stderr", io.StringIO()) as err:
|
||||
rc = start_mod.cmd_start([])
|
||||
self.assertEqual(1, rc)
|
||||
self.assertIn("no agents defined", err.getvalue())
|
||||
|
||||
|
||||
class TestTextRenderPreflight(unittest.TestCase):
|
||||
"""_text_render_preflight returns a renderer that prints the backend name."""
|
||||
|
||||
def test_backend_name_in_output(self):
|
||||
render = start_mod._text_render_preflight()
|
||||
plan = MagicMock()
|
||||
with patch("bot_bottle.cli.start._manifest_to_yaml", return_value=""), \
|
||||
patch("sys.stderr", io.StringIO()) as err:
|
||||
render(plan, "my-backend")
|
||||
self.assertIn("my-backend", err.getvalue())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user