Skip to content

Commit

Permalink
tests: fix clipboard test
Browse files Browse the repository at this point in the history
First of all, wait for the zenity process to finish, do not leak it.

But then, adjust the test string to not be a single long line - zenity
often hangs on a single 300k line.

Fixes QubesOS/qubes-issues#9646
  • Loading branch information
marmarek committed Dec 15, 2024
1 parent 98855ca commit 4ae1f51
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions qubes/tests/integ/basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,7 @@ async def _test_clipboard(
p = await testvm1.run("cat > /tmp/source.txt", stdin=subprocess.PIPE)
await p.communicate(test_string.encode())
window_title = "user@{}".format(testvm1.name)
await testvm1.run(
p = await testvm1.run(
"zenity --text-info "
"--filename=/tmp/source.txt "
"--editable "
Expand All @@ -639,7 +639,13 @@ async def _test_clipboard(
await asyncio.sleep(5)
subprocess.check_call(["xdotool", "key", "ctrl+shift+c", "Escape"])

await self.wait_for_window_coro(window_title, show=False)
try:
await asyncio.wait_for(p.communicate(), 5)
except asyncio.TimeoutError:
# this kills only the qrexec-client process, not zenity itself,
# but it's good enough for the test
p.terminate()
await p.wait()

clipboard_content = (
open("/var/run/qubes/qubes-clipboard.bin", "r").read().strip()
Expand Down Expand Up @@ -718,14 +724,14 @@ def test_000_clipboard(self):
spawn.find_executable("xdotool"), "xdotool not installed"
)
def test_001_clipboard_64k(self):
test_string = "test123abc" * 6400
test_string = "test123ab\n" * 6400
self.loop.run_until_complete(self._test_clipboard(test_string))

@unittest.skipUnless(
spawn.find_executable("xdotool"), "xdotool not installed"
)
def test_002_clipboard_200k_truncated(self):
test_string = "test123abc" * 20000
test_string = "test123ab\n" * 20000
self.loop.run_until_complete(
self._test_clipboard(
test_string, expect_content="", expect_source_name=""
Expand All @@ -736,7 +742,7 @@ def test_002_clipboard_200k_truncated(self):
spawn.find_executable("xdotool"), "xdotool not installed"
)
def test_002_clipboard_200k(self):
test_string = "test123abc" * 20000
test_string = "test123ab\n" * 20000
self.loop.run_until_complete(
self._test_clipboard(
test_string, set_features={"gui-max-clipboard-size": 200_000}
Expand All @@ -747,7 +753,7 @@ def test_002_clipboard_200k(self):
spawn.find_executable("xdotool"), "xdotool not installed"
)
def test_002_clipboard_300k(self):
test_string = "test123abc" * 30000
test_string = "test123ab\n" * 30000
self.loop.run_until_complete(
self._test_clipboard(
test_string,
Expand Down

0 comments on commit 4ae1f51

Please sign in to comment.