@@ -870,6 +870,64 @@ 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+ return subprocess .check_output (
886+ [
887+ "xdotool" ,
888+ "search" ,
889+ "--name" ,
890+ title_part ,
891+ "getwindowname" ,
892+ ]
893+ )
894+
895+ async def _test_400_long_window_title (self , utf8 = False ):
896+ if utf8 :
897+ self .testvm1 .features ["gui-allow-utf8-titles" ] = "1"
898+ else :
899+ # don't rely on global default
900+ self .testvm1 .features ["gui-allow-utf8-titles" ] = ""
901+ await self .testvm1 .start ()
902+ await self .wait_for_session (self .testvm1 )
903+ title = "B" * 120
904+ p = await self .testvm1 .run (f"zenity --title={ title } --info" )
905+ try :
906+ dom0_title = await self .get_full_title (title )
907+ self .assertEqual (dom0_title , title )
908+ finally :
909+ try :
910+ p .terminate ()
911+ await p .wait ()
912+ except ProcessLookupError : # already dead
913+ pass
914+
915+ title = "A" * 128
916+ if utf8 :
917+ truncated_title = title [:126 ] + "\u2026 "
918+ else :
919+ truncated_title = title [:124 ] + "..."
920+ p = await self .testvm1 .run (f"zenity --title={ title } --info" )
921+ try :
922+ dom0_title = await self .get_full_title (title )
923+ self .assertEqual (dom0_title , truncated_title )
924+ finally :
925+ try :
926+ p .terminate ()
927+ await p .wait ()
928+ except ProcessLookupError : # already dead
929+ pass
930+
873931
874932class TC_10_Generic (qubes .tests .SystemTestCase ):
875933 def setUp (self ):
0 commit comments