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()
|