def test_handle_call_error(self, mocker) -> None: check = XIdleTime("name", 100, "logind", re.compile(r"a^"), re.compile(r"a^")) mocker.patch.object(check, "_provide_sessions").return_value = [ ("42", "auser"), ] mocker.patch( "subprocess.check_output", ).side_effect = subprocess.CalledProcessError(2, "foo") with pytest.raises(TemporaryCheckError): check.check()
def test_no_activity(self, mocker) -> None: check = XIdleTime("name", 100, "logind", re.compile(r"a^"), re.compile(r"a^")) mocker.patch.object(check, "_provide_sessions").return_value = [ ("42", "auser"), ] mocker.patch("subprocess.check_output").return_value = "120000" assert check.check() is None
def test_smoke(self, mocker) -> None: check = XIdleTime("name", 100, "logind", re.compile(r"a^"), re.compile(r"a^")) mocker.patch.object(check, "_provide_sessions").return_value = [ ("42", "auser"), ] co_mock = mocker.patch("subprocess.check_output") co_mock.return_value = "123" res = check.check() assert res is not None assert " 0.123 " in res args, kwargs = co_mock.call_args assert "auser" in args[0] assert kwargs["env"]["DISPLAY"] == ":42" assert "auser" in kwargs["env"]["XAUTHORITY"]
def test_multiple_sessions(self, mocker) -> None: check = XIdleTime("name", 100, "logind", re.compile(r"a^"), re.compile(r"a^")) mocker.patch.object(check, "_provide_sessions").return_value = [ ("42", "auser"), ("17", "otheruser"), ] co_mock = mocker.patch("subprocess.check_output") co_mock.side_effect = [ "120000", "123", ] res = check.check() assert res is not None assert " 0.123 " in res assert co_mock.call_count == 2 # check second call for correct values, not checked before args, kwargs = co_mock.call_args_list[1] assert "otheruser" in args[0] assert kwargs["env"]["DISPLAY"] == ":17" assert "otheruser" in kwargs["env"]["XAUTHORITY"]