pydase/tests/server/test_server.py
2023-10-19 11:11:56 +02:00

36 lines
1.0 KiB
Python

import signal
from pytest_mock import MockerFixture
import pydase
def test_signal_handling(mocker: MockerFixture):
# Mock os._exit and signal.signal
mock_exit = mocker.patch("os._exit")
mock_signal = mocker.patch("signal.signal")
class MyService(pydase.DataService):
pass
# Instantiate your server object
server = pydase.Server(MyService())
# Call the method to install signal handlers
server.install_signal_handlers()
# Check if the signal handlers were registered correctly
assert mock_signal.call_args_list == [
mocker.call(signal.SIGINT, server.handle_exit),
mocker.call(signal.SIGTERM, server.handle_exit),
]
# Simulate receiving a SIGINT signal for the first time
server.handle_exit(signal.SIGINT, None)
assert server.should_exit # assuming should_exit is public
mock_exit.assert_not_called()
# Simulate receiving a SIGINT signal for the second time
server.handle_exit(signal.SIGINT, None)
mock_exit.assert_called_once_with(1)