
    c7                         d dl mZ d dlmZmZ d dlZd dlZd dlZd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    )YamlFile)with_file_contentswith_directory_contentsNc                  ,    d } t          d|            d S )Nc                    t          |           }|j        rJ |j        J |j        dk    sJ |                    ddg          }d|k    sJ |                    d          }t          d          |k    sJ |                    d          }d|k    sJ |j        t          t          d                    k    sJ d S )N   abc)r
   )r	   r
   )r	   )r   	corruptedcorrupted_error_messagechange_count	get_valuedictrootfilenameyamlvalues      Dlib/python3.11/site-packages/anaconda_project/test/test_yaml_file.py	check_abcz4test_read_yaml_file_and_get_value.<locals>.check_abc   s    !!>!!!+333 A%%%%Sz**e|s##c{{{e####z**e|yD4#;;;/////////    
a:
  b: c
r   r   s    r   !test_read_yaml_file_and_get_valuer      s9    0 0 0"       r   c                  ,    d } t          d|            d S )Nc                 d    t          |           }|                    ddgd          }d|k    sJ d S Nr	   zdefaultr   r   r   s      r   r   z6test_read_yaml_file_and_get_default.<locals>.check_abc)   =    !!Sz955E!!!!!!r   r   r   r   s    r   #test_read_yaml_file_and_get_defaultr$   (   9    " " "
       r   c                  ,    d } t          d|            d S )Nc                 d    t          |           }|                    ddgd          }d|k    sJ d S r   r"   r   s      r   check_emptyz>test_read_empty_yaml_file_and_get_default.<locals>.check_empty5   r#   r    r   )r(   s    r   )test_read_empty_yaml_file_and_get_defaultr*   4   s)    " " "
 r;'''''r   c                  ,    d } t          d|            d S )Nc                 b    t          |           }|                    d          }g d|k    sJ d S )Nr	   )r         r"   r   s      r   get_list_valuezGtest_read_yaml_file_and_get_list_valued_section.<locals>.get_list_value>   s;    !!s##yyE!!!!!!r   z
a: [1,2,3]
r   )r/   s    r   /test_read_yaml_file_and_get_list_valued_sectionr0   =   s7    " " "
      r   c                  ,    d } t          d|            d S )Nc                 d    t          |           }|                    ddgd          }d|k    sJ d S )Nr    r
   r!   r"   r   s      r   r   zMtest_read_yaml_file_and_get_default_due_to_missing_section.<locals>.check_abcI   r#   r   r   r   r   s    r   :test_read_yaml_file_and_get_default_due_to_missing_sectionr3   H   r%   r   c                  ,    d } t          d|            d S )Nc                 d    t          |           }|                    ddgd          }d|k    sJ d S )Nr	   r
   r!   r"   r   s      r   check_azLtest_read_yaml_file_and_get_default_due_to_non_dict_section.<locals>.check_aU   r#   r   z
a: 42
r   )r6   s    r   ;test_read_yaml_file_and_get_default_due_to_non_dict_sectionr7   T   s7    " " "
      r   c                  ,    d } t          d|            d S )Nc                     t          |           }|j        rJ t          j        t                    5 }|                    d           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )N*   z9YAML file path must be a string or an iterable of strings)r   r   pytestraises
ValueErrorr   reprr   r   r   excinfos      r   check_bad_pathz)test_invalid_path.<locals>.check_bad_path`   s    !!>!!!]:&& 	'NN2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	JdSZS`NaNaaaaaaas   AAAr   r   )rA   s    r   test_invalid_pathrB   _   s<    b b b       r   c                  D    d } t          t                      |            d S )Nc                     t          t          j                            | d                    }|                    ddgd          }d|k    sJ d S N	nope.yamlr    r
   r!   r   ospathjoinr   dirnamer   r   s      r   check_missingzYtest_read_missing_yaml_file_and_get_default_due_to_missing_section.<locals>.check_missingn   M    Wk::;;Sz955E!!!!!!r   r   r   rM   s    r   Btest_read_missing_yaml_file_and_get_default_due_to_missing_sectionrQ   m   s-    " " "
 DFFM22222r   c                  0    d } t          ddi|            d S )Nc                     t          t          j                            | d                    }|                    ddgd          }d|k    sJ d S rE   rG   rK   s      r   rM   zWtest_read_empty_yaml_file_and_get_default_due_to_missing_section.<locals>.check_missingw   rN   r   rF   r)   r   rP   s    r   @test_read_empty_yaml_file_and_get_default_due_to_missing_sectionrU   v   s.    " " "
 ["-}=====r   c                  D    d } t          t                      |            d S )Nc                    t           j                            | d          }t          j        |           t	          j        t                    5 }t          |           d d d            n# 1 swxY w Y   dd l}|	                                dk    rt          j        |j        j
        k    sJ d S t          j        |j        j
        k    sJ d S )Nzdir.yamlr   Windows)rH   rI   rJ   makedirsr;   r<   IOErrorr   platformsystemerrnoEACCESr   EISDIR)rL   r   r@   r[   s       r   check_read_directoryzEtest_read_yaml_file_that_is_a_directory.<locals>.check_read_directory   s    7<<44
H]7## 	wX	 	 	 	 	 	 	 	 	 	 	 	 	 	 	??	) 	7<7=#6666666<7=#6666666s   A**A.1A.rO   )r`   s    r   'test_read_yaml_file_that_is_a_directoryra      s.    	7 	7 	7 DFF$899999r   c                  n    d} | dd          } d| z  }d| z  fd}t          ||           d S )Nz:
# this is a comment 1
a:
  # this is a comment 2
  b: %s
r   r   r:   c                    t          |           }|j        dk    sJ |                    ddg          }
|k    sJ |                    ddg	           |                                 dd l}|                    | dd          5 }|                                }|k    sJ 	 d d d            n# 1 swxY w Y   t          |           }|j        dk    sJ |                    ddg          }	|k    sJ d S )Nr   r	   r
   r   rutf-8)r   r   r   	set_valuesavecodecsopenread)r   r   r   rh   filechangedyaml2value2changed_contentchanged_valueoriginal_values           r   
change_abcz8test_read_yaml_file_and_change_value.<locals>.change_abc   sP   !! A%%%%Sz**&&&&Sz=111		[[300 	.DiikkG"g-----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. ""!Q&&&&#s,,&&&&&&s   B..B25B2r   )templateoriginal_contentrr   ro   rp   rq   s      @@@r   $test_read_yaml_file_and_change_valueru      sv    H |HN>2M-0O' ' ' ' ' ' '$ '44444r   c                  D    d } t          t                      |            d S )Nc                    t           j                            | d          }t           j                            |          rJ t	          |          }|                    ddg          }|J |                    ddgd           |                                 t           j                            |          sJ dd l}|	                    |dd          5 }|
                                }dd	d          }||k    sJ 	 d d d            n# 1 swxY w Y   t	          |          }|                    ddg          }	d|	k    sJ d S )
Nfoo.yamlr	   r
   r:   r   rd   re   z
# yaml file
a:
  b: 42
r   rH   rI   rJ   existsr   r   rf   rg   rh   ri   rj   
rL   r   r   r   rh   rk   rl   expectedrm   rn   s
             r   set_abcz:test_read_missing_yaml_file_and_set_value.<locals>.set_abc   s   7<<447>>(+++++!!Sz**Sz2&&&		w~~h'''''[[300 	'DiikkG BB	H w&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' ""#s,,V|   'DDDrO   r}   s    r   )test_read_missing_yaml_file_and_set_valuer      s-      2 DFFG,,,,,r   c                  0    d } t          ddi|            d S )Nc                    t           j                            | d          }t           j                            |          sJ t	          |          }|                    ddg          }|J |                    ddgd           |                                 t           j                            |          sJ dd l}|	                    |dd          5 }|
                                }dd	d          }||k    sJ 	 d d d            n# 1 swxY w Y   t	          |          }|                    ddg          }	d|	k    sJ d S )
Nrx   r	   r
   r:   r   rd   re   z
a:
  b: 42
r   ry   r{   s
             r   r}   z8test_read_empty_yaml_file_and_set_value.<locals>.set_abc   s   7<<44w~~h'''''!!Sz**Sz2&&&		w~~h'''''[[300 	'DiikkG BBH
 w&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' ""#s,,V|r~   rx   r)   rT   r   s    r   'test_read_empty_yaml_file_and_set_valuer      s.      0 Z,g66666r   c                  0    d} d }t          | |           d S )Nr   c                 B   t          |           }|                    ddg          }d|k    sJ |                    ddgt          dd                     |j        d	k    sJ |                                 |j        d
k    sJ t          |           }|                    ddg          }d|k    sJ |                    g d          }d|k    sJ |                    g d          }d|k    sJ t          t          | d                                                     d S )Nr	   r
   r   xyr:   rs)r    qr   r-   )r   r   r    )r   r   r   rd   )	r   r   rf   r   r   rg   printri   rj   )r   r   r   rm   rn   added_valueadded_value_2s          r   add_sectionz8test_read_yaml_file_and_add_section.<locals>.add_section   s6   !!Sz**e|Sz4"#5#5#5666 A%%%%		 A%%%%""#s,,f}ooooo66[    88}$$$$d8S!!&&(()))))r   r   )rt   r   s     r   #test_read_yaml_file_and_add_sectionr      s2    
* * ** '55555r   c                  D    d } t          t                      |            d S )Nc                    t           j                            | d          }t           j                            |          rJ t	          |          }|j        dk    sJ |                    ddgd           |                                 |j        dk    sJ t           j                            |          sJ t           j                            |          }|                                 |t           j                            |          k    sJ |j        dk    sJ |                                 |t           j                            |          k    sJ |j        dk    sJ |                    ddgd           |t           j                            |          k    sJ |j        dk    sJ |                                 |t           j                            |          k    sJ |j        dk    sJ d S )	Nrx   r   r	   r
   r:   r-   +   r.   )	rH   rI   rJ   rz   r   r   rf   rg   getmtime)rL   r   r   time1s       r   check_dirty_handlingzFtest_multiple_saves_ignored_if_not_dirty.<locals>.check_dirty_handling  s   7<<447>>(+++++!! A%%%%Sz2&&&		 A%%%%w~~h'''''  **		((222222 A%%%%		((222222 A%%%%Sz2&&&((222222 A%%%%		((222222 A%%%%%%r   rO   r   s    r   (test_multiple_saves_ignored_if_not_dirtyr     s.    & & &4 DFF$899999r   c                  D    d } t          t                      |            d S )Nc                    t           j                            | d          }t           j                            |          rJ t	          |          }|                    ddgd           |                                 t           j                            |          sJ t           j                            |          }t	          |          }|t           j                            |          k    sJ |j        dk    sJ |                                 |t           j                            |          k    sJ |j        dk    sJ d S )Nrx   r	   r
   r:   r   )	rH   rI   rJ   rz   r   rf   rg   r   r   )rL   r   r   r   rm   s        r   r   zGtest_save_ignored_if_not_dirty_after_load.<locals>.check_dirty_handling.  s   7<<447>>(+++++!!Sz2&&&		w~~h'''''  **""((222222!Q&&&&

((222222!Q&&&&&&r   rO   r   s    r   )test_save_ignored_if_not_dirty_after_loadr   -  s.    ' ' '  DFF$899999r   c                 x    dd}|                      d|           d }t          t                      |           d S )Nr   c                      t          d          )Nthis is not EEXIST)rZ   )rI   modes     r   mock_makedirsz<test_throw_if_cannot_create_directory.<locals>.mock_makedirsB  s    *+++r   zos.makedirsc                 T   d}t           j                            | |d          }t          |          }|                    ddgd           t          j        t                    5 }|                                 d d d            n# 1 swxY w Y   dt          |j
                  v sJ d S )Nbarrx   r	   r
   r:   r   )rH   rI   rJ   r   rf   r;   r<   rZ   rg   r>   r   )rL   subdirr   r   r@   s        r   check_throw_if_cannot_createzKtest_throw_if_cannot_create_directory.<locals>.check_throw_if_cannot_createG  s    7<<<<!!Sz2&&&]7## 	wIIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	#tGM':':::::::s   $BB	B	)r   )setattrr   r   )monkeypatchr   r   s      r   %test_throw_if_cannot_create_directoryr   A  sZ    , , , , }555; ; ; DFF$@AAAAAr   c                  ,    d } t          d|            d S )Nc                    t          |           }|j        sJ d|j        v sJ t          j        t
                    5 }|                    ddgd           d d d            n# 1 swxY w Y   dt          |j                  v sJ t          j        t
                    5 }|	                                 d d d            n# 1 swxY w Y   dt          |j                  v sJ |j
        J |                    ddg          J d S )Nz#mapping values are not allowed herefoor   r:   zCannot modify corruptedr	   r
   )r   r   r   r;   r<   r=   rf   r>   r   rg   _yamlr   r?   s      r   check_corruptedz6test_read_corrupted_yaml_file.<locals>.check_corruptedU  s   !!~48TTTTT ]:&& 	/'NNE5>2...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/(D,?,?????]:&& 	'IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	(D,?,????? z%%%~~sCj))11111s#   A""A&)A&B??CCz
^
a:
  b: c
r   )r   s    r   test_read_corrupted_yaml_filer   T  s9    2 2 2&   	    r   c                  6    dfd} t          |            d S )Na  
# comment in front of a
a:
  x: y
  # comment in front of z
  z: q

b:
  i: j

  # whitespace in front of this comment in front of k
  k: l

c:
  # comment before a list item
  - foo
  - bar # comment after a list item

d:
  hello: world
  foo: bar

e:
  woot: woot
  # comment at the end of e

# comment in column 0 at the end
# this one is a block comment
# which continues several lines


c                 .   t          |           }d|_        |                                 t          | d                                          }t          d           t          |           |k    sJ d } |          } ||          }||k    sJ d S )Nznot the actual previous contentrd   z%the re-saved version of the file was:c                     |                      d          r
| dd          } |                     dd                              dd          S )N
r    r)   z

)
startswithreplace)contents    r   canonicalizezetest_roundtrip_yaml_file_preserving_order_and_comments.<locals>.check_roundtrip.<locals>.canonicalize  sI    !!$'' &!!""+??3++33FDAAAr   )r   _previous_contentrg   ri   rj   r   )r   r   new_contentr   original_canon	new_canonrt   s         r   check_roundtripzOtest_roundtrip_yaml_file_preserving_order_and_comments.<locals>.check_roundtrip  s    !!!B		8S))..005666k;....	B 	B 	B
 &&677 L--	******r   r   )r   rt   s    @r   6test_roundtrip_yaml_file_preserving_order_and_commentsr   o  s>    B+ + + + +. '99999r   c                  0    d} d }t          | |           d S )Nz#
a:
  b: 1

x:
  y: 2
  z: 3

q: 4
c                 .    t                     j        dk    sJ                     ddg          }d|k    sJ                     ddg          }d|k    sJ                     ddg          }d|k    sJ                     d	          }d
|k    sJ  fdt          j                  fd} |ddg            |ddg            |ddg            |d	           j        rJ                     d           j        rJ d S )Nr   r	   r
   r   r   r-   r    r.   r      c                 t    t                    }|j        dk    sJ |                    | d           }|J d S )Nr   )r   r   r   )rI   rm   rn   r   s      r   assert_unset_on_reloadzZtest_read_yaml_file_and_unset_values.<locals>.unset_values.<locals>.assert_unset_on_reload  sI    X&&E%****__T400F!!!!!r   )last_changec                 6   j         d         k    sJ j        rJ                     |                                | d           J j        sJ                                  j         d         dz   k    sJ dxx         dz  cc<    |            d S )Nr   r   )r   has_unsaved_changesunset_valuer   rg   )rI   r   scoper   s    r   check_unsetzOtest_read_yaml_file_and_unset_values.<locals>.unset_values.<locals>.check_unset  s    $m(<<<<<////T""">>$--555++++IIKKK$})=)ABBBB-   A%   ""4(((((r   not_in_there)r   r   r   r   r   r   )	r   a_bx_yx_zr   r   r   r   r   s	   `     @@@r   unset_valuesz:test_read_yaml_file_and_unset_values.<locals>.unset_values  s   !! A%%%%nnc3Z((Cxnnc3Z((Cxnnc3Z((CxNN3Av	" 	" 	" 	" 	" !2333		) 		) 		) 		) 		) 		) 		) 	S#JS#JS#JC++++(((++++++r   r   )rt   r   s     r   $test_read_yaml_file_and_unset_valuesr     s3    	&, &, &,P '66666r   c                  ,    d } t          d|            d S )Nc                 f   t          |           }|j        rJ |j        J |j        dk    sJ |                    dd           }|J |                    dd           |                    dd           }|dk    sJ |                    dd           |                    dd           }|dk    sJ d S )Nr   r	   r)   r   )r   r   r   r   r   rf   r   s      r   checkz;test_read_yaml_file_and_set_get_empty_string.<locals>.check  s    !!>!!!+333 A%%%%sD))sBsD)){ 	sC   sD))|r   r)   r   )r   s    r   ,test_read_yaml_file_and_set_get_empty_stringr     s)      " r5!!!!!r   )anaconda_project.yaml_filer   ,anaconda_project.internal.test.tmpfile_utilsr   r   r]   rH   r;   r   r$   r*   r0   r3   r7   rB   rQ   rU   ra   ru   r   r   r   r   r   r   r   r   r   r    r   r   <module>r      s   0 / / / / / d d d d d d d d  				   0	 	 	( ( (  	 	 	    3 3 3> > >: : :'5 '5 '5T- - -:7 7 786 6 6<: : :<: : :(B B B&  69: 9: 9:x57 57 57p" " " " "r   