diff --git a/tests/server/test_server.py b/tests/server/test_server.py new file mode 100644 index 0000000..82e89bd --- /dev/null +++ b/tests/server/test_server.py @@ -0,0 +1,35 @@ +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)