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