diff options
Diffstat (limited to 'tests/aiet/test_cli_system.py')
-rw-r--r-- | tests/aiet/test_cli_system.py | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/tests/aiet/test_cli_system.py b/tests/aiet/test_cli_system.py deleted file mode 100644 index fd39f31..0000000 --- a/tests/aiet/test_cli_system.py +++ /dev/null @@ -1,240 +0,0 @@ -# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates. -# SPDX-License-Identifier: Apache-2.0 -"""Module for testing CLI system subcommand.""" -import json -from pathlib import Path -from typing import Any -from typing import Dict -from typing import List -from typing import Optional -from typing import Union -from unittest.mock import MagicMock - -import click -import pytest -from click.testing import CliRunner - -from aiet.backend.config import SystemConfig -from aiet.backend.system import load_system -from aiet.backend.system import System -from aiet.cli.system import details_cmd -from aiet.cli.system import install_cmd -from aiet.cli.system import list_cmd -from aiet.cli.system import remove_cmd -from aiet.cli.system import system_cmd - - -def test_system_cmd() -> None: - """Test system commands.""" - commands = ["list", "details", "install", "remove"] - assert all(command in system_cmd.commands for command in commands) - - -@pytest.mark.parametrize("format_", ["json", "cli"]) -def test_system_cmd_context(cli_runner: CliRunner, format_: str) -> None: - """Test setting command context parameters.""" - result = cli_runner.invoke(system_cmd, ["--format", format_]) - # command should fail if no subcommand provided - assert result.exit_code == 2 - - result = cli_runner.invoke(system_cmd, ["--format", format_, "list"]) - assert result.exit_code == 0 - - -@pytest.mark.parametrize( - "format_,expected_output", - [ - ("json", '{"type": "system", "available": ["system1", "system2"]}\n'), - ("cli", "Available systems:\n\nsystem1\nsystem2\n"), - ], -) -def test_list_cmd_with_format( - cli_runner: CliRunner, monkeypatch: Any, format_: str, expected_output: str -) -> None: - """Test available systems command with different formats output.""" - # Mock some systems - mock_system1 = MagicMock() - mock_system1.name = "system1" - mock_system2 = MagicMock() - mock_system2.name = "system2" - - # Monkey patch the call get_available_systems - mock_available_systems = MagicMock() - mock_available_systems.return_value = [mock_system1, mock_system2] - monkeypatch.setattr("aiet.cli.system.get_available_systems", mock_available_systems) - - obj = {"format": format_} - result = cli_runner.invoke(list_cmd, obj=obj) - assert result.output == expected_output - - -def get_test_system( - annotations: Optional[Dict[str, Union[str, List[str]]]] = None -) -> System: - """Return test system details.""" - config = SystemConfig( - name="system", - description="test", - data_transfer={ - "protocol": "ssh", - "username": "root", - "password": "root", - "hostname": "localhost", - "port": "8022", - }, - commands={ - "clean": ["clean"], - "build": ["build"], - "run": ["run"], - "post_run": ["post_run"], - }, - annotations=annotations or {}, - ) - - return load_system(config) - - -def get_details_cmd_json_output( - annotations: Optional[Dict[str, Union[str, List[str]]]] = None -) -> str: - """Test JSON output for details command.""" - ann_str = "" - if annotations is not None: - ann_str = '"annotations":{},'.format(json.dumps(annotations)) - - json_output = ( - """ -{ - "type": "system", - "name": "system", - "description": "test", - "data_transfer_protocol": "ssh", - "commands": { - "clean": - { - "command_strings": ["clean"], - "user_params": [] - }, - "build": - { - "command_strings": ["build"], - "user_params": [] - }, - "run": - { - "command_strings": ["run"], - "user_params": [] - }, - "post_run": - { - "command_strings": ["post_run"], - "user_params": [] - } - }, -""" - + ann_str - + """ - "available_application" : [] - } -""" - ) - return json.dumps(json.loads(json_output)) + "\n" - - -def get_details_cmd_console_output( - annotations: Optional[Dict[str, Union[str, List[str]]]] = None -) -> str: - """Test console output for details command.""" - ann_str = "" - if annotations: - val_str = "".join( - "\n\t{}: {}".format(ann_name, ann_value) - for ann_name, ann_value in annotations.items() - ) - ann_str = "\nAnnotations:{}".format(val_str) - return ( - 'System "system" details' - + "\nDescription: test" - + "\nData Transfer Protocol: ssh" - + "\nAvailable Applications: " - + ann_str - + "\n\nclean commands:" - + "\nCommands: ['clean']" - + "\n\nbuild commands:" - + "\nCommands: ['build']" - + "\n\nrun commands:" - + "\nCommands: ['run']" - + "\n\npost_run commands:" - + "\nCommands: ['post_run']" - + "\n" - ) - - -@pytest.mark.parametrize( - "format_,system,expected_output", - [ - ( - "json", - get_test_system(annotations={"ann1": "annotation1", "ann2": ["a1", "a2"]}), - get_details_cmd_json_output( - annotations={"ann1": "annotation1", "ann2": ["a1", "a2"]} - ), - ), - ( - "cli", - get_test_system(annotations={"ann1": "annotation1", "ann2": ["a1", "a2"]}), - get_details_cmd_console_output( - annotations={"ann1": "annotation1", "ann2": ["a1", "a2"]} - ), - ), - ( - "json", - get_test_system(annotations={}), - get_details_cmd_json_output(annotations={}), - ), - ( - "cli", - get_test_system(annotations={}), - get_details_cmd_console_output(annotations={}), - ), - ], -) -def test_details_cmd( - cli_runner: CliRunner, - monkeypatch: Any, - format_: str, - system: System, - expected_output: str, -) -> None: - """Test details command with different formats output.""" - mock_get_system = MagicMock() - mock_get_system.return_value = system - monkeypatch.setattr("aiet.cli.system.get_system", mock_get_system) - - args = ["--name", "system"] - obj = {"format": format_} - details_cmd.params[0].type = click.Choice(["system"]) - - result = cli_runner.invoke(details_cmd, args=args, obj=obj) - assert result.output == expected_output - - -def test_install_cmd(cli_runner: CliRunner, monkeypatch: Any) -> None: - """Test install system command.""" - mock_install_system = MagicMock() - monkeypatch.setattr("aiet.cli.system.install_system", mock_install_system) - - args = ["--source", "test"] - cli_runner.invoke(install_cmd, args=args) - mock_install_system.assert_called_once_with(Path("test")) - - -def test_remove_cmd(cli_runner: CliRunner, monkeypatch: Any) -> None: - """Test remove system command.""" - mock_remove_system = MagicMock() - monkeypatch.setattr("aiet.cli.system.remove_system", mock_remove_system) - remove_cmd.params[0].type = click.Choice(["test"]) - - args = ["--directory_name", "test"] - cli_runner.invoke(remove_cmd, args=args) - mock_remove_system.assert_called_once_with("test") |