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"]