Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 31 additions & 1 deletion python/tests/test_cli_flags.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

from __future__ import annotations

from unittest.mock import Mock

import pytest

from edge0.cli import _build_parser, _engine_kwargs
from edge0.cli import TIER_ENV, _build_parser, _engine_kwargs


@pytest.mark.parametrize("cmd", ["demo", "chat", "serve"])
Expand All @@ -31,3 +33,31 @@ def test_serve_keeps_its_own_flags():
args = _build_parser().parse_args(
["serve", "edge0-8b", "--host", "0.0.0.0", "--port", "9"])
assert (args.host, args.port) == ("0.0.0.0", 9)


@pytest.mark.parametrize("cmd", ["demo", "chat", "serve"])
@pytest.mark.parametrize("tier", ["edge0-8b", "edge0-35b"])
@pytest.mark.parametrize("no_prerouter", [False, True])
def test_entrypoint_preserves_prerouter_contract(
cmd, tier, no_prerouter, monkeypatch, tmp_path):
"""Check actual CLI dispatch without constructing an inference engine."""
from edge0 import AutoEngine

class EngineConstructionReached(Exception):
pass

factory = Mock(side_effect=EngineConstructionReached)
monkeypatch.setattr(AutoEngine, "from_pretrained", factory)
monkeypatch.setenv(TIER_ENV[tier], str(tmp_path))
argv = [cmd, tier]
if no_prerouter:
argv.append("--no-prerouter")
args = _build_parser().parse_args(argv)

with pytest.raises(EngineConstructionReached):
args.fn(args)

expected = {}
if no_prerouter or (cmd == "demo" and tier == "edge0-8b"):
expected["prerouter"] = None
factory.assert_called_once_with(str(tmp_path), name=tier, **expected)
Loading