@@ -870,6 +870,65 @@ async def _test_300_bug_1028_gui_memory_pinning(self):
870870 f"Dom0 window doesn't match VM window content, saved to { file_basename } *"
871871 )
872872
873+ @unittest .skipUnless (
874+ spawn .find_executable ("xdotool" ), "xdotool not installed"
875+ )
876+ def test_400_long_window_title (self ):
877+ self .loop .run_until_complete (self ._test_400_long_window_title (False ))
878+
879+ def test_401_long_window_title_utf8 (self ):
880+ self .loop .run_until_complete (self ._test_400_long_window_title (True ))
881+
882+ async def get_full_title (self , title_part ):
883+ await self .wait_for_window_coro (title_part [:32 ])
884+ await asyncio .sleep (0.5 )
885+ title = subprocess .check_output (
886+ [
887+ "xdotool" ,
888+ "search" ,
889+ "--name" ,
890+ title_part ,
891+ "getwindowname" ,
892+ ]
893+ )
894+ return title .decode ().strip ()
895+
896+ async def _test_400_long_window_title (self , utf8 = False ):
897+ if utf8 :
898+ self .testvm1 .features ["gui-allow-utf8-titles" ] = "1"
899+ else :
900+ # don't rely on global default
901+ self .testvm1 .features ["gui-allow-utf8-titles" ] = ""
902+ await self .testvm1 .start ()
903+ await self .wait_for_session (self .testvm1 )
904+ title = "B" * 120
905+ p = await self .testvm1 .run (f"zenity --title={ title } --info" )
906+ try :
907+ dom0_title = await self .get_full_title (title )
908+ self .assertEqual (dom0_title , title )
909+ finally :
910+ try :
911+ p .terminate ()
912+ await p .wait ()
913+ except ProcessLookupError : # already dead
914+ pass
915+
916+ title = "A" * 128
917+ if utf8 :
918+ truncated_title = title [:126 ] + "\u2026 "
919+ else :
920+ truncated_title = title [:124 ] + "..."
921+ p = await self .testvm1 .run (f"zenity --title={ title } --info" )
922+ try :
923+ dom0_title = await self .get_full_title (title )
924+ self .assertEqual (dom0_title , truncated_title )
925+ finally :
926+ try :
927+ p .terminate ()
928+ await p .wait ()
929+ except ProcessLookupError : # already dead
930+ pass
931+
873932
874933class TC_10_Generic (qubes .tests .SystemTestCase ):
875934 def setUp (self ):
0 commit comments