
    /hh[}                        S r SSKJr  SSKrSSKrSSKrSSKJrJr  SSK	r	SSK	J
r
  SSKrSSKJr  \R                  r\R                  r0 r\R"                  " S5      =r\S'   \R"                  " S5      =r\S	'   \R"                  " S5      =r\S
'   \R"                  " S5      =r\S'   S rS r " S S\	R0                  5      r " S S\	R0                  5      r " S S\	R0                  5      r " S S\	R0                  5      r " S S\	R0                  5      r " S S\	R0                  5      r\S:X  a  \	R@                  " SS9  gg)zTest config, coverage 93%.
(100% for IdleConfParser, IdleUserConfParser*, ConfigChanges).
* Exception is OSError clause in Save method.
Much of IdleConf is also exercised by ConfigDialog and test_configdialog.
    )configN)captured_stderrfindfile)mock)Func main	highlightkeys
extensionsc                  8    [         [        l        S[        l        g )NT)testcfgidleConfuserCfgidlelibtesting     F/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_config.pysetUpModuler      s    HGOr   c                  8    [         [        l        S[        l        g )NF)usercfgr   r   r   r   r   r   r   tearDownModuler   !   s    HGOr   c                   4    \ rS rSrSrSrS rS rS rS r	Sr
g	)
IdleConfParserTest&   zTest that IdleConfParser worksz
        [one]
        one = false
        two = true
        three = 10

        [two]
        one = a string
        two = true
        three = false
    c                    [         R                  " S5      nUR                  U R                   5        U R                  nU R	                  UR                  SSSS9S5        U R	                  UR                  SSSS9S5        U" UR                  SSS	S9S
5        U" UR                  SS5      S5        U R	                  UR                  SSSS9S5        U R	                  UR                  SSSS9S5        U" UR                  SS5      S5        U" UR                  SS5      S5        U R                  UR                  SS5      5        U" UR                  SSSS9S5        g )Nr   onebooltypeFtwoTthreeint
   za stringtruefalsenotexistDEFAULTdefault)r   IdleConfParserread_stringassertEqualassertIsGetassertIsNone)selfparsereqs      r   test_getIdleConfParserTest.test_get5   s3   &&r*4;;' 	fjjFj;UCfjjFj;TB
6::eW5:126
6::eU#Z0fjjFj;TBfjjfj=uE 	6::eU#V,
6::eW%w/ 	&**UG45
6::eWi:8)Dr   c                    [         R                  " S5      nUR                  U R                   5        UR                  nU R	                  U" S5      / SQ5        U R	                  U" S5      / SQ5        U R                  U" S5      / 5        g )Nr   r   )r   r"   r#   r"   z	not exist)r   r-   r.   GetOptionListassertCountEqualr/   )r3   r4   get_lists      r   test_get_option_list'IdleConfParserTest.test_get_option_listJ   sn    &&r*4;;'''huo/FGhuo/FG+.3r   c                     [         R                  " S5      nUR                  5         U R                  UR	                  5       / 5        g )Nr   )r   r-   Loadr/   sectionsr3   r4   s     r   test_load_nothing$IdleConfParserTest.test_load_nothingR   s2    &&r**B/r   c                     [        SSS9n[        R                  " U5      nUR                  5         U R	                  UR                  SS5      S5        U R	                  UR                  S5      S/5        g )Ncfgparser.1
configdatasubdirFoo Barfoonewbar)r   r   r-   r?   r/   r1   r9   )r3   config_pathr4   s      r   test_load_file!IdleConfParserTest.test_load_fileW   s_    }\B&&{3Iu5x@--i85'Br   r   N)__name__
__module____qualname____firstlineno____doc__r   r6   r<   rB   rM   __static_attributes__r   r   r   r   r   &   s"    (
FE*40
Cr   r   c                   F    \ rS rSrSrSS jrS rS rS rS r	S r
S	 rS
rg)IdleUserConfParserTesta   z"Test that IdleUserConfParser worksc                 .    [         R                  " U5      $ N)r   IdleUserConfParser)r3   paths     r   
new_parser!IdleUserConfParserTest.new_parserd   s    ((..r   c                 "   U R                  5       nUR                  S5        U R                  UR                  SSS5      5        U R	                  UR                  SSS5      5        U R                  UR                  SSS5      5        U R                  UR                  SS5      S5        U R                  UR                  SSS5      5        U R                  UR                  5       SS/5        U R                  UR                  SS5      S5        g )NFoobarr&   r'   Bar)	r\   add_section
assertTrue	SetOptionassertFalser/   r1   r:   r@   rA   s     r   test_set_option&IdleUserConfParserTest.test_set_optiong   s    "5!((v>?))%?@((w?@E517; 	((v>?foo/%@E516:r   c                 2   U R                  5       nUR                  S5        UR                  SSS5        U R                  UR	                  SS5      5        U R                  UR	                  SS5      5        U R                  UR	                  SS5      5        g )Nr_   r`   r&   NotExist)r\   
AddSectionrd   rc   RemoveOptionre   rA   s     r   test_remove_option)IdleUserConfParserTest.test_remove_optionw   s}    "% v.++E59:,,UE:;,,UG<=r   c                    U R                  5       nU R                  UR                  5       / 5        UR                  S5        UR                  S5        UR                  S5        U R	                  UR                  5       SS/5        g )Nr_   ra   )r\   r/   r@   rk   r:   rA   s     r   test_add_section'IdleUserConfParserTest.test_add_section   sl    "*B/ 	% % % foo/%@r   c                 4   U R                  5       nUR                  S5        UR                  S5        UR                  SSS5        U R                  UR	                  5       / SQ5        UR                  5         U R                  UR	                  5       S/5        g )Nr_   ra   Idlenameval)ra   r_   rs   )r\   rk   rd   r:   r@   RemoveEmptySectionsr/   rA   s     r   test_remove_empty_sections1IdleUserConfParserTest.test_remove_empty_sections   sy    "% % /foo/1GH""$*VH5r   c                    U R                  5       nUR                  S5        UR                  S5        U R                  UR                  5       5        U R	                  UR                  5       / 5        UR                  SSS5        UR                  S5        U R                  UR                  5       5        U R                  UR                  5       S/5        g )Nr_   ra   r`   r'   )	r\   rk   rc   IsEmptyr/   r@   rd   re   r:   rA   s     r   test_is_empty$IdleUserConfParserTest.test_is_empty   s    "% % ()*B/w/% )*foo/%9r   c                    [         R                  " 5        n[        R                  R	                  US5      nU R                  U5      nUR                  S5        UR                  SSS5        U R                  [        R                  R                  U5      5        UR                  5         U R                  [        R                  R                  U5      5        UR                  S5        UR                  5         U R                  [        R                  R                  U5      5        S S S 5        g ! , (       d  f       g = f)Nztest.cfgr_   r`   r&   )tempfileTemporaryDirectoryosr[   joinr\   rk   rd   re   existsSaverc   remove_section)r3   tdirr[   r4   s       r   	test_save IdleUserConfParserTest.test_save   s    ((*d77<<j1D__T*Fe$UE62 RWW^^D12KKMOOBGGNN401 !!%(KKMRWW^^D12 +**s   DD00
D>r   N)r   )rO   rP   rQ   rR   rS   r\   rf   rm   rp   rw   r{   r   rT   r   r   r   rV   rV   a   s)    ,/; >	A6:3r   rV   c                      \ rS rSrSr\S 5       r\S 5       rS%S jrS r	\
R                  " \R                  R                  S5      S5      S	 5       r\
R                  " \R                  R                  S5      (       + S
5      S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S  r%S! r&S" r'S#r(g$)&IdleConfTest   zTest for idleConfc                 8   0 U l         [        R                  " SS9n[        S:w  a$  [        R
                  R                  [        5      nO0[        R
                  R                  [        R
                  S   5      nUR                   HW  n[        R
                  R                  USU-  5      n[        U5       nUR                  5       U R                   U'   S S S 5        MY     [        R                  U l        [!        5       [        l        g ! , (       d  f       M  = f)NT_utest__main__r   z../config-%s.def)config_stringr   IdleConfrO   r   r[   dirname__file__abspathsysconfig_typesr   openread_warn	orig_warnr   )clsconfidle_dirctyperL   fs         r   
setUpClassIdleConfTest.setUpClass   s    d+z!wwx0Hwwsxx{3H&&E'',,x1Ce1KLKk"a+,668!!%( #" '
 v	 #"s   7D


D	c                 .    U R                   [        l        g rY   )r   r   r   )r   s    r   tearDownClassIdleConfTest.tearDownClass   s    }}r   c                 *    [         R                  " US9$ )Nr   )r   r   )r3   r   s     r   
new_configIdleConfTest.new_config   s    f--r   c                    [         R                  " SS9nUR                   H  n[         R                  " S5      UR                  U'   UR                  U   R                  U R                  U   5        [         R                  " S5      UR                  U'   UR                  U   R                  U R                  U   5        M     U$ )zRReturn a mocked idleConf

Both default and user config used the same config-*.def
Tr   r   )	r   r   r   r-   
defaultCfgr.   r   rZ   r   )r3   r   r   s      r   mock_configIdleConfTest.mock_config   s    
 d+&&E%+%:%:2%>DOOE"OOE"..t/A/A%/HI"(";";B"?DLLLL++D,>,>u,EF	 ' r   winzthis is test for unix systemc                    U R                  SS9n[        R                  " SSS9   [        R                  " SSS9   U R                  UR	                  5       S5        S S S 5        S S S 5        [        R                  " SSS9   [        R                  " S	S
S9   [        R                  " S5         U R                  UR	                  5       S5        S S S 5        S S S 5        S S S 5        [        R                  " SSS9   U R                  [        5         U R                  [        5         UR	                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       N~= f! , (       d  f       g = f)NTr   os.path.expanduser	/home/fooreturn_valueos.path.existsz/home/foo/.idlerc~	os.getcwdz/home/foo/cpythonos.mkdirz/home/foo/cpython/.idlercos.path.join/path/not/existsr   r   patchr/   GetUserCfgDirassertRaises
SystemExitFileNotFoundErrorr3   r   s     r   test_get_user_cfg_dir_unix'IdleConfTest.test_get_user_cfg_dir_unix   sN    d+ ZZ,;G,4@  !3!3!57JK A H
 ZZ,3?K6IJZZ
+$$T%7%7%9%@B , K @ ZZ5GH"":.&&'89&&( : / IH A@ HG ,+ KJ @? :9 /. IH   E#!EE#FF.!E5FF<G
F9(F(9F9G

E 	E##
E25
F?F
F	F
F%(
F62F99
G	G


Gzthis is test for Windows systemc                    U R                  SS9n[        R                  " SSS9   [        R                  " SSS9   U R                  UR	                  5       S5        S S S 5        S S S 5        [        R                  " SSS9   [        R                  " S	S
S9   [        R                  " S5         U R                  UR	                  5       S5        S S S 5        S S S 5        S S S 5        [        R                  " SSS9   U R                  [        5         U R                  [        5         UR	                  5         S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       N~= f! , (       d  f       g = f)NTr   r   zC:\foor   r   zC:\foo\.idlercr   r   zC:\foo\cpythonr   zC:\foo\cpython\.idlercr   r   r   r   s     r   test_get_user_cfg_dir_windows*IdleConfTest.test_get_user_cfg_dir_windows   sN    d+ ZZ,9E,4@  !3!3!57IJ A F
 ZZ,3?K6HIZZ
+$$T%7%7%9%@B , J @ ZZ5GH"":.&&'89&&( : / IH A@ FE ,+ JI @? :9 /. IHr   c           
      d   U R                  SS9nSn[        R                  R                  SS05         [        R                  " SUS9   UR	                  5         S S S 5        S S S 5        U R                  UR                  UR                  5        U R                  UR                  UR                  5        UR                  R                  5        H#  nU R                  U[        R                  5        M%     UR                  R                  5        H#  nU R                  U[        R                  5        M%     UR                  R                  5        HC  u  pVU R                  UR                   ["        R$                  R'                  USU S	35      5        ME     UR                  R                  5        HV  u  pVU R                  UR                   ["        R$                  R'                  UR(                  =(       d    S
SU S35      5        MX     g ! , (       d  f       GN= f! , (       d  f       GN= f)NTr   r   rO   __foo__zos.path.dirnamer   zconfig-z.def#z.cfg)r   r   r   dictCreateConfigHandlersr:   r   r   r   valuesassertIsInstancer   r-   rZ   itemsr/   filer   r[   r   userdir)r3   r   r   default_parseruser_parsercfg_typer4   s          r   test_create_config_handlers(IdleConfTest.test_create_config_handlers  s   d+ ZZ__j)45-HE))+ F 6
 	doot/@/@AdllD,=,=> #oo446N!!.&2G2GH 7<<..0K!!+v/H/HI 1 !% 5 5 7HV[[WW\\(ghZt4LMO !8 !% 2 2 4HV[[WW\\$,,*=#
RV?WXZ !5# FE 65s#   H 	HH 
H	H  
H/c                 *   U R                  SS9n[        SSS9n[        R                  " U5      UR                  S'   [        R
                  " U5      UR                  S'   UR                  5         U R                  nU" UR                  S   R                  SS5      S5        U" UR                  S   R                  S5      S/5        U" UR                  S   R                  SS5      S5        U" UR                  S   R                  S5      S/5        g )	NTr   rE   rF   rG   rJ   rI   rK   )r   r   r   r-   r   rZ   r   LoadCfgFilesr/   r1   r9   )r3   r   rL   r5   s       r   test_load_cfg_files IdleConfTest.test_load_cfg_files&  s    d+ }\B!'!6!6{!C$77DU 	 	4??5!%%i7B
4??5!//	:UGD 	4<<""9e4h?
4<<,,Y7%Ar   c                    U R                  5       n[        R                  " S5       nUR                  5         U R	                  UR
                  [        UR                  5      5        S S S 5        g ! , (       d  f       g = f)Nz&idlelib.config.IdleUserConfParser.Save)r   r   r   SaveUserCfgFilesr/   
call_countlenr   )r3   r   ms      r   test_save_user_cfg_files%IdleConfTest.test_save_user_cfg_files;  sU    !ZZ@AQ!!#Q\\3t||+<= BAAs   A A00
A>c           
         U R                  5       nU R                  nU" UR                  SSS5      S5        U" UR                  SSSSS9S5        [        R                  " S5       nU" UR                  SSS	SS9S 5        U" UR                  SSS
5      S 5        U" UR                  SSS
SS9S5        U" UR
                  S5        S S S 5        g ! , (       d  f       g = f)Nr	   EditorWindowwidth80r$   r    P   idlelib.config._warnfont	NotExistsNEr+      )r   r/   	GetOptionr   r   r   )r3   r   r5   r   s       r   test_get_optionIdleConfTest.test_get_optionB  s    !
4>>&.':DA
4>>&.'>FKZZ./5t~~fnf5~I4Pt~~fnkBDIt~~fnk4~PRVWu#	 0//s   &A C
Cc                     U R                  5       nUR                  SSSS5        U R                  UR                  SSS5      S5        g )Nr	   r_   r`   rK   )r   rd   r/   r   r   s     r   rf   IdleConfTest.test_set_optionN  s?    !vueX6u=xHr   c                    U R                  5       nU R                  UR                  SS5      / SQ5        U R                  UR                  SS5      / SQ5        U R                  [        R
                  5         UR                  SS5        S S S 5        U R                  [        R                  5         UR                  SS5        S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)Nr,   r	   )Generalr   PyShellIndentThemeKeysHistory	HelpFilesuserfoobar	notexists)r   r:   GetSectionListr   r   InvalidConfigSetInvalidConfigTyper   s     r   test_get_section_list"IdleConfTest.test_get_section_listT  s    !	62-	. 	/-	.
 v667&1 8v778	;7 98 8788s   8C2C
C
C-c                    U R                  5       nU R                  nU" UR                  SS5      SSS.5        U" UR                  SS5      SSS.5        UR                  SS	S
S5        UR                  SS	SS5        [        R
                  " S5         U" UR                  S	S5      SSS.5        S S S 5        g ! , (       d  f       g = f)NIDLE Classicnormalz#000000z#ffffff)
foreground
backgroundcursorblackr
   Foobarznormal-foregroundz#747474znormal-backgroundz#171717r   )r   r/   GetHighlightrd   r   r   r3   r   r5   s      r   test_get_highlightIdleConfTest.test_get_highlighte  s    !
4^X6yGP9R 	S 	4^X6wGP9R 	S 	{H.A9M{H.A9MZZ./t  84YEN7P Q 0//s   B99
Cc                    U R                  5       nU R                  UR                  SS5      UR                  SS5      5        U R                  [        R
                  5         UR                  SS5        S S S 5        g ! , (       d  f       g = f)Nr,   r   r   bad)r   r/   GetThemeDictr   r   InvalidThemer   s     r   test_get_theme_dict IdleConfTest.test_get_theme_dictw  sr    ! 	i8fn5	7 v223e^4 433s   "A>>
Bc                     U R                  5       nU R                  UR                  5       UR                  S5      5        U R                  UR	                  5       UR                  S5      5        g )Nr   r   )r   r/   CurrentThemecurrent_colors_and_keysCurrentKeysr   s     r   test_get_current_theme_and_keys,IdleConfTest.test_get_current_theme_and_keys  sX    !**,d.J.J7.ST))+T-I-I&-QRr   c                 f    U R                  5       nU R                  UR                  S5      S5        g )Nr   r   )r   r/   r  r   s     r   test_current_colors_and_keys)IdleConfTest.test_current_colors_and_keys  s+    !55g>Or   c                 Z   [         R                  nU R                  SS9nS[         l        U R                  UR	                  5       S5        S[         l        U R                  UR	                  5       S5        S[         l        U R                  UR	                  5       S5        U[         l        g )	NTr   win32IDLE Classic WindowsdarwinIDLE Classic OSX
some-linuxIDLE Modern Unix)r   platformr   r/   default_keysr3   current_platformr   s      r   test_default_keysIdleConfTest.test_default_keys  s    <<d+**,.DE**,.@A#**,.@A (r   c                 L   [         R                  S5        U R                  n[        R                  nU" U" SS9/ 5        U" U" 5       S/5        U" U" SS9S/5        U" U" SS9SS/5        U" U" SSS	9SS/5        [         R                  S5        [         R                  S5        g )
Nzn
            [ZzDummy]
            enable = True
            [DISABLE]
            enable = False
            T)
shell_onlyZzDummy)editor_onlyF)active_onlyDISABLE)r)  r(  )userextnr.   r/   r   GetExtensionsr   )r3   r5   iGEs      r   test_get_extensions IdleConfTest.test_get_extensions  s      	 $$
3$$
359+
34 9+.
35!Iy#9:
35d3i5KL	*	*r   c                     U R                  5       nU R                  UR                  UR                  SS5      5      / SQ5        g )Nr,   r   )AutoCompleteCodeContextFormatParagraph
ParenMatchr'  )r   r:   RemoveKeyBindNamesr   r   s     r   test_remove_key_bind_names'IdleConfTest.test_remove_key_bind_names  s=    !##D$7$7	<$PQW	Yr   c                     [         R                  S5        U R                  nU" [        R	                  S5      S5        U" [        R	                  S5      S 5        [         R                  S5        g )N=
            [ZzDummy]
            enable = True
            zz-inr'  zz-out)r+  r.   r/   r   GetExtnNameForEventr   )r3   r5   s     r   test_get_extn_name_for_event)IdleConfTest.test_get_extn_name_for_event  sZ      	 
8''/;
8''0$7	*r   c                     [         R                  S5        U R                  [        R	                  S5      SS/05        [         R                  S5        g )Nr9  r'  <<z-in>>!<Control-Shift-KeyRelease-Insert>)r+  r.   r/   r   GetExtensionKeysr   r3   s    r   test_get_extension_keys$IdleConfTest.test_get_extension_keys  sM      	 	229=<=>	@	*r   c                     [         R                  S5        U R                  n[        R                  nU" U" S5      0 5        S/S/S.nU" U" S5      U5        [         R                  S5        g )Nr9  r   r?  z!<Control-Shift-KeyRelease-Delete>)r>  z	<<z-out>>r'  )r+  r.   r/   r   GetExtensionBindingsr   )r3   r5   iGEBexpects       r   test_get_extension_bindings(IdleConfTest.test_get_extension_bindings  sl      	 ,,
4b!BC CDF
4	?F#	*r   c                    U R                  5       nU R                  nU" UR                  SS5      SS/5        U" UR                  SS5      SS/5        U" UR                  SS5      S	S
/5        U" UR                  SS5      S/5        U" UR                  SS5      S/5        U" UR                  SS5      / 5        U" UR                  SS5      / 5        g )Nr  <<copy>>z<Control-Shift-Key-C>z<Control-Key-Insert>IDLE Classic Unixz<Alt-Key-w>z<Meta-Key-w>r  z<Control-Key-c>z<Control-Key-C>zIDLE Classic Mac<Command-Key-c>r  z
NOT EXISTS)r   r/   GetKeyBindingr  s      r   test_get_keybinding IdleConfTest.test_get_keybinding  s    !
40*=$&<=	?
41:>N+	-
44jA 12	4
40*=@Q?RS
40*=@Q?RS 	4lJ7<
40,?Dr   c                     [         R                  nU R                  5       nS[         l        U R                  UR	                  5       UR                  UR                  5       5      5        U[         l        g )Nr  )r   r  r   r/   GetCurrentKeySet	GetKeySetr  r!  s      r   test_get_current_keyset$IdleConfTest.test_get_current_keyset  sW    <<! $..0$..AQAQAS2TU (r   c                 d   U R                  5       nUR                  S   R                  S5        UR                  S   R                  S5        UR                  S   R                  SSS5        UR                  S   R                  SSS5        U R	                  UR                  S5      S	   S
5        g )Nr   r  Foobar_cfgBindingsenableTruenewfooz<Key-F3>r  z
<<newfoo>>r   )r   r   rb   setr/   rS  r   s     r   test_get_keysetIdleConfTest.test_get_keyset  s    ! 	%11(;%112FG%))(HfE%))*>*U(:;LI2Nr   c                 $   U R                  5       nU R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      5        g )Ncopycutzdel-word-rightz
not-exists)r   rc   IsCoreBindingre   r   s     r   test_is_core_binding!IdleConfTest.test_is_core_binding  so    !**623**512**+;<=++L9:r   c                    U R                  5       nU R                  UR                  S5      / 5        U R                  UR                  S5      / 5        U R                  [        R
                  5         U R                  UR                  S5      / 5        S S S 5        U R                  UR                  5       UR                  S5      UR                  S5      -   5        UR                  S   R                  SSS5        UR                  S   R                  SSS	5        UR                  S   R                  SS
S5        UR                  S   R                  SSS5        U R                  UR                  S5      / SQ5        U R                  UR                  5       UR                  S5      UR                  S5      -   5        g ! , (       d  f       GN5= f)Nr,   r   r
  r	   r   4zPython;https://python.org3zPython:https://python.org2z/Pillow;https://pillow.readthedocs.io/en/latest/1z/IDLE;C:/Programs/Python36/Lib/idlelib/help.html))IDLEz*C:/Programs/Python36/Lib/idlelib/help.htmlrh  )Pillowz(https://pillow.readthedocs.io/en/latest/rg  )Pythonzhttps://python.orgre  )
r   r/   GetExtraHelpSourceListr   r   r   r:   GetAllExtraHelpSourcesListr   rd   r   s     r   test_extra_help_source_list(IdleConfTest.test_extra_help_source_list  s    ! 	44Y?D44V<bAv667T88?D 8++-''	2T5P5PQW5XX	Z
 	V&&{C9TUV&&{C9TUV&&{C9jkV&&{C9jk44V<A	B 	++-''	2T5P5PQW5XX	Z 87s   2"G
Gc                 J   SSK Jn  SSKJn  SSKJn  U R                  5       nU" S5        U" 5       nUR                  5         UR                  U" SSUS95      nU R                  UR                  US	S
5      US   US   S::  a  SOUS   US   45        UR                  5         Ag )Nr   )requires)Tk)FontguiTkFixedFontT)rt   r   rootr	   r   familysizer%   weight)test.supportrq  tkinterrr  tkinter.fontrs  r   withdrawactualr/   GetFontdestroy)r3   rq  rr  rs  r   rv  r   s          r   test_get_fontIdleConfTest.test_get_font*  s    )%!tKK-4HILLv~6x[&	Q"AfIq{K	M
 	r   c                    U R                  5       nU R                  nU" UR                  5       S   S/5        U" UR                  5       S   SS/5        U" UR                  5       S   S/5        U" UR                  S5      S   S	S
/5        U" UR                  S5      S   S/5        U" UR                  S5      S   SS/5        U" UR                  S5      S   SS/5        g )Nz<<center-insert>>z<Control-l>rK  z<Control-c>z<Control-C>z<<history-next>>z<Alt-n>r  z<Control-Key-l>z<Control-Key-L>r  rM  rL  z<Alt-Key-n>z<Meta-Key-n>r  )r   r/   GetCoreKeysr  s      r   test_get_core_keysIdleConfTest.test_get_core_keys=  s    !
412]OD
4j)M=+IJ
401I;?
4234GH01	3
4./
;>O=PQ
4/01CD>*	,
4./0BCN+	-r   r   N)F))rO   rP   rQ   rR   rS   classmethodr   r   r   r   unittestskipIfr   r  
startswithr   r   r   r   r   r   rf   r   r  r  r  r  r#  r.  r6  r;  rB  rH  rO  rT  r\  rb  rn  r  r  rT   r   r   r   r   r      s      % %. __S\\,,U35ST) U), __00779Z[) \),Z6B*>
$I8"Q$
5SP
( +$Y+++E"("O;Z6&-r   r   c                   x    \ rS rSrSr\R                  rSr\R                  5       r	S r
S rS rS rS rS	 rS
rg)CurrentColorKeysTestiM  zTest colorkeys function with user config [Theme] and [Keys] patterns.

colorkeys = config.IdleConf.current_colors_and_keys
Test all patterns written by IDLE and some errors
Item 'default' should really be 'builtin' (versus 'custom).
r   c                    U R                  U R                  S5      U R                  5        [        R	                  S5        U R                  U R                  S5      U R                  5        S[        S   S'   U R                  U R                  S5      S5        S[        S   S'   U R                  U R                  S5      U R                  5        [        R                  S5        g )Nr   z<
            [Theme]
            default = True
            IDLE Newrt   non-existent)r/   	colorkeysdefault_themeusermainr.   r   rA  s    r   test_old_builtin_theme+CurrentColorKeysTest.test_old_builtin_themeX  s    0$2D2DE  	
 	0$2D2DE$.&!0*=$2&!0$2D2DE(r   c                 b   [         R                  S5        U R                  U R                  S5      S5        S[         S   S'   U R                  U R                  S5      S5        S[         S   S'   U R                  U R                  S5      U R                  5        [         R                  S5        g )NzZ
            [Theme]
            default = True
            name2 = IDLE Dark
            r   z	IDLE Darkr  rt   r  name2)r  r.   r/   r  r  r   rA  s    r   test_new_builtin_theme+CurrentColorKeysTest.test_new_builtin_themej  s      	
 	0+>$.&!0+>%3'"0$2D2DE(r   c                    [         R                  S5        U R                  U R                  S5      U R                  5        [
        R                  S5        U R                  U R                  S5      S5        S[         S   S'   U R                  U R                  S5      S5        [         R                  S5        [
        R                  S5        g )Nz\
            [Theme]
            default = False
            name = Custom Dark
            r   z[Custom Dark]
a=bzCustom Darkr  r  )r  r.   r/   r  r  userhighr   rA  s    r   test_user_override_theme-CurrentColorKeysTest.test_user_override_themez  s      	
 	0$2D2DE120-@%3'"0-@(.r   c                 ^   U R                  U R                  S5      U R                  5        [        R	                  S5        U R                  U R                  S5      S5        S[        S   S'   U R                  U R                  S5      U R                  5        [        R                  S5        g )Nr   z`
            [Keys]
            default = True
            name = IDLE Classic Unix
            rL  r  rt   )r/   r  r   r  r.   r   rA  s    r   test_old_builtin_keys*CurrentColorKeysTest.test_old_builtin_keys  s    /1B1BC  	
 	/1DE#1 /1B1BC'r   c                 b   [         R                  S5        U R                  U R                  S5      S5        S[         S   S'   U R                  U R                  S5      S5        S[         S   S'   U R                  U R                  S5      U R                  5        [         R                  S5        g )Nz`
            [Keys]
            default = True
            name2 = IDLE Modern Unix
            r   r  rL  rt   r  r  )r  r.   r/   r  r   r   rA  s    r   test_new_builtin_keys*CurrentColorKeysTest.test_new_builtin_keys  s      	
 	/1CD#6 /1CD$2!/1B1BC'r   c                    [         R                  S5        U R                  U R                  S5      U R                  5        [
        R                  S5        U R                  U R                  S5      S5        S[         S   S'   U R                  U R                  S5      S5        [         R                  S5        [
        R                  S5        g )Nz[
            [Keys]
            default = False
            name = Custom Keys
            r   z[Custom Keys]
a=bzCustom Keysr  r  )r  r.   r/   r  r   userkeysr   rA  s    r   test_user_override_keys,CurrentColorKeysTest.test_user_override_keys  s      	
 	/1B1BC12/?$2!/?'.r   r   N)rO   rP   rQ   rR   rS   r   r  r  r  r   r  r  r  r  r  r  rT   r   r   r   r  r  M  sE     00I"M((*L)$) /"(( /r   r  c                       \ rS rSr0 0 0 0 S.rS rSSS00SSS	00S
SS000 S.rS rS rS r	S r
S rS rS rS rS rSrg)ChangesTesti  )r	   r
   r   r   c                     U R                   nUR                  SSSS5        UR                  SSSS5        UR                  S	S
SS5        U$ )Nr	   Msecmitemmvalr
   Hsechitemhvalr   Kseckitemkvalchanges
add_optionr3   r  s     r   loadChangesTest.load  sL    ,,667F;;@667F;r   r  r  r  r  r  r  r  r  r  c                 8    [         R                  " 5       U l        g rY   )r   ConfigChangesr  rA  s    r   setUpChangesTest.setUp  s    ++-r   c                 P    U R                  U R                  U R                  5        g rY   )r/   r  emptyrA  s    r   	test_initChangesTest.test_init  s    tzz2r   c                     U R                  5       nU R                  XR                  5        UR                  SSSS5        U R                  XR                  5        g )Nr	   r  r  r  )r  r/   loadedr  r  s     r   test_add_optionChangesTest.test_add_option  sE    ))+++.667F;++.r   c                    U R                   R                  nU R                  U" SSSS5      5        U R                  U" SSSS5      5        U R	                  [
        S   S   S5        U R                  U" SSSS5      5        U R	                  [
        S   S   S5        U R                  U" SSSS5      5        U R                  [
        R                  SS5      5        [
        R                  S5        g )Nr	   r   what0
use-spacesrh  )r  save_optionrc   re   r/   r  
has_optionr   )r3   r  s     r   test_save_optionChangesTest.test_save_option  s    ll..FHfcBCVXvsCD(+F3S9FHlCHI(+L93?FHlCHI,,X|DE)r   c                    U R                  5       nU R                  UR                  5       5        U R                  [        S   S   S5        U R                  [
        S   S   S5        U R                  [        S   S   S	5        UR                  S
SSS5        U R                  UR                  5       5        [        R                  S5        [
        R                  S5        [        R                  S5        g )Nr  r  r  r  r  r  r  r  r  r	   )
r  rc   save_allr/   r  r  r  r  re   r   r  s     r   test_save_addedChangesTest.test_save_added  s    ))+((*+&)'2F;&)'2F;&)'2F;667F;))+,'''r   c                     U R                   nUR                  SSSS5        UR                  SSSS5        UR                  5         U R	                  [
        R                  SS5      5        U R                  [
        R                  SS5      5        g )Nr	   r   ri  idledocELDIcodeldi)r  r  r  r  re   r  r  rc   r  s     r   test_save_helpChangesTest.test_save_help  ss    ,,FKC6;	B,,[&AB++K@Ar   c                 D    U R                   nUR                  SSSS5        g )Nr	   r   r  rh  r  r  s     r   test_save_defaultChangesTest.test_save_default  s    ,,68\3?r   c                 p   U R                  5       nUR                  SS5        U R                  XR                  5        S Ha  u  p#[        U   R                  USS5        UR                  X#5        U R                  [        5         X   U     [        U   U     S S S 5        Mc     g ! , (       d  f       Mu  = f)Nr	   fake))r	   r  )r   r  rt   value)r  delete_sectionr/   r  r   rd   r   KeyError)r3   r  cfgtypesections       r   test_delete_sectionChangesTest.test_delete_section   s    ))+vv.++. DGG&&w@""74""8, ) ) -, !E -,s   B&&
B5	c                 z    U R                  5       nUR                  5         U R                  XR                  5        g rY   )r  clearr/   r  r  s     r   
test_clearChangesTest.test_clear  s(    ))+**-r   )r  N)rO   rP   rQ   rR   r  r  r  r  r  r  r  r  r  r  r  r  rT   r   r   r   r  r    sw    BrCE 01"Wf$56/0 F
.3/
*
(B@	*.r   r  c                       \ rS rSrS rSrg)WarningTesti  c                    U R                   n[        5       [        l        [	        5        n[        R
                  " SS5        S S S 5        U" [        R                  S15        U" WR                  5       S5        [	        5        n[        R
                  " SS5        S S S 5        U" UR                  5       S5        [	        5        n[        R
                  " SS5        S S S 5        U" [        R                  SS15        U" UR                  5       S	5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Na= f)
Nwarningkey)r  r  zwarning
r   warn2yek)r  r  zwarn2
)r/   r[  r   _warnedr   r   getvalue)r3   Equalstderrs      r   	test_warnWarningTest.test_warn  s      &LLE* fnn012foo0&LLE* foo$&LL%( fnn0/BCfoo.   s#   DD&D7
D#&
D47
Er   N)rO   rP   rQ   rR   r  rT   r   r   r   r  r    s    /r   r  r      )	verbosity)!rS   r   r   r   r   r~   rz  r   r   r  r   idlelib.idle_test.mock_idler   r   r   r   r   rZ   r  r  r  r+  r   r   TestCaser   rV   r   r  r  r  rO   r	   r   r   r   <module>r     sH  
  
 	  2    , ??



#66r: :76?"(";";B"? ?7;#66r: :76?#)#<#<R#@ @7< 
8C** 8CvP3X.. P3fV-8$$ V-rl/8,, l/^S.(## S.l/(## /$ zMMA r   