summaryrefslogtreecommitdiff
path: root/tests/test_desktop.py
blob: a2736170c8de13d97d9f61a2f36d2a8547612b89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import subprocess
import unittest
from unittest.mock import MagicMock, patch

from parley.desktop import DesktopIntegrationError, copy_text


class ClipboardTests(unittest.TestCase):
    @patch("parley.desktop.subprocess.run")
    @patch("parley.desktop.shutil.which", return_value="/usr/bin/xclip")
    def test_copies_utf8_text(self, which: MagicMock, run: MagicMock) -> None:
        run.return_value.returncode = 0
        run.return_value.stderr = ""

        copy_text("héllo")

        run.assert_called_once_with(
            ["/usr/bin/xclip", "-selection", "clipboard", "-in"],
            input="héllo",
            text=True,
            stdout=subprocess.DEVNULL,
            stderr=subprocess.DEVNULL,
            timeout=10,
        )

    @patch("parley.desktop.shutil.which", return_value=None)
    def test_reports_missing_xclip(self, which: MagicMock) -> None:
        with self.assertRaisesRegex(DesktopIntegrationError, "xclip is not installed"):
            copy_text("text")


if __name__ == "__main__":
    unittest.main()