mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-28 02:53:30 +00:00
105 lines
3 KiB
Python
105 lines
3 KiB
Python
from argparse import Namespace
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
from llama_stack.distribution.datatypes import BuildConfig
|
|
from llama_stack.cli.stack.build import StackBuild
|
|
|
|
|
|
# temporary while we make the tests work
|
|
pytest.skip(allow_module_level=True)
|
|
|
|
|
|
@pytest.fixture
|
|
def stack_build():
|
|
parser = MagicMock()
|
|
subparsers = MagicMock()
|
|
return StackBuild(subparsers)
|
|
|
|
|
|
def test_stack_build_initialization(stack_build):
|
|
assert stack_build.parser is not None
|
|
assert stack_build.parser.set_defaults.called_once_with(
|
|
func=stack_build._run_stack_build_command
|
|
)
|
|
|
|
|
|
@patch("llama_stack.distribution.build.build_image")
|
|
def test_run_stack_build_command_with_config(
|
|
mock_build_image, mock_build_config, stack_build
|
|
):
|
|
args = Namespace(
|
|
config="test_config.yaml",
|
|
template=None,
|
|
list_templates=False,
|
|
name=None,
|
|
image_type="conda",
|
|
)
|
|
|
|
with patch("builtins.open", MagicMock()):
|
|
with patch("yaml.safe_load") as mock_yaml_load:
|
|
mock_yaml_load.return_value = {"name": "test_build", "image_type": "conda"}
|
|
mock_build_config.return_value = MagicMock()
|
|
|
|
stack_build._run_stack_build_command(args)
|
|
|
|
mock_build_config.assert_called_once()
|
|
mock_build_image.assert_called_once()
|
|
|
|
|
|
@patch("llama_stack.cli.table.print_table")
|
|
def test_run_stack_build_command_list_templates(mock_print_table, stack_build):
|
|
args = Namespace(list_templates=True)
|
|
|
|
stack_build._run_stack_build_command(args)
|
|
|
|
mock_print_table.assert_called_once()
|
|
|
|
|
|
@patch("prompt_toolkit.prompt")
|
|
@patch("llama_stack.distribution.datatypes.BuildConfig")
|
|
@patch("llama_stack.distribution.build.build_image")
|
|
def test_run_stack_build_command_interactive(
|
|
mock_build_image, mock_build_config, mock_prompt, stack_build
|
|
):
|
|
args = Namespace(
|
|
config=None, template=None, list_templates=False, name=None, image_type=None
|
|
)
|
|
|
|
mock_prompt.side_effect = [
|
|
"test_name",
|
|
"conda",
|
|
"meta-reference",
|
|
"test description",
|
|
]
|
|
mock_build_config.return_value = MagicMock()
|
|
|
|
stack_build._run_stack_build_command(args)
|
|
|
|
assert mock_prompt.call_count == 4
|
|
mock_build_config.assert_called_once()
|
|
mock_build_image.assert_called_once()
|
|
|
|
|
|
@patch("llama_stack.distribution.datatypes.BuildConfig")
|
|
@patch("llama_stack.distribution.build.build_image")
|
|
def test_run_stack_build_command_with_template(
|
|
mock_build_image, mock_build_config, stack_build
|
|
):
|
|
args = Namespace(
|
|
config=None,
|
|
template="test_template",
|
|
list_templates=False,
|
|
name="test_name",
|
|
image_type="docker",
|
|
)
|
|
|
|
with patch("builtins.open", MagicMock()):
|
|
with patch("yaml.safe_load") as mock_yaml_load:
|
|
mock_yaml_load.return_value = {"name": "test_build", "image_type": "conda"}
|
|
mock_build_config.return_value = MagicMock()
|
|
|
|
stack_build._run_stack_build_command(args)
|
|
|
|
mock_build_config.assert_called_once()
|
|
mock_build_image.assert_called_once()
|