ó
¼S]c           @   s  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(   iÿÿÿÿ(   t   YamlFile(   t   with_file_contentst   with_directory_contentsNc          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   sã   t  |  ƒ } | j s t ‚ | j d  k s1 t ‚ | j d k sF t ‚ | j d d g ƒ } d | k sm t ‚ | j d ƒ } t d d ƒ | k s— t ‚ | j d ƒ } d | k s¸ t ‚ | j t d t d d ƒ ƒ k sß t ‚ d  S(   Ni   t   at   bt   c(   R   R   (	   R    t	   corruptedt   AssertionErrort   corrupted_error_messaget   Nonet   change_countt	   get_valuet   dictt   root(   t   filenamet   yamlt   value(    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt	   check_abc   s    s   
a:
  b: c
(   R   (   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt!   test_read_yaml_file_and_get_value   s    	c          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   s:   t  |  ƒ } | j d d g d ƒ } d | k s6 t ‚ d  S(   NR   t   zt   default(   R    R   R   (   R   R   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyR   )   s    s   
a:
  b: c
(   R   (   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt#   test_read_yaml_file_and_get_default(   s    	c          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   s:   t  |  ƒ } | j d d g d ƒ } d | k s6 t ‚ d  S(   NR   R   R   (   R    R   R   (   R   R   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_empty5   s    t    (   R   (   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt)   test_read_empty_yaml_file_and_get_default4   s    	c          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   s:   t  |  ƒ } | j d ƒ } d d d g | k s6 t ‚ d  S(   NR   i   i   i   (   R    R   R   (   R   R   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   get_list_value>   s    s   
a: [1,2,3]
(   R   (   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt/   test_read_yaml_file_and_get_list_valued_section=   s    	c          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   s:   t  |  ƒ } | j d d g d ƒ } d | k s6 t ‚ d  S(   NR   R   R   (   R    R   R   (   R   R   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyR   I   s    s   
a:
  b: c
(   R   (   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt:   test_read_yaml_file_and_get_default_due_to_missing_sectionH   s    	c          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   s:   t  |  ƒ } | j d d g d ƒ } d | k s6 t ‚ d  S(   NR   R   R   (   R    R   R   (   R   R   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_aU   s    s   
a: 42
(   R   (   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt;   test_read_yaml_file_and_get_default_due_to_non_dict_sectionT   s    	c          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   s`   t  |  ƒ } | j s t ‚ t j t ƒ  } | j d ƒ Wd  QXd t | j ƒ k s\ t ‚ d  S(   Ni*   s9   YAML file path must be a string or an iterable of strings(	   R    R   R   t   pytestt   raisest
   ValueErrorR   t   reprR   (   R   R   t   excinfo(    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_bad_path`   s
    s   
a:
  b: c
(   R   (   R#   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   test_invalid_path_   s    	c          C   s   d „  }  t  t ƒ  |  ƒ d  S(   Nc         S   sI   t  t j j |  d ƒ ƒ } | j d d g d ƒ } d | k sE t ‚ d  S(   Ns	   nope.yamlR   R   R   (   R    t   ost   patht   joinR   R   (   t   dirnameR   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_missingn   s    (   R   R   (   R)   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pytB   test_read_missing_yaml_file_and_get_default_due_to_missing_sectionm   s    	c          C   s!   d „  }  t  i d d 6|  ƒ d  S(   Nc         S   sI   t  t j j |  d ƒ ƒ } | j d d g d ƒ } d | k sE t ‚ d  S(   Ns	   nope.yamlR   R   R   (   R    R%   R&   R'   R   R   (   R(   R   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyR)   w   s    R   s	   nope.yaml(   R   (   R)   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt@   test_read_empty_yaml_file_and_get_default_due_to_missing_sectionv   s    	c          C   s   d „  }  t  t ƒ  |  ƒ d  S(   Nc         S   sŸ   t  j j |  d ƒ } t  j | ƒ t j t ƒ  } t | ƒ Wd  QXd d  l } | j	 ƒ  d k r€ t
 j | j j
 k s› t ‚ n t
 j | j j
 k s› t ‚ d  S(   Ns   dir.yamliÿÿÿÿt   Windows(   R%   R&   R'   t   makedirsR   R   t   IOErrorR    t   platformt   systemt   errnot   EACCESR   R   t   EISDIR(   R(   R   R"   R/   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_read_directory€   s    (   R   R   (   R4   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt'   test_read_yaml_file_that_is_a_directory   s    	c             sV   d }  |  d }  d ‰ |  ˆ } d ‰ |  ˆ ‰  ‡  ‡ ‡ f d †  } t  | | ƒ d  S(   Ns:   
# this is a comment 1
a:
  # this is a comment 2
  b: %s
i   R   i*   c            sü   t  |  ƒ } | j d k s! t ‚ | j d d g ƒ } ˆ | k sH t ‚ | j d d g ˆ ƒ | j ƒ  d d  l } | j |  d d ƒ % } | j ƒ  } ˆ  | k sª t ‚ Wd  QXt  |  ƒ } | j d k sÑ t ‚ | j d d g ƒ } ˆ | k sø t ‚ d  S(   Ni   R   R   iÿÿÿÿt   rs   utf-8(	   R    R
   R   R   t	   set_valuet   savet   codecst   opent   read(   R   R   R   R9   t   filet   changedt   yaml2t   value2(   t   changed_contentt   changed_valuet   original_value(    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt
   change_abc£   s    
(   R   (   t   templatet   original_contentRC   (    (   R@   RA   RB   sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt$   test_read_yaml_file_and_change_valueŽ   s    


c          C   s   d „  }  t  t ƒ  |  ƒ d  S(   Nc   
      S   s"  t  j j |  d ƒ } t  j j | ƒ s. t ‚ t | ƒ } | j d d g ƒ } | d  k sa t ‚ | j d d g d ƒ | j	 ƒ  t  j j | ƒ s™ t ‚ d d  l
 } | j | d d ƒ / } | j ƒ  } d d	 } | | k så t ‚ Wd  QXt | ƒ } | j d d g ƒ }	 d |	 k st ‚ d  S(
   Ns   foo.yamlR   R   i*   iÿÿÿÿR6   s   utf-8s   
# yaml file
a:
  b: 42
i   (   R%   R&   R'   t   existsR   R    R   R	   R7   R8   R9   R:   R;   (
   R(   R   R   R   R9   R<   R=   t   expectedR>   R?   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   set_abc¹   s     

(   R   R   (   RI   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt)   test_read_missing_yaml_file_and_set_value¸   s    	c          C   s!   d „  }  t  i d d 6|  ƒ d  S(   Nc   
      S   s!  t  j j |  d ƒ } t  j j | ƒ s- t ‚ t | ƒ } | j d d g ƒ } | d  k s` t ‚ | j d d g d ƒ | j	 ƒ  t  j j | ƒ s˜ t ‚ d d  l
 } | j | d d ƒ / } | j ƒ  } d d	 } | | k sä t ‚ Wd  QXt | ƒ } | j d d g ƒ }	 d |	 k st ‚ d  S(
   Ns   foo.yamlR   R   i*   iÿÿÿÿR6   s   utf-8s   
a:
  b: 42
i   (   R%   R&   R'   RG   R   R    R   R	   R7   R8   R9   R:   R;   (
   R(   R   R   R   R9   R<   R=   RH   R>   R?   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyRI   Ö   s     

R   s   foo.yaml(   R   (   RI   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt'   test_read_empty_yaml_file_and_set_valueÕ   s    	c          C   s    d }  d „  } t  |  | ƒ d  S(   Ns   
a:
  b: c
c         S   s+  t  |  ƒ } | j d d g ƒ } d | k s3 t ‚ | j d d g t d d d d	 ƒ ƒ | j d
 k sm t ‚ | j ƒ  | j d k sŒ t ‚ t  |  ƒ } | j d d g ƒ } d | k s¿ t ‚ | j d d d g ƒ } d | k sé t ‚ | j d d d g ƒ } d	 | k st ‚ t |  d ƒ j ƒ  GHd  S(   NR   R   R   t   xt   yR   i*   t   qt   rsi   i   R6   (	   R    R   R   R7   R   R
   R8   R:   R;   (   R   R   R   R>   R?   t   added_valuet   added_value_2(    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   add_section÷   s    %
(   R   (   RE   RR   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt#   test_read_yaml_file_and_add_sectionñ   s    	c          C   s   d „  }  t  t ƒ  |  ƒ d  S(   Nc         S   s²  t  j j |  d ƒ } t  j j | ƒ s. t ‚ t | ƒ } | j d k sO t ‚ | j d d g d ƒ | j ƒ  | j d k s„ t ‚ t  j j | ƒ sœ t ‚ t  j j	 | ƒ } | j ƒ  | t  j j	 | ƒ k sÖ t ‚ | j d k së t ‚ | j ƒ  | t  j j	 | ƒ k st ‚ | j d k s(t ‚ | j d d g d ƒ | t  j j	 | ƒ k s\t ‚ | j d k sqt ‚ | j ƒ  | t  j j	 | ƒ k s™t ‚ | j d k s®t ‚ d  S(	   Ns   foo.yamli   R   R   i*   i   i+   i   (
   R%   R&   R'   RG   R   R    R
   R7   R8   t   getmtime(   R(   R   R   t   time1(    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_dirty_handling  s*    



(   R   R   (   RV   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt(   test_multiple_saves_ignored_if_not_dirty  s    	c          C   s   d „  }  t  t ƒ  |  ƒ d  S(   Nc         S   s  t  j j |  d ƒ } t  j j | ƒ s. t ‚ t | ƒ } | j d d g d ƒ | j ƒ  t  j j | ƒ sr t ‚ t  j j | ƒ } t | ƒ } | t  j j | ƒ k s® t ‚ | j	 d k sÃ t ‚ | j ƒ  | t  j j | ƒ k së t ‚ | j	 d k s t ‚ d  S(   Ns   foo.yamlR   R   i*   i   (
   R%   R&   R'   RG   R   R    R7   R8   RT   R
   (   R(   R   R   RU   R>   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyRV   .  s    

(   R   R   (   RV   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt)   test_save_ignored_if_not_dirty_after_load-  s    	c         C   s9   d d „ } |  j  d | ƒ d „  } t t ƒ  | ƒ d  S(   Ni    c         S   s   t  d ƒ ‚ d  S(   Ns   this is not EEXIST(   R.   (   R&   t   mode(    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   mock_makedirsB  s    s   os.makedirsc         S   s   d } t  j j |  | d ƒ } t | ƒ } | j d d g d ƒ t j t ƒ  } | j ƒ  Wd  QXd t	 | j
 ƒ k s} t ‚ d  S(   Nt   bars   foo.yamlR   R   i*   s   this is not EEXIST(   R%   R&   R'   R    R7   R   R   R.   R8   R!   R   R   (   R(   t   subdirR   R   R"   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_throw_if_cannot_createG  s    (   t   setattrR   R   (   t   monkeypatchRZ   R]   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt%   test_throw_if_cannot_create_directoryA  s    	
c          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   sð   t  |  ƒ } | j s t ‚ d | j k s0 t ‚ t j t ƒ  } | j d d g d ƒ Wd  QXd t | j	 ƒ k sy t ‚ t j t ƒ  } | j
 ƒ  Wd  QXd t | j	 ƒ k s¶ t ‚ | j d  k	 sË t ‚ | j d d g ƒ d  k sì t ‚ d  S(   Ns#   mapping values are not allowed heret   fooR[   i*   s   Cannot modify corruptedR   R   (   R    R   R   R   R   R   R    R7   R!   R   R8   t   _yamlR	   R   (   R   R   R"   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_corruptedU  s    s   
^
a:
  b: c
(   R   (   Rc   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   test_read_corrupted_yaml_fileT  s    	c             s&   d ‰  ‡  f d †  }  t  ˆ  |  ƒ d  S(   Ns‰  
# 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            s‡   t  |  ƒ } d | _ | j ƒ  t |  d ƒ j ƒ  } d GH| GHˆ  | k sP t ‚ d „  } | ˆ  ƒ } | | ƒ } | | k sƒ t ‚ d  S(   Ns   not the actual previous contentR6   s%   the re-saved version of the file was:c         S   s8   |  j  d ƒ r |  d }  n  |  j d d ƒ j d d ƒ S(   Ns   
i   t    R   s   

(   t
   startswitht   replace(   t   content(    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   canonicalizeŸ  s    (   R    t   _previous_contentR8   R:   R;   R   (   R   R   t   new_contentRi   t   original_canont	   new_canon(   RE   (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_roundtrip‘  s    	
	(   R   (   Rn   (    (   RE   sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt6   test_roundtrip_yaml_file_preserving_order_and_commentso  s     c          C   s    d }  d „  } t  |  | ƒ d  S(   Ns#   
a:
  b: 1

x:
  y: 2
  z: 3

q: 4
c            sX  t  ˆ ƒ ‰ ˆ j d k s! t ‚ ˆ j d d g ƒ } d | k sH t ‚ ˆ j d d g ƒ } d | k so t ‚ ˆ j d d g ƒ } d | k s– t ‚ ˆ j d	 ƒ } d
 | k s· t ‚ ‡ f d †  ‰  t d ˆ j ƒ ‰ ‡  ‡ ‡ f d †  } | d d g ƒ | d d g ƒ | d d g ƒ | d	 ƒ ˆ j s7t ‚ ˆ j d ƒ ˆ j sTt ‚ d  S(   Ni   R   R   RL   RM   i   R   i   RN   i   c            sI   t  ˆ  ƒ } | j d k s! t ‚ | j |  d  ƒ } | d  k sE t ‚ d  S(   Ni   (   R    R
   R   R   R	   (   R&   R>   R?   (   R   (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   assert_unset_on_reloadÄ  s    t   last_changec            s¨   ˆ j  ˆ d k s t ‚ ˆ j s) t ‚ ˆ j |  ƒ ˆ j |  d  ƒ d  k sT t ‚ ˆ j sc t ‚ ˆ j ƒ  ˆ j  ˆ d d k sŠ t ‚ ˆ d c d 7<ˆ  |  ƒ d  S(   NRq   i   (   R
   R   t   has_unsaved_changest   unset_valueR   R	   R8   (   R&   (   Rp   t   scopeR   (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   check_unsetÌ  s    
t   not_in_there(   R    R
   R   R   R   Rr   Rs   (   R   t   a_bt   x_yt   x_zRN   Ru   (    (   Rp   R   Rt   R   sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   unset_values¸  s(    
(   R   (   RE   Rz   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt$   test_read_yaml_file_and_unset_values«  s    	(c          C   s   d „  }  t  d |  ƒ d  S(   Nc         S   sÖ   t  |  ƒ } | j s t ‚ | j d  k s1 t ‚ | j d k sF t ‚ | j d d  ƒ } | d  k sj t ‚ | j d d ƒ | j d d  ƒ } | d k sž t ‚ | j d d ƒ | j d d  ƒ } | d k sÒ t ‚ d  S(   Ni   R   R   Re   (   R    R   R   R   R	   R
   R   R7   (   R   R   R   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   checkä  s    R   (   R   (   R|   (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt,   test_read_yaml_file_and_set_get_empty_stringã  s    	(   t   anaconda_project.yaml_fileR    t,   anaconda_project.internal.test.tmpfile_utilsR   R   R1   R%   R   R   R   R   R   R   R   R$   R*   R+   R5   RF   RJ   RK   RS   RW   RX   R`   Rd   Ro   R{   R}   (    (    (    sC   lib/python2.7/site-packages/anaconda_project/test/test_yaml_file.pyt   <module>   s2   														*								<	8