참고소스 수정본
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user