Files
AI/참고/guardrails-main/tests/unit_tests/cli/hub/test_uninstall.py

100 lines
3.1 KiB
Python
Raw Normal View History

2026-05-12 19:40:31 +09:00
from unittest.mock import mock_open, call
import pytest
from guardrails_hub_types import Manifest
from guardrails.cli.hub.uninstall import remove_from_hub_inits
manifest_mock = Manifest.from_dict(
{
"id": "guardrails/test_package",
"name": "test_module",
"author": {"name": "Author Name", "email": "author@example.com"},
"maintainers": [{"name": "Maintainer Name", "email": "maintainer@example.com"}],
"repository": {"url": "https://github.com/example/repo"},
"packageName": "test_package",
"moduleName": "test_module",
"namespace": "guardrails",
"description": "Test module",
"exports": ["Validator", "Helper"],
}
)
def test_remove_from_hub_inits(mocker):
mock_remove_line = mocker.patch("guardrails.cli.hub.uninstall.remove_line")
remove_from_hub_inits(manifest_mock, "/site-packages")
expected_calls = [
call(
"/site-packages/guardrails/hub/__init__.py",
"from guardrails_grhub_test_package import Validator, Helper",
),
]
mock_remove_line.assert_has_calls(expected_calls, any_order=True)
def test_uninstall_invalid_uri(mocker):
with pytest.raises(SystemExit):
mock_logger_error = mocker.patch("guardrails.cli.hub.uninstall.logger.error")
mocker.patch(
"guardrails.cli.hub.uninstall.get_validator_manifest",
return_value=manifest_mock,
)
mocker.patch(
"guardrails.cli.hub.utils.pip_process",
return_value={"Location": "/fake/site-packages"},
)
m_open = mock_open(read_data="import something")
mocker.patch("builtins.open", m_open)
mocker.patch("os.path.exists", return_value=True)
mocker.patch("subprocess.check_call")
from guardrails.cli.hub.uninstall import uninstall
uninstall("not a hub uri")
mock_logger_error.assert_called_once_with("Invalid URI!")
m_open.assert_called()
mock_subprocess_check_call = mocker.patch("subprocess.check_call")
mock_subprocess_check_call.assert_not_called()
def test_uninstall_valid_uri(mocker):
mocker.patch(
"guardrails.cli.hub.uninstall.get_validator_manifest",
return_value=manifest_mock,
)
mock_uninstall_hub_module = mocker.patch(
"guardrails.cli.hub.uninstall.uninstall_hub_module"
)
mocker.patch("guardrails.cli.hub.uninstall.console")
mock_unregister = mocker.patch(
"guardrails.hub.validator_package_service.ValidatorPackageService.unregister_validator"
)
from guardrails.cli.hub.uninstall import uninstall
uninstall("hub://guardrails/test-validator")
mock_uninstall_hub_module.assert_called_once_with(manifest_mock)
mock_unregister.assert_called_once_with("guardrails/test-validator")
def test_uninstall_hub_module(mocker):
mock_pip_process = mocker.patch("guardrails.cli.hub.uninstall.pip_process")
from guardrails.cli.hub.uninstall import uninstall_hub_module
uninstall_hub_module(manifest_mock)
mock_pip_process.assert_called_once_with(
"uninstall", "guardrails-grhub-test-package", flags=["-y"], quiet=True
)