
S]c           @@ sK  d  d l  m Z m Z d  d l m Z d  d l m Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z d  d l m  Z  d  d l! m" Z" m# Z# d  d l$ m% Z% d  d l& m' Z' d  d l( m) Z) d  d l* m+ Z+ d   Z, d   Z- d   Z. d   Z/ d   Z0 d   Z1 d   Z2 d   Z3 d   Z4 d   Z5 d   Z6 d   Z7 d   Z8 d    Z9 d!   Z: d"   Z; d#   Z< d$   Z= d%   Z> d&   Z? d'   Z@ d(   ZA d)   ZB d*   ZC d+   ZD d,   ZE d-   ZF d.   ZG d/   ZH d0   ZI d1   ZJ d2   ZK d3   ZL d4   ZM d5   ZN d6   ZO d7   ZP d8   ZQ d9   ZR d:   ZS d;   ZT d<   ZU d=   ZV d>   ZW d?   ZX d@   ZY dA   ZZ dB   Z[ dC   Z\ dD   Z] dE   Z^ dF   Z_ dG   Z` dH   Za dI   Zb dJ   Zc dK   Zd dL   Ze dM   Zf dN   Zg dO   Zh dP   Zi dQ   Zj dR   Zk dS   Zl dT   Zm dU   Zn dV   Zo dW   Zp dX   Zq dY   Zr dZ   Zs d[   Zt d\   Zu d]   Zv d^   Zw d_   Zx d`   Zy da   Zz db   Z{ dc   Z| dd   Z} de   Z~ df   Z dg   Z dh   Z di   Z dj   Z dk   Z dl   Z dm   Z dn   Z do   Z dp   Z dq   Z dr   Z ds   Z dt   Z e j   du k rdv Z n dw Z e dx e d dy  Z dz   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 e j j d d d d d g  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   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   absolute_importt   print_function(   t   deepcopy(   t   find_executableN(   t   _load_environment_yml(   t   version(   t   with_directory_contentst/   with_directory_contents_completing_project_file(   t	   conda_api(   t   RequirementsRegistry(   t   EnvVarRequirement(   t   CondaEnvRequirement(   t   ServiceRequirement(   t   DownloadRequirement(   t   Projectt   ProjectProblem(   t   DEFAULT_PROJECT_FILENAME(   t   DEFAULT_PROJECT_LOCK_FILENAME(   t   minimal_environ(   t   project_no_dedicated_envc         C@ sH   t  |  |  } | d  k r2 t d |  | f  n  | d  k	 sD t  | S(   Ns9   Did not find %s on path %r, running the tests requires it(   R   t   Nonet   printt   AssertionError(   t   namet   patht   found(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   _assert_find_executable&   s
    c          C@ s   d   }  t  t   |   d  S(   Nc         S@ s   t  |   } | j g  k s! t  |  | j k s6 t  |  t j j | j j  k sZ t  | j	 t j j
 |   k s{ t  | j t j j
 |   k s t  | j d k s t  d  S(   Nt    (   R   t   problemsR   t   directory_patht   osR   t   dirnamet   project_filet   filenameR   t   basenamet   url_friendly_namet   description(   R   t   project(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_properties/   s    $!!(   R   t   dict(   R&   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_properties.   s    		c          C@ s   d   }  t  t   |   d  S(   Nc         S@ s   t  |  d  } | j g  k s% t  |  | j k s: t  |  t j j | j j  k s^ t  | j	 t j j
 |   k s t  d  S(   Nt   /(   R   R   R   R   R   R   R   R    R!   R   R"   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR&   <   s
    $(   R   R'   (   R&   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt%   test_ignore_trailing_slash_on_dirname;   s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j | j  } d t |  k sK t  d | d j k sd t  t   | d j k s t  t	 j
   } | | d j k s t  d  S(   Ni   t   FOOi    i   (   R   R   R   t   requirementst   default_env_spec_namet   lent   env_varR'   t   optionsR   t   conda_prefix_variable(   R   R%   R,   t   conda_env_var(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_some_env_varG   s    s   
variables:
  FOO: {}
(   R   R   (   R3   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_single_env_var_requirementF   s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j | j  } d t |  k sK t  d | d j k sd t  i d d 6| d j k s t  d | d j k s t  d | d j	 k s t  t
 j   } | | d j k s t  d  S(   Ni   R+   i    s    Set FOO to the value of your fooR$   i   (   R   R   R   R,   R-   R.   R/   R0   R$   t   titleR   R1   (   R   R%   R,   R2   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR3   [   s     sG   
variables:
  FOO: { description: "Set FOO to the value of your foo" }
(   R   R   (   R3   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt0   test_single_env_var_requirement_with_descriptionZ   s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j | j  } d t |  k sK t  d | d j k sd t  t   | d j k s t  d | d j k s t  t   | d j k s t  t	 j
   } | | d j k s t  d  S(   Ni   R+   i    t   BARi   i   (   R   R   R   R,   R-   R.   R/   R'   R0   R   R1   (   R   R%   R,   R2   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR3   r   s    s1   
variables:
  FOO: null
  BAR: { default: null }
(   R   R   (   R3   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt0   test_single_env_var_requirement_null_for_defaultq   s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j | j  } d t |  k sK t  d | d j k sd t  t d d  | d j k s t  t	 j
   } | | d j k s t  d  S(   Ni   R+   i    t   defaultt   helloi   (   R   R   R   R,   R-   R.   R/   R'   R0   R   R1   (   R   R%   R,   R2   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR3      s    "s   
variables:
  FOO: 'hello'
(   R   R   (   R3   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt2   test_single_env_var_requirement_string_for_default   s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j | j  } d t |  k sK t  d | d j k sd t  t d d  | d j k s t  t	 j
   } | | d j k s t  d  S(   Ni   R+   i    R9   t   42i   (   R   R   R   R,   R-   R.   R/   R'   R0   R   R1   (   R   R%   R,   R2   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR3      s    "s   
variables:
  FOO: 42
(   R   R   (   R3   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt2   test_single_env_var_requirement_number_for_default   s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j | j  } d t |  k sK t  d | d j k sd t  t d d  | d j k s t  t	 j
   } | | d j k s t  d  S(   Ni   R+   i    R9   R<   i   (   R   R   R   R,   R-   R.   R/   R'   R0   R   R1   (   R   R%   R,   R2   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR3      s    "s#   
variables:
  FOO: { default: 42 }
(   R   R   (   R3   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt2   test_single_env_var_requirement_default_is_in_dict   s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         @ s   t  |     g    j k s! t    j d k s6 t    f d   } | d  } d d d g d d  d g f | k s{ t  | d  } d d g d  d	 g f | k s t  | d
  } d d g d  d g f | k s t  d  S(   Nt   fooc         @ s   g    j  |   D] } t | t  r | ^ q } d t |  k sI t  g    j  |   D]0 } t | t  sY | j | j j d  f ^ qY } t | d d   } g  | D] } | d ^ q g  | D] } | d ^ q f S(   Ni   R9   t   keyc         S@ s   |  d S(   Ni    (    (   t   x(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   <lambda>   R   i    (	   R,   t
   isinstanceR   R.   R   R/   R0   t   gett   sorted(   R   t   reqt   conda_env_reqsR,   t   t(   R%   (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   var_reqs   s    10R7   t   DOWNLOADR+   t   hit   globalt   foo_with_overridet   localt   bar(   R   R   R   R-   R   (   R   RI   R,   (    (   R%   sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check   s    *$s   
variables:
  FOO: { default: "global" }
downloads:
  DOWNLOAD: "http://example.com"
env_specs:
  foo:
    variables:
      BAR: "hi"
  foo_with_override:
    variables:
      FOO: "local"
  bar:
    downloads:
      DOWNLOAD: "http://example.com/bar"
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_requirement_inheritance   s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sU   t  |   } | j | j  } d t |  k s6 t  d t | j  k sQ t  d  S(   Ni    i   (   R   R,   R-   R.   R   R   (   R   R%   R,   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_problem   s    s   
variables:
  42
(   R   R   (   RR   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_problem_in_project_file   s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         @ s   t  |       f d   } | d    j k s6 t  | d    j k sQ t  | d    j k sl t  | d    j k s t  | d    j k s t  d  S(   Nc         @ s   d   j  j |  f S(   Ns   %s: %s(   R    R"   (   t   s(   R%   (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   _fn  s    s8   Variable name cannot be empty string, found: ' ' as names8   Download name cannot be empty string, found: ' ' as names7   Service name cannot be empty string, found: ' ' as names@   Environment spec name cannot be empty string, found: ' ' as names@   Command variable name cannot be empty string, found: ' ' as name(   R   R   R   (   R   RU   (    (   R%   sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRR      s    s   
variables:
  ' ': 'thing'
downloads:
  ' ': 'http://localhost:8000/foo.tgz'
services:
  ' ': redis
env_specs:
  ' ':
    packages:
       - python
commands:
  ' ':
    shell: echo 'foo'
(   R   R   (   RR   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_problem_empty_names   s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s/   t  |   } d | j j | j k s+ t  d  S(   Ns<   %s: Variable name cannot be empty string, found: ' ' as name(   R   R    R"   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRR      s    s   
variables:
  - ' '
(   R   R   (   RR   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt!   test_problem_empty_names_var_list  s    	c          C@ s   d   }  t  t   |   d  S(   Nc         S@ s   t  j j |  d  } t  j j |  s. t  t |  } t  j j |  sS t  d | g | j k so t  | j | j  } d t	 |  k s t  d  S(   NR?   s&   Project directory '%s' does not exist.i    (
   R   R   t   joint   isdirR   R   R   R,   R-   R.   (   R   t   project_dirR%   R,   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_does_not_exist.  s    (   R   R'   (   R[   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_project_dir_does_not_exist-  s    		c         @ s#     f d   } t  t   |  d  S(   Nc         @ sg   t  j j |  d  } t  j |  d   }   j d |  t |  } d | g | j k sc t  d  S(   NR?   c         S@ s   t  d   d  S(   Nt   NOPE(   t   OSError(   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   mock_os_walk?  s    s   os.walks!   Could not list files in %s: NOPE.(   R   R   RX   t   makedirst   setattrR   R   R   (   R   RZ   R_   R%   (   t   monkeypatch(    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_not_readable;  s    	(   R   R'   (   Rb   Rc   (    (   Rb   sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_project_dir_not_readable:  s    c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } | j | j  } d t |  k s6 t  d | d j k sO t  t d d  | d j k sq t  t j	   } | | d j k s t  d  S(   Ni   R+   i    R9   R:   i   (
   R   R,   R-   R.   R   R/   R'   R0   R   R1   (   R   R%   R,   R2   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR3   L  s    "s*   
variables:
    FOO: { default: "hello" }
(   R   R   (   R3   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt,   test_single_env_var_requirement_with_optionsK  s
    	
c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s4   t    } t |  |  } | j j | k s0 t  d  S(   N(   R	   R   t   _config_cachet   registryR   (   R   Rg   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_override_plugin_registry`  s    	s   
variables:
  FOO: {}
(   R   R   (   Rh   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_override_plugin_registry_  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s%   t  |   } | j d k s! t  d  S(   NR?   (   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_name_from_project_filen  s    s   
name: foo
    (   R   R   (   Rj   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_get_name_from_project_filem  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s,   t  |   } t d g | j k s( t  d  S(   Ns/   : name: field should have a string value not [](   R   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRj   z  s    s   
name: []
    (   R   R   (   Rj   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt    test_broken_name_in_project_filey  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s1   t  |   } | j t j j |   k s- t  d  S(   N(   R   R   R   R   R"   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_name_from_directory_name  s    s   
name: null
(   R   R   (   Rm   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt!   test_get_name_from_directory_name  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } | j d k s! t  | j j d d  | j d k sI t  | j j   | j d k sk t  t  |   } | j d k s t  d  S(   NR?   R   RO   (   R   R   R   R    t	   set_valuet   save(   R   R%   t   project2(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_set_name  s    s   
name: foo
(   R   R   (   Rr   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_set_name_in_project_file  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s%   t  |   } | j d k s! t  d  S(   NR?   (   R   R$   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt#   check_description_from_project_file  s    s   
description: foo
    (   R   R   (   Rt   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt&   test_get_description_from_project_file  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s,   t  |   } t d g | j k s( t  d  S(   Ns6   : description: field should have a string value not [](   R   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRt     s    
s   
description: []
    (   R   R   (   Rt   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_broken_description_in_project_file  s    	c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ s4   t  |   } | j t j j |  d  k s0 t  d  S(   Ns   foo.png(   R   t   iconR   R   RX   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_icon_from_project_file  s    s   
icon: foo.png
        R   s   foo.png(   R   R   (   Rx   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_get_icon_from_project_file  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s,   t  |   } t d g | j k s( t  d  S(   Ns/   : icon: field should have a string value not [](   R   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRx     s    s   
icon: []
    (   R   R   (   Rx   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt    test_broken_icon_in_project_file  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sP   t  |   } | j d  k s! t  d t j j |  d  g | j k sL t  d  S(   Ns   Icon file %s does not exist.s   foo.png(   R   Rw   R   R   R   R   RX   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRx     s    s   
icon: foo.png
    (   R   R   (   Rx   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt%   test_nonexistent_icon_in_project_file  s    	c          C@ s/   d   }  t  i d t 6d d 6d d 6|   d  S(   Nc         S@ s   t  |   } | j t j j |  d  k s0 t  | j j d d  | j t j j |  d  k sg t  | j j   | j t j j |  d  k s t  t  |   } | j t j j |  d  k s t  d  S(   Ns   foo.pngRw   s   bar.png(	   R   Rw   R   R   RX   R   R    Ro   Rp   (   R   R%   Rq   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_set_icon  s    $$$s   
icon: foo.png
R   s   foo.pngs   bar.png(   R   R   (   R|   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_set_icon_in_project_file  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sU  t  |   } | j d } | j d k s. t  d | j k sC t  d | j k sX t  d | j k sm t  t d d
 d g  | j k s t  t d d d	 g  | j	 k s t  | j
 | j  } d  } x8 | D]0 } t | t  r | d  k s t  | } q q Wt | j  d k s#t  d | j k s8t  | j d | k sQt  d  S(   NR9   t   mtvt   hboR?   s   hello >= 1.0t   worldt   pip1s	   pip2==1.3t   pip3R:   t   pip2i   (   R~   R   (   R?   s   hello >= 1.0R   (   R   s	   pip2==1.3R   (   R   t	   env_specsR   R   t   channelst   conda_packagest   pip_packagest   sett   conda_package_names_sett   pip_package_names_setR,   R-   R   RC   R   R.   (   R   R%   t   envR,   t   conda_env_reqt   r(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_get_packages  s"    $$s   
packages:
  - foo
  - hello >= 1.0
  - world
  - pip:
     - pip1
     - pip2==1.3
  - pip:
     - pip3

channels:
  - mtv
  - hbo
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt/   test_get_package_requirements_from_project_file  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s,   t  |   } d | j d j k s( t  d  S(   NR9   (    (   R   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   $  s    R   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt0   test_get_package_requirements_from_empty_project#  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s<   t  |   } d t | j  k s' t  d | j d k d  S(   Ni   s   should be a list of strings noti    (   R   R.   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   ,  s    s   
packages:
    foo: bar
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_complain_about_packages_not_a_list+  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s<   t  |   } d t | j  k s' t  d | j d k d  S(   Ni   s   should be a list of strings noti    (   R   R.   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   :  s    s   
packages:
    - pip: bar
    (   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_complain_about_pip_deps_not_a_list9  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s<   t  |   } d t | j  k s' t  d | j d k d  S(   Ni   s%   should be a list of pip package namesi    (   R   R.   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   H  s    s%   
packages:
    - pip:
      - {}
    (   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt)   test_complain_about_pip_deps_not_a_stringG  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sF   t  |   } | j j } d | d | d | g | j k sB t  d  S(   Ns$   %s: invalid package specification: =s*   %s: invalid package specification: foo bars%   %s: invalid pip package specifier: %%(   R   R    R"   R   R   (   R   R%   R!   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   X  s    
s>   
packages:
    - "="
    - foo bar
    - pip:
      - "%"
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt%   test_complain_about_packages_bad_specW  s
    		c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sN   t  |   } | j j d d } | d | d | d g | j k sJ t  d  S(   Ns7   : Environment variable %s is reserved for Conda's use, s,   so it can't appear in the variables section.t   CONDA_ENV_PATHt   CONDA_DEFAULT_ENVt   CONDA_PREFIX(   R   R    R"   R   R   (   R   R%   t   template(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt"   check_complain_about_conda_env_varn  s
    sJ   
variables:
  - CONDA_ENV_PATH
  - CONDA_DEFAULT_ENV
  - CONDA_PREFIX
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt/   test_complain_about_conda_env_in_variables_listm  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sN   t  |   } | j j d d } | d | d | d g | j k sJ t  d  S(   Ns7   : Environment variable %s is reserved for Conda's use, s,   so it can't appear in the variables section.R   R   R   (   R   R    R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s
    sP   
variables:
  CONDA_ENV_PATH: {}
  CONDA_DEFAULT_ENV: {}
  CONDA_PREFIX: {}
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt/   test_complain_about_conda_env_in_variables_dict  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc   
   
   S@ s  t  |   } d t | j  k s' t  t | j  d k sB t  d | j k sW t  d | j k sl t  d | j k s t  d | j k s t  d | j k s t  | j d k s t  | j d } | j d } | j d } | j d } | j d } | j d k st  | j d k s+t  | j d  k s@t  | j	 d! k sUt  | j
 | j f k spt  | j d" k st  | j d k st  | j d# k st  | j	 d$ k st  | j
 | j f k st  | j d% k st  | j d& k s	t  | j	 d' k st  | j d k s3t  | j d( k sHt  | j d) k s]t  | j	 d* k srt  | j
 | f k st  | j d k st  | j d+ k st  | j d, k st  | j	 d- k st  | j
 | | f k st  x | | | | | f D] } t j j |  d | j  } | j |  t |  }	 |	 j
 d. k s_t  |	 j d/ k stt  |	 j | j k st  |	 j | j k st  |	 j | j k st  |	 j	 | j	 k st  qWd  S(0   Ni    i   R?   RO   t	   foo_childt   foo_grandchildt   mixins   global1=1.0s   global2=1.0t   pythont   dogt   catt   zebras   THE FOOt	   univisiont   bunnys
   walrus=1.0s   global2=2.0t   bearR   s   dog=2.0s   global1=2.0t   liont   fisht   abcs
   walrus=2.0s   dog=3.0t   seahorset   nbcs   saved-%s(   s   global1=1.0s   global2=1.0R   R   R   R   (    (   R   (   s   global1=1.0s   global2=1.0(    (   R   (   s   global1=1.0R   s
   walrus=1.0s   global2=2.0(   R   (   R   R   (   s   global2=1.0R   R   R   s   dog=2.0s   global1=2.0R   (   R   (   R   R   (	   R   R   R   s   global1=2.0R   R   s   global2=2.0s
   walrus=2.0s   dog=3.0(   R   R   R   (   R   R   R   R   (    (    (   R   R.   R   R   R   R-   R   R$   R   R   t   inherit_fromt   global_base_env_specR   R   RX   R   t   save_environment_ymlR   t   inherit_from_names(
   R   R%   R?   RO   R   R   R   t   spect   savedt   loaded(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_environments  sh      s  
packages:
  - global1=1.0
  - global2=1.0
channels:
  - univision

env_specs:
  foo:
    description: "THE FOO"
    packages:
       - python
       - dog
       - cat
       - zebra
  bar: {}
  foo_child:
    inherit_from: foo
    packages:
       - dog=2.0
       - global1=2.0
       - lion
       - pip:
          - fish
    channels:
       - abc
  mixin:
    packages:
       - bunny
       - walrus=1.0
       - global2=2.0
       - pip:
         - bear
    channels:
       - hbo
  foo_grandchild:
    inherit_from: [foo_child, mixin]
    packages:
       - walrus=2.0
       - dog=3.0
       - pip:
         - seahorse
    channels:
       - nbc
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_load_environments  s    	A.c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s?  t  |   } d t | j  k s' t  t | j  d k sB t  d | j k sW t  d | j k sl t  d | j k s t  | j d k s t  | j d } | j d } | j d } | j d k s t  | j d k s t  | j d k s t  | j d k st  | j d k s&t  | j d k s;t  d  S(   Ni    i   R9   R?   RO   s   dead-parrott   elephantR   R   R   R   R   R~   t   cartoonsR   (   s   dead-parrotR   R   (   s   dead-parrotR   R   R   R   R   (   s   dead-parrotR   (   R~   R   (   R~   R   (   R~   (   R   R.   R   R   R   R-   R   R   (   R   R%   R9   R?   RO   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s     s  
packages:
  - dead-parrot
  - elephant

channels:
  - mtv

env_specs:
  foo:
    packages:
       - python
       - dog
       - cat
       - zebra
    channels:
       - hbo
  bar: {}
  default:
    packages:
      - lion
    channels:
      - cartoons
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt(   test_load_environments_merging_in_global  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } d t | j  k s' t  t | j  d k sB t  d | j k sW t  d | j k sl t  d | j k s t  | j d k s t  | j d } | j d } | j d } | j d k s t  | j d k s t  | j d k s t  d  S(	   Ni    i   R?   RO   R9   (    (    (    (   R   R.   R   R   R   R-   R   (   R   R%   R?   RO   R9   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   8  s    s2   
env_specs:
  foo: {}
  bar: {}
  default: {}
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt?   test_load_environments_default_always_default_even_if_not_first7  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s<   t  |   } d t | j  k s' t  d | j d k d  S(   Ni   sE   should be a directory from environment name to environment attributesi    (   R   R.   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   S  s    s   
env_specs: 42
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt+   test_complain_about_environments_not_a_dictR  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s2   t  |   } d | j j g | j k s. t  d  S(   Ns;   %s: 'description' field of environment foo must be a string(   R   R    R"   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   `  s    s-   
env_specs:
   foo:
     description: []
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt6   test_complain_about_non_string_environment_description_  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sD   t  |   } d t | j  k s' t  d | j d k s@ t  d  S(   Ni   s6   inherit_from: value should be a list of env spec namesi    (   R   R.   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   p  s    s.   
env_specs:
   foo:
     inherit_from: {}
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt+   test_complain_about_non_string_inherit_fromo  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s<   t  |   } d t | j  k s' t  d | j d k d  S(   Ni   s   should be a string not '42'i    (   R   R.   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s    s   
packages:
    - 42
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt0   test_complain_about_packages_list_of_wrong_thing  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s2   t  |   } d | j j g | j k s. t  d  S(   Nsb   %s: name 'bar' in 'inherit_from' field of env spec foo does not match the name of another env spec(   R   R    R"   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s    s0   
env_specs:
   foo:
      inherit_from: bar
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt6   test_complain_about_env_spec_inherits_from_nonexistent  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s2   t  |   } d | j j g | j k s. t  d  S(   NsU   %s: 'inherit_from' fields create circular inheritance among these env specs: bar, foo(   R   R    R"   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s    sP   
env_specs:
   foo:
      inherit_from: bar
   bar:
      inherit_from: foo
    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt*   test_complain_about_cycle_of_two_env_specs  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s2   t  |   } d | j j g | j k s. t  d  S(   NsZ   %s: 'inherit_from' fields create circular inheritance among these env specs: a, b, c, d, e(   R   R    R"   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s    s   
env_specs:
   a:
      inherit_from: b
   b:
      inherit_from: c
   c:
      inherit_from: d
   d:
      inherit_from: e
   e:
      inherit_from: a

    (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt+   test_complain_about_cycle_of_many_env_specs  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sU  t  j j |  t  } t  j j |  s- t  t |   } g  | j k sN t  | j | j	  } d t
 |  k sx t  t | d t  s t  d | d j k s t  t | d t  s t  d | d j k s t  t | d t  s t  t j   } | | d j k st  t   | d j k s6t  t
 | j  d k sQt  d  S(   Ni   i    R+   i   R7   i   (   R   R   RX   R   t   existsR   R   R   R,   R-   R.   RC   R
   R/   R   R   R1   R'   R0   (   R   R!   R%   R,   R2   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt
   check_file  s    s   variables:
  - FOO
  - BAR
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt(   test_load_list_of_variables_requirements  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s  t  j j |  t  } t  j j |  s- t  t |   } g  | j k sN t  | j | j	  } d t
 |  k sx t  t | d t  s t  d | d j k s t  t d d  | d j k s t  t | d t  s t  d | d j k s t  t d d  | d j k s t  t | d t  s9t  t j   } | | d j k s^t  t   | d j k szt  t
 | j  d k st  d  S(	   Ni   i    R+   t   ai   R7   t   bi   (   R   R   RX   R   R   R   R   R   R,   R-   R.   RC   R
   R/   R'   R0   R   R   R1   (   R   R!   R%   R,   R2   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s"    ""s+   variables:
  FOO: { a: 1 }
  BAR: { b: 2 }
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt(   test_load_dict_of_variables_requirements  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  j j |  t  } t  j j |  s- t  t |   } d t | j  k sT t  | j	 | j
  } d t |  k s~ t  d | j d k s t  d | j d k s t  d  S(   Ni   i    s   42 is not a strings   43 is not a stringi   (   R   R   RX   R   R   R   R   R.   R   R,   R-   (   R   R!   R%   R,   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s    s   variables:
  - 42
  - 43
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt&   test_non_string_variables_requirements  s    	
c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  j j |  t  } t  j j |  s- t  t |   } | j | j  } g  | k s] t  d t	 | j
  k sx t  d | j
 d k s t  d  S(   Ni   sB   default value for variable FOO must be null, a string, or a numberi    (   R   R   RX   R   R   R   R   R,   R-   R.   R   (   R   R!   R%   R,   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s    s   variables:
  FOO: true
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt$   test_variable_default_cannot_be_bool  s    		c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  j j |  t  } t  j j |  s- t  t |   } | j | j  } g  | k s] t  d t	 | j
  k sx t  d | j
 d k s t  d  S(   Ni   sB   default value for variable FOO must be null, a string, or a numberi    (   R   R   RX   R   R   R   R   R,   R-   R.   R   (   R   R!   R%   R,   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   !  s    s   variables:
  FOO: []
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt$   test_variable_default_cannot_be_list   s    		c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  j j |  t  } t  j j |  s- t  t |   } | j | j  } g  | k s] t  d t	 | j
  k sx t  d | j
 d k s t  d  S(   Ni   sB   default value for variable FOO must be null, a string, or a numberi    (   R   R   RX   R   R   R   R   R,   R-   R.   R   (   R   R!   R%   R,   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   .  s    s9   
variables:
  FOO:
    default: { encrypted: 'abcdefg' }
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_variable_default_missing_key_field-  s
    		c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  j j |  t  } t  j j |  s- t  t |   } d t | j  k sT t  | j	 | j
  } d t |  k s~ t  d | j d k s t  d  S(   Ni   i    s.   variables section contains wrong value type 42(   R   R   RX   R   R   R   R   R.   R   R,   R-   (   R   R!   R%   R,   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   B  s    s   variables:
  42
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt,   test_variables_requirements_not_a_collectionA  s    		c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } | j | j  } d t |  k s6 t  d t | j  k sQ t  d | j d k sj t  | j d } | j d k s t  | j d k s t  | j	 | j
 j k s t  | j j d  s t  d  S(   Ni    i   s$   anaconda-project.yml: Syntax error: i   i	   s   Syntax error:(   R   R,   R-   R.   R   R   t   problem_objectst   maybe_line_numbert   maybe_column_numbert   maybe_filenameR    R!   t   text_without_filenamet
   startswith(   R   R%   R,   t   problem1(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRR   O  s    s   
^
variables:
  FOO
(   R   R   (   RR   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_corrupted_project_fileN  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } | j | j  } d t |  k s6 t  d t | j  k sQ t  d | j d k sj t  | j d } | j d k s t  | j d k s t  | j	 | j
 j k s t  | j j d  s t  d  S(   Ni    i   s)   anaconda-project-lock.yml: Syntax error: i   i   s   Syntax error:(   R   R,   R-   R.   R   R   R   R   R   R   t	   lock_fileR!   R   R   (   R   R%   R,   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRR   d  s    s   
^
stuff:
  FOO
(   R   R   (   RR   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt    test_corrupted_project_lock_filec  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ   t  |   } d t | j  k s' t  d | j j d f } | | j d k sV t  d  S(   Ni   sW   %s: 'commands:' section should be a dictionary from command names to attributes, not %ri*   i    (   R   R.   R   R   R    R"   (   R   R%   t   expected_error(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_app_entry{  s
    s   commands:
  42
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_non_dict_commands_sectionz  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s^   t  |   } d t | j  k s' t  d d | j j d f } | | j d k sZ t  d  S(   Ni   sI   %s: 'services:' section should be a dictionary from environment variable s   to service type, found %ri*   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s
    s   services:
  42
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_non_dict_services_section  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s]   t  |   } d t | j  k s' t  d | j j d d f } | | j d k sY t  d  S(   Ni   sM   %s: command name '%s' should be followed by a dictionary of attributes not %rR9   i*   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s
    s   commands:
 default: 42
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt#   test_non_string_as_value_of_command  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ   t  |   } d t | j  k s' t  d | j j d f } | | j d k sV t  d  S(   Ni   s3   %s: command '%s' does not have a command line in itR9   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s
    
s   commands:
 default: {}
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_empty_command  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ   t  |   } d t | j  k s' t  d | j j d f } | | j d k sV t  d  S(   Ni   s3   %s: command '%s' does not have a command line in itR9   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR     s
    
s&   commands:
 default:
    foobar: 'boo'
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_command_with_bogus_key  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ   t  |   } d t | j  k s' t  d | j j d f } | | j d k sV t  d  S(   Ni   s6   %s: 'description' field of command %s must be a stringR9   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s
    
s:   commands:
 default:
     unix: 'boo'
     description: []
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt(   test_command_with_non_string_description  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ   t  |   } d t | j  k s' t  d | j j d f } | | j d k sV t  d  S(   Ni   sA   %s: 'supports_http_options' field of command %s must be a booleanR9   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s
    sH   commands:
 default:
     unix: 'boo'
     supports_http_options: 'blah'
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt3   test_command_with_non_boolean_supports_http_options  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ   t  |   } d t | j  k s' t  d | j j d f } | | j d k sV t  d  S(   Ni   sE   %s: 'registers_fusion_function' field of command %s must be a booleanR9   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s
    sL   commands:
 default:
     unix: 'boo'
     registers_fusion_function: 'blah'
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt7   test_command_with_non_boolean_registers_fusion_function  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sc   t  |   } g  | j k s! t  d | j k s6 t  | j d } | j i t d 6k s_ t  d  S(   NR9   t   registers_fusion_function(   R   R   R   t   commandst   extrast   True(   R   R%   t   command(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s
    sJ   commands:
 default:
     unix: 'boo'
     registers_fusion_function: true
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_command_with_extras  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sX   t  |   } g  | j k s! t  | j } | j d k s? t  | j d k sT t  d  S(   Ns   test.pyRK   (   R   R   R   t   default_commandt	   bokeh_appR$   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s
    	sR   commands:
 default:
    bokeh_app: test.py
    description: hi
packages:
 - bokeh
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt$   test_command_with_custom_description  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s>   t  |   } d | j j d f } | g | j k s: t  d  S(   NsN   %s: 'env_spec' field of command %s must be a string (an environment spec name)R9   (   R   R    R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP      s    s7   commands:
 default:
     unix: 'boo'
     env_spec: []
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt%   test_command_with_non_string_env_spec  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s>   t  |   } d | j j d f } | g | j k s: t  d  S(   NsL   %s: env_spec 'boo' for command '%s' does not appear in the env_specs sectionR9   (   R   R    R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    s8   commands:
 default:
     unix: 'boo'
     env_spec: boo
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt&   test_command_with_nonexistent_env_spec  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         @ sR   t  |     d d d g } t t   f d   |   } |   j k sN t  d  S(   Ns;   %s: 'description' field of command default must be a stringsY   %s: env_spec 'nonexistent' for command 'default' does not appear in the env_specs sectionsR   %s: command 'default' has multiple commands in it, 'notebook' can't go with 'unix'c         @ s   |    j  j S(   N(   R    R"   (   t   e(   R%   (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRB   !  R   (   R   t   listt   mapR   R   (   R   t   expected_errors(    (   R%   sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    	sv   
commands:
  default:
     unix: bar
     notebook: foo.ipynb
     env_spec: nonexistent
     description: []
        (   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_command_with_many_problems_at_once  s    	
	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j } | j d k s? t  | j d k sT t  | j d  k si t  | j d  k s~ t  d  S(   NR9   RO   (	   R   R   R   R   R   t   unix_shell_commandlinet   windows_cmd_commandlineR   t   conda_app_entry(   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   2  s    	s7   commands:
 default:
    foobar: 'boo'

    unix: 'bar'
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt&   test_command_with_bogus_key_and_ok_key1  s
    	
c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } d t | j  k s' t  d | j j d f } d | j j d f } | | j d k sl t  | | j d k s t  d  S(   Ni   s3   %s: command '%s' does not have a command line in itR?   RO   i    i   (   R   R.   R   R   R    R"   (   R   R%   t   expected_error_1t   expected_error_2(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   C  s    

s   commands:
 foo: {}
 bar: {}
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_two_empty_commandsB  s    	
c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s`   t  |   } d t | j  k s' t  d | j j d d d f } | | j d k s\ t  d  S(   Ni   s;   %s: command '%s' attribute '%s' should be a string not '%r'R9   R   i*   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR   S  s
    s,   commands:
 default:
    conda_app_entry: 42
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt+   test_non_string_as_value_of_conda_app_entryR  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s`   t  |   } d t | j  k s' t  d | j j d d d f } | | j d k s\ t  d  S(   Ni   s;   %s: command '%s' attribute '%s' should be a string not '%r'R9   t   unixi*   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_shell_non_dicta  s
    s!   commands:
 default:
    unix: 42
(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt!   test_non_string_as_value_of_shell`  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  t d |   } | j	 |  } t
 j j | d | d g  } t d |  } | j | t
 j j |  d  d g k s t  | j t k s t  d  S(   Ns
   test.ipynbt   PROJECT_DIRt   PATHs   jupyter-notebooks/   --NotebookApp.default_url=/notebooks/test.ipynb(   R   R   t   notebookR   R   R   R   R   R   t   exec_info_for_environmentR   t   pathsepRX   R   t   argsR   t   shellt   False(   R   R%   R   t   environt   cmd_execR   t   jupyter_notebook(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_notebook_commandn  s    	 $s-   commands:
 default:
    notebook: test.ipynb
(   R   R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_notebook_commandm  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  t d |   } | j	 | d d d g } t
 j j | d | d g  } t d |  } | j | t
 j j |  d  d d d g k s t  | j t k s
t  d  S(	   Ns
   test.ipynbR   t
   extra_argsR?   RO   R   s   jupyter-notebooks/   --NotebookApp.default_url=/notebooks/test.ipynb(   R   R   R   R   R   R   R   R   R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt!   check_notebook_command_extra_args  s    	 *s-   commands:
 default:
    notebook: test.ipynb
(   R   R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt    test_notebook_command_extra_args  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j sx t  t	 d |   } | j
 | d d d d d d d	 d
 d d d d d d g } t j j | d | d g  } t d |  } | j | t j j |  d  d d d d d d d d	 d d d d g k sAt  | j t k sVt  d  S(   Ns
   test.ipynbR   R  R?   RO   s   --anaconda-project-url-prefixt   blahs   --anaconda-project-portt   1234s   --anaconda-project-hosts   example.coms   --anaconda-project-no-browsers3   --anaconda-project-iframe-hosts=foo1.com *.foo2.coms   --anaconda-project-use-xheaderss   --anaconda-project-addresss   1.2.3.4R   s   jupyter-notebooks/   --NotebookApp.default_url=/notebooks/test.ipynbs   --ips   --NotebookApp.tornado_settings=sZ   { 'headers': { 'Content-Security-Policy': "frame-ancestors 'self' foo1.com *.foo2.com" } }s   --no-browsers   --ports   --NotebookApp.base_url=blahs!   --NotebookApp.trust_xheaders=True(   R   R   R   R   R   R   R   R   t   supports_http_optionsR   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s0    		 s-   commands:
 default:
    notebook: test.ipynb
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt,   test_notebook_command_with_project_http_args  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s9  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j sy t  t	 d |   } | j
 | d d d d d d d	 d
 d d d d d g } t j j | d | d g  } t d |  } | j | t j j |  d  d d g k s t  | j t k s5t  d  S(   Ns
   test.ipynbR   R  R?   RO   s   --anaconda-project-url-prefixR	  s   --anaconda-project-portR
  s   --anaconda-project-hosts   example.coms   --anaconda-project-no-browsers   --anaconda-project-use-xheaderss   --anaconda-project-addresss   1.2.3.4R   s   jupyter-notebook(   R   R   R   R   R   R   R   R   R  R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s"    		 0sN   commands:
 default:
    notebook: test.ipynb
    supports_http_options: false
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt0   test_notebook_command_disabled_project_http_args  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sS  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j sx t  t	 d |   } | j
 | d d d d d d d	 d
 d d d d g } t j j | d | d g  } t d |  } | j | t j j |  d  d d d d d d d	 d
 d d d d g k s:t  | j t k sOt  d  S(   Ns
   test.ipynbR   R  s   --R?   RO   s   --anaconda-project-url-prefixR	  s   --anaconda-project-portR
  s   --anaconda-project-hosts   example.coms   --anaconda-project-no-browsers   --anaconda-project-use-xheadersR   s   jupyter-notebooks/   --NotebookApp.default_url=/notebooks/test.ipynb(   R   R   R   R   R   R   R   R   R  R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s*    		 s-   commands:
 default:
    notebook: test.ipynb
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt;   test_notebook_command_project_http_args_after_double_hyphen  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s/  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  t d |   } | j	 | d d d d d d d	 d
 g } t
 j j | d | d g  } t d |  } | j | t
 j j |  d  d d d d d d d d d g k st  | j t k s+t  d  S(   Ns
   test.ipynbR   R  R?   RO   s"   --anaconda-project-url-prefix=blahs   --anaconda-project-port=1234s#   --anaconda-project-host=example.coms   --anaconda-project-no-browsers"   --anaconda-project-address=1.2.3.4R   s   jupyter-notebooks/   --NotebookApp.default_url=/notebooks/test.ipynbs   --ips   1.2.3.4s   --no-browsers   --portR
  s   --NotebookApp.base_url=blah(   R   R   R   R   R   R   R   R   R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s&    	 !s-   commands:
 default:
    notebook: test.ipynb
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt@   test_notebook_command_with_project_http_args_separated_by_equals  s
    	c          C@ sD   d   }  t  i d t 6d d 6d d 6d d 6d d 6d d 6|   d  S(	   Nc         S@ s  t  |   } d | j j g | j k s. t  | j d j |  | j j   d | j k sd t  d | j k sy t  t	 | j  d k s t  | j
 j d k s t  | j d } | j d k s t  | j d  k s t  | j d  k s t  | j d  k st  t j j |  d  } t d |   } | j |  } t j j | d | d g  } t d |  } | j | | d	 g k st  | j t k st  d  S(
   Ns'   %s: No command runs notebook test.ipynbi    s
   test.ipynbR9   i   R   R   s   jupyter-notebooks/   --NotebookApp.default_url=/notebooks/test.ipynb(   R   R    R"   t   suggestionsR   t   suggestion_objectst   fixRp   R   R.   R   R   R   R   R   R   R   R   R   RX   R   R   R   R   R   R   R   (   R   R%   R   t   expected_nb_pathR  R  R   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_notebook_guess_command'  s(    " s`   commands:
 default:
    unix: echo 'pass'
services:
    REDIS_URL: redis
packages: ['notebook']
s   {}s
   test.ipynbs   envs/should_ignore_this.ipynbs!   services/should_ignore_this.ipynbs   .should_ignore_dotfile.ipynbs   .should_ignore_dotdir/foo.ipynb(   R   R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_notebook_guess_command&  s    	c          C@ sK   d   }  t  i d t 6d d 6d d 6d d 6d d 6d d 6d d	 6|   d  S(
   Nc         S@ s   t  |   } d | j j g | j k s. t  | j d j |  | j j   g  | j k sd t  t	 | j
  d k s t  | j d  k	 s t  | j j d k s t  d d d d d d	 g t g  | j
 D] } | ^ q  k s t  d  S(
   NsT   %s: No commands run notebooks a.ipynb, b.ipynb, c.ipynb, d/d.ipynb, e.ipynb, f.ipynbi    i   s   a.ipynbs   b.ipynbs   c.ipynbs	   d/d.ipynbs   e.ipynbs   f.ipynb(   R   R    R"   R  R   R  R  Rp   R   R.   R   R   R   R   RE   (   R   R%   t   c(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt+   check_notebook_guess_command_can_be_defaultU  s    s   packages: ['notebook']
s   {}s   a.ipynbs   b.ipynbs   c.ipynbs	   d/d.ipynbs   e.ipynbs   f.ipynb(   R   R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt*   test_notebook_guess_command_can_be_defaultT  s    	c         @ s'     f d   } t  i d t 6|  d  S(   Nc         @ s   t  |   } | j } | j d k s* t  t d |   } d   }   j d |  | j |  } | j d t j	 j
 |  d  d g k s t  | j t k s t  d  S(   Ns
   test.ipynbR   c          _@ s   d  S(   N(   R   (   R   t   kwargs(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   mock_find_executable~  s    s   distutils.spawn.find_executables   jupyter-notebooks/   --NotebookApp.default_url=/notebooks/test.ipynb(   R   R   R   R   R   Ra   R   R   R   R   RX   R   R   (   R   R%   R   R  R  R  (   Rb   (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR  w  s    		$s-   commands:
 default:
    notebook: test.ipynb
(   R   R   (   Rb   R  (    (   Rb   sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt)   test_notebook_command_jupyter_not_on_pathv  s
    c          C@ sK   d   }  t  i d t 6d d 6d d 6d d 6d d 6d	 d
 6d d 6|   d  S(   Nc         S@ s  t  |   } d | j j g | j k s. t  | j d j |  | j j   d | j k sd t  d | j k sy t  d | j k s t  t	 | j  d k s t  | j
 j d k s t  | j g  k s t  d d g | j j d d g  k s t  d  S(	   Ns9   %s: No commands run notebooks foo/test2.ipynb, test.ipynbi    s
   test.ipynbs   foo/test2.ipynbR9   i   t   skip_importst	   notebooks(   R   R    R"   R  R   R  t   no_fixRp   R   R.   R   R   t	   get_value(   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    s`   commands:
 default:
    unix: echo 'pass'
services:
    REDIS_URL: redis
packages: ['notebook']
s   {}s
   test.ipynbs   foo/test2.ipynbs"   pretend this is more notebook datas   envs/should_ignore_this.ipynbs!   services/should_ignore_this.ipynbs   moar fake notebooks   .should_ignore_dotfile.ipynbs   still moar fake notebooks   .should_ignore_dotdir/foo.ipynb(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt+   test_multiple_notebooks_suggestion_rejected  s    	c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  d | j j g | j k sC t  | j j d d g t  | j j   g  | j k s~ t  g  | j k s t  d  S(   Ns'   %s: No command runs notebook test.ipynbR  R  (	   R   R   R   R    R"   R  Ro   R   Rp   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    "s`   commands:
 default:
    unix: echo 'pass'
services:
    REDIS_URL: redis
packages: ['notebook']
s   {}s
   test.ipynb(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_skip_all_notebook_imports  s
    	c          C@ s%   d   }  t  i d d t 6|   d  S(   Nc         S@ sY   t  |   } d t | j  k s' t  d | j d k s@ t  g  | j k sU t  d  S(   Ni   s1   'skip_imports: notebooks:' value should be a listi    (   R   R.   R   R   R  (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    s4   commands:
 default:
    unix: echo 'pass'
services:
sH     REDIS_URL: redis
packages: ['notebook']
skip_imports:
  notebooks: {}
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt#   test_invalid_skip_imports_notebooks  s
    	c          C@ sD   d   }  t  i d t 6d d 6d d 6d d 6d d	 6d
 d 6|   d  S(   Nc         S@ s   t  |   } d | j j g | j k s. t  | j d j |  | j j   d | j k sd t  d | j k sy t  t	 | j  d k s t  | j
 j d k s t  | j g  k s t  d g | j j d d g  k s t  d  S(   Ns'   %s: No command runs notebook test.ipynbi    s
   test.ipynbR9   i   R  R  (   R   R    R"   R  R   R  R  Rp   R   R.   R   R   R  (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    "s`   commands:
 default:
    unix: echo 'pass'
services:
    REDIS_URL: redis
packages: ['notebook']
s   {}s
   test.ipynbs"   pretend this is more notebook datas   envs/should_ignore_this.ipynbs!   services/should_ignore_this.ipynbs   moar fake notebooks   .should_ignore_dotfile.ipynbs   still moar fake notebooks   .should_ignore_dotdir/foo.ipynb(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt(   test_single_notebook_suggestion_rejected  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ   t  |   } d t | j  k s' t  d | j j d f } | | j d k sV t  d  S(   Ni   sM   %s: command '%s' has multiple commands in it, 'notebook' can't go with 'unix'R9   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_notebook_conflict_command  s
    sB   commands:
 default:
    notebook: test.ipynb
    unix: echo 'pass'(   R   R   (   R$  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_notebook_command_conflict  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sZ   t  |   } d t | j  k s' t  d | j j d f } | | j d k sV t  d  S(   Ni   sN   %s: command '%s' has multiple commands in it, 'bokeh_app' can't go with 'unix'R9   i    (   R   R.   R   R   R    R"   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_bokeh_conflict_command  s
    s?   commands:
 default:
    bokeh_app: app.py
    unix: echo 'pass'(   R   R   (   R&  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_bokeh_command_conflict
  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j d  k s~ t  t	 d |   } | j
 |  } t j j | d | d g  } t d |  } | j | d t j j |  d  d g k s t  | j t k st  d  S(   Ns   test.pyR   R   t   bokeht   serves   --show(   R   R   R   R   R   R   R   R   R   R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R(  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_bokeh_command  s    	 0s+   commands:
 default:
    bokeh_app: test.py
(   R   R   (   R*  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_bokeh_command  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j d  k s~ t  t	 d |   } | j
 | d d g } t j j | d | d g  } t d |  } | j | d t j j |  d  d d g k st  | j t k st  d  S(	   Ns   test.pyR   R  s   --fooR   R(  R)  s   --show(   R   R   R   R   R   R   R   R   R   R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R(  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_bokeh_command_extra_args0  s    	 3s+   commands:
 default:
    bokeh_app: test.py
(   R   R   (   R,  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt"   test_bokeh_command_with_extra_args/  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sh  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j d  k s~ t  | j	 s t  t
 d |   } | j | d d d d d d d	 d
 d d d d d g } t j j | d | d g  } t d |  } | j | d t j j |  d  d d d d
 d d d d d d g k sOt  | j t k sdt  d  S(   Ns   test.pyR   R  s   --foos   --anaconda-project-url-prefixR	  s   --anaconda-project-portR
  s   --anaconda-project-hosts   example.coms   --anaconda-project-no-browsers3   --anaconda-project-iframe-hosts=foo1.com *.foo2.coms   --anaconda-project-use-xheaderss   --anaconda-project-addresss   1.2.3.4R   R(  R)  s	   --addresss   --hosts   --ports   --prefixs   --use-xheaders(   R   R   R   R   R   R   R   R   R   R  R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R(  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   G  s,    		 $s+   commands:
 default:
    bokeh_app: test.py
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt)   test_bokeh_command_with_project_http_argsF  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc      	   S@ sA  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j d  k s~ t  | j	 s t  t
 d |   } | j | d d d d d g } t j j | d | d g  } t d |  } | j | d	 t j j |  d  d
 d d
 d d g k s(t  | j t k s=t  d  S(   Ns   test.pyR   R  s   --anaconda-project-hosts   example.coms   example2.comR   R(  R)  s   --hosts   --show(   R   R   R   R   R   R   R   R   R   R  R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R(  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   j  s"    	 0s+   commands:
 default:
    bokeh_app: test.py
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt*   test_bokeh_command_with_multiple_host_argsi  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s9  t  |   } | j } | j d  k s* t  | j d k s? t  | j d  k sT t  | j d  k si t  | j d  k s~ t  | j	 s t  t
 d |   } | j | d d d d d g } t j j | d | d g  } t d |  } | j | t j j |  d  d	 d
 d g k s t  | j t k s5t  d  S(   Ns
   test.ipynbR   R  s   --anaconda-project-iframe-hostss   example.coms   foo1.com *.foo2.comR   s   jupyter-notebooks/   --NotebookApp.default_url=/notebooks/test.ipynbs   --NotebookApp.tornado_settings=sf   { 'headers': { 'Content-Security-Policy': "frame-ancestors 'self' example.com foo1.com *.foo2.com" } }(   R   R   R   R   R   R   R   R   R   R  R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   t   jupyter(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s*    		 s-   commands:
 default:
    notebook: test.ipynb
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt2   test_bokeh_command_with_multiple_iframe_hosts_args  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sS  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j d  k s~ t  | j	 s t  t
 d |   } | j | d d d d d d g } t j j | d | d	 g  } t d
 |  } | j | d t j j |  d  d d d d d d d d d d g k s:t  | j t k sOt  d  S(   Ns   test.pyR   R  s   --foos   --anaconda-project-url-prefixs   --anaconda-project-ports   --anaconda-project-hosts   --anaconda-project-addressR   R(  R)  s	   --addressR   s   --hosts   --shows   --ports   --prefix(   R   R   R   R   R   R   R   R   R   R  R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R(  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s(    	 -s+   commands:
 default:
    bokeh_app: test.py
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt;   test_bokeh_command_with_value_missing_for_project_http_args  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sE  t  |   } | j } | j d k s* t  | j d  k s? t  | j d  k sT t  | j d  k si t  | j d  k s~ t  | j	 s t  t
 d |   } | j | d d d d d d d	 d
 d d g	 } t j j | d | d g  } t d |  } | j | d t j j |  d  d g k s,t  | j t k sAt  d  S(   Ns   test.pyR   R  s   --foos   --anaconda-project-url-prefixR	  s   --anaconda-project-portR
  s   --anaconda-project-hosts   example.coms   --anaconda-project-no-browsers   --anaconda-project-use-xheadersR   R(  R)  (   R   R   R   R   R   R   R   R   R   R  R   R   R   R   RX   R   R   R   R   R   (   R   R%   R   R  R  R   R(  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s$    		 0sL   commands:
 default:
    bokeh_app: test.py
    supports_http_options: false
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt2   test_bokeh_command_with_disabled_project_http_args  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j } | j d k s? t  | j d k sT t  d t | j  k so t  d | j k s t  | j d | k s t  d  S(   NR?   s   foo bar ${PREFIX}i   (   R   R   R   R   R   R   R.   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_run_argv  s    	s9   
commands:
  foo:
    conda_app_entry: foo bar ${PREFIX}
(   R   R   (   R4  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt)   test_run_argv_from_project_file_app_entry  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j } | j d k s? t  | j d k sT t  d t | j  k so t  d | j k s t  | j d | k s t  d  S(   NR?   s   foo bar ${PREFIX}i   (   R   R   R   R   R   R   R.   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR4    s    	s.   
commands:
  foo:
    unix: foo bar ${PREFIX}
(   R   R   (   R4  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt%   test_run_argv_from_project_file_shell  s
    	c         @ s'     f d   } t  i d t 6|  d  S(   Nc         @ s   t  |   } g  | j k s! t  | j } | j d k s? t  | j d k sT t  | j d  k si t  d t | j	  k s t  d | j	 k s t  | j	 d | k s t  d   }   j
 d |  t d |   } | j |  } | j s t  d  S(   NR?   s   foo bar %CONDA_DEFAULT_ENV%i   c           S@ s   d S(   Nt   Windows(    (    (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   mock_platform_system  s    s   platform.systemR   (   R   R   R   R   R   R   R   R   R.   R   Ra   R   t!   default_exec_info_for_environmentR   (   R   R%   R   R8  R  t	   exec_info(   Rb   (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR4    s    		s;   
commands:
  foo:
    windows: foo bar %CONDA_DEFAULT_ENV%
(   R   R   (   Rb   R4  (    (   Rb   sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_run_argv_from_project_file_windows  s
    c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sp   t  |   } g  | j k s! t  | j } | d  k s< t  t d |   } | j |  } | d  k sl t  d  S(   NR   (   R   R   R   R   R   R   R9  (   R   R%   R   R  R:  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_exec_info4  s    	t   
(   R   R   (   R<  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_exec_info_is_none_when_no_commands3  s    	c          C@ sR   d   }  d d  l  } d } | j   d k r6 d } n  t i d | t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j } | d  k	 s< t  | j d k sQ t  t d |   } | j |  } | d  k s t  d  S(   NR?   R   (   R   R   R   R   R   R   R   R9  (   R   R%   R   R  R:  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyR<  D  s    	i    t   windowsR7  R   s   
commands:
  foo:
    %s: foo
(   t   platformt   systemR   R   (   R<  R@  t   not_us(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt8   test_exec_info_is_none_when_command_not_for_our_platformC  s    		R7  s   echo_stuff.bats   echo_stuff.shs%   conda_app_entry: %s ${PREFIX} foo barc         @ sN   t           f d   } t i d | t 6d d 6d d 6|  d  S(   Nc   	   	   @ s:  d  k r |   d <n  t  j t  j j |  t  t j t j Bt j B d  }   rq t  j
   } t  j |   n  z t |   } g  | j k s t  | j  d  } | j r | j d } n	 | j } t j | d | j d  j   } | j    j d |   k st  Wd  | d  k	 rQt d | |  f d t j t  j |  n  t  j j |  d	  } d
 } t d | t t  j j |   f d t j t d | t  j |  f  t d |  t  j |   f  x]| d k r4t  j j |  r4y( t d | d t j t  j |  WnM t k
 rm} t d | t |  f d t j t j  d  | d } qXt d | d t j t d | t t  j j |   f d t j y! t d | t  j |  f  Wn t k
 rt d  n Xy* t d |  t  j! |   f d t j Wqt k
 r0qXqWXd  S(   NR   R  i    R   R   R   s   Changing back to %s from %st   files   echo_stuff.bati   s   os.path.exists(%s) = %ss   before remove, os.stat(%s) = %rs   Attempting to remove %ss   Failed to remove %s: %si   s#   os.remove did not throw removing %ss%   after remove, os.path.exists(%s) = %ss   after remove, os.stat(%s) = %rs'   after remove, could not stat the scripts   after remove, files in %s: %r("   R   t   chmodR   RX   t
   echo_stufft   statt   S_IRUSRt   S_IWUSRt   S_IXUSRR   t   getcwdt   chdirR   R   R   R9  R   R   t
   subprocesst   check_outputt   decodet   stript   formatR   t   syst   stderrt   reprR   t   removet	   Exceptiont   strt   timet   sleept   listdir(	   R   t   old_dirR%   R:  R   t   outputt	   batscriptt   attemptsR   (   RL  R  t   expected_outputR  (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_echo_outputk  sX    0		$(/!#"
!*s   
commands:
  default:
    %s
s   #!/bin/sh
echo "$*"
s   echo_stuff.shs   
@echo off
echo %*
s   echo_stuff.bat(   R   R   R   (   R  R_  RL  t   command_lineR  R`  (    (   RL  R  R_  R  sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   _run_argv_for_environmentd  s    6c          C@ s*   t  j t j  }  t t   d |   d  S(   Ns
   %s foo bar(   R   t   environ_get_prefixR   R  Rb  R'   (   t   prefix(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_run_command_in_project_dir  s    c          C@ s3   t  j t j  }  t t   d |  d d g d  S(   Ns   %s foo bar bazR  t   baz(   R   Rc  R   R  Rb  R'   (   Rd  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt*   test_run_command_in_project_dir_extra_args  s    c         C@ s`   t  j   d k r  t d  d  St j t j  } d t j   } t t	   d | d | d  S(   NR7  s   Cannot test shell on Windowss2   unix: "${PROJECT_DIR}/echo_stuff.sh ${%s} foo bar"s
   %s foo barRa  (
   R@  RA  R   R   Rc  R   R  R1   Rb  R'   (   Rb   Rd  Ra  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt*   test_run_command_in_project_dir_with_shell  s    
c         C@ si   t  j   d k r  t d  d  St j t j  } d t j   } t t	   d | d | d d g d  S(   NR7  s   Cannot test shell on Windowss2   unix: "${PROJECT_DIR}/echo_stuff.sh ${%s} foo bar"s   %s foo bar bazRa  R  Rf  (
   R@  RA  R   R   Rc  R   R  R1   Rb  R'   (   Rb   Rd  Ra  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt5   test_run_command_in_project_dir_with_shell_extra_args  s    
c         C@ se   t  j   d k r  t d  d  St j t j  } d j t j    } t	 t
   d | d | d  S(   NR7  s   Cannot test windows cmd on unixs9   windows: "\"%PROJECT_DIR%\\echo_stuff.bat\" %{}% foo bar"s
   %s foo barRa  (   R@  RA  R   R   Rc  R   R  RQ  R1   Rb  R'   (   Rb   Rd  Ra  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt,   test_run_command_in_project_dir_with_windows  s    
c         C@ sn   t  j   d k r  t d  d  St j t j  } d j t j    } t	 t
   d | d | d d g d  S(   NR7  s   Cannot test windows cmd on unixs9   windows: "\"%PROJECT_DIR%\\echo_stuff.bat\" %{}% foo bar"s   %s foo bar bazRa  R  Rf  (   R@  RA  R   R   Rc  R   R  RQ  R1   Rb  R'   (   Rb   Rd  Ra  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt7   test_run_command_in_project_dir_with_windows_extra_args  s    
c       
   C@ sI   t  j t j  }  t t   d |  d t d d t j j d t	  d  S(   Ns
   %s foo barRL  Ra  s%   conda_app_entry: %s ${PREFIX} foo bart   .(
   R   Rc  R   R  Rb  R'   R   R   RX   RF  (   Rd  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt6   test_run_command_in_project_dir_and_cwd_is_project_dir  s    
c           C@ s&   t  t d d d d d d  d  d  S(   NR   s
   /someplaceR   R   s   /someplace foo bar(   Rb  R'   (    (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt.   test_run_command_in_project_dir_with_conda_env  s    c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  d |   } t |   } g  | j k s0 t  | j |  } t j | j d | j d t j	 j
   } | j d  s~ t  d  S(   NR   R   RS  t   Python(   R   R   R   R   R9  RM  RN  R   R   t   STDOUTRO  R   (   R   R  R%   R:  R\  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_python_version_output  s    *s<   
commands:
  default:
    conda_app_entry: python --version
(   R   R   (   Rq  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt"   test_run_command_is_on_system_path  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc      
   S@ s   d d  l  } t d |   } t |   } g  | j k s< t  | j |  } | j d d k sd t  y | Wn t k
 r t } n Xt	 j
 |  / } t j | j d t j d | j j   Wd  QX| j j  | j k s t  d  S(   Ni    R   s   this-command-does-not-existRS  R   (   t   errnoR   R   R   R   R9  R   t	   NameErrorR^   t   pytestt   raisesRM  RN  Rp  R   RO  t   valuet   ENOENT(   R   Rs  R  R%   R:  t   FileNotFoundErrort   excinfo(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_error_on_nonexistent_path	  s    
.sG   
commands:
  default:
    conda_app_entry: this-command-does-not-exist
(   R   R   (   R{  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_run_command_does_not_exist	  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  t d |   } t j   } xn d | d f D]] } t |  } | | =t j t	   } | j
 |  Wd  QXd | t | j  k sL t  qL Wd  S(   NR   R   s   %s must be set(   R   R   R   R   R   R1   R   Ru  Rv  t
   ValueErrorR9  RT  Rw  (   R   R%   R  t	   conda_varR@   t   environ_copyRz  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_run_with_stuff_missing 	  s    s/   
commands:
  default:
    conda_app_entry: foo
(   R   R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt/   test_run_command_stuff_missing_from_environment	  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } i t j j |   d 6t j j |   d 6d d 6t d 6i  d 6i i g  d 6g  d 6d	 d 6t d
 6g  d 6i  d 6i  d 6i  d 6d 6d 6} | | j   k s t  d  S(   NR   R#   R   R$   t   anaconda_project_versionR   R   t   packagest   Defaultt   lockedt	   platformst	   variablest	   downloadst   servicesR9   R   (   R   R   R   R"   R   R   t   publication_infoR   (   R   R%   t   expected(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt!   check_publication_info_from_empty7	  s$    s6   
env_specs:
  default:
    description: "Default"
    (   R   R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt,   test_get_publication_info_from_empty_project6	  s    	s+  
name: foo bar
description: "A very complicated project."

commands:
  foo:
    unix: echo hi
    description: "say hi"
    supports_http_options: true
  bar:
    windows: echo boo
    env_spec: lol
  baz:
    conda_app_entry: echo blah
  myapp:
    bokeh_app: main.py
    env_spec: woot
  foo.ipynb:
    description: 'Notebook foo.ipynb'
    notebook: foo.ipynb
    registers_fusion_function: true

packages:
  - foo

channels:
  - bar

env_specs:
  default:
    description: "Default"
    packages:
      - notebook
  woot:
    packages:
      - blah
      - bokeh
    channels:
      - woohoo
  w00t:
    description: "double 0"
    packages:
      - something
  lol: {}

downloads:
  FOO: https://example.com/blah

services:
  REDIS_URL: redis

variables:
  SOMETHING: {}
  SOMETHING_ELSE:
     default: 42
c          C@ s/   d   }  t  i t t 6d d 6d d 6|   d  S(   Nc         S@ s  t  |   } i d d 6d d 6d d 6t d 6i i d d 6d	 d
 6d d 6t d 6d 6i d d 6d d
 6t d 6d 6i d d 6t d 6d d
 6d d 6t d 6d 6i d d 6d d 6d d
 6t d 6d 6i d d 6d d 6d d
 6t d 6t d 6d 6d 6i i d g d 6d d g d  6d! d 6t d" 6d# d$ d% g d& 6i i t d' 6d( d) 6d* d 6d+ d, 6d( 6d- 6i i t d' 6d. d) 6d/ d 6d. 6i t d' 6d0 d) 6d1 d 6d2 d 6d0 6d3 6i i d4 d) 6d5 d 6d6 d7 6t d' 6d4 6d8 6d 6i d g d 6d g d  6d	 d 6t d" 6d# d$ d% g d& 6i i t d' 6d( d) 6d* d 6d+ d, 6d( 6d- 6i i t d' 6d. d) 6d/ d 6d. 6i t d' 6d0 d) 6d1 d 6d2 d 6d0 6d3 6i i d4 d) 6d5 d 6d6 d7 6t d' 6d4 6d8 6d	 6i d g d 6d d9 g d  6d: d 6t d" 6d# d$ d% g d& 6i i t d' 6d( d) 6d* d 6d+ d, 6d( 6d- 6i i t d' 6d. d) 6d/ d 6d. 6i t d' 6d0 d) 6d1 d 6d2 d 6d0 6d3 6i i d4 d) 6d5 d 6d6 d7 6t d' 6d4 6d8 6d; 6i d d< g d 6d d= d> g d  6d d 6t d" 6d# d$ d% g d& 6i i t d' 6d( d) 6d* d 6d+ d, 6d( 6d- 6i i t d' 6d. d) 6d/ d 6d. 6i t d' 6d0 d) 6d1 d 6d2 d 6d0 6d3 6i i d4 d) 6d5 d 6d6 d7 6t d' 6d4 6d8 6d 6d? 6} | | j   k set  t | j  d@ k st  d  S(A   Ns   foo barR   s   foo-barR#   s   A very complicated project.R$   R  s   echo boot   lolt   env_specR?  R  RO   s	   echo blahR9   Rf  s   say his   echo hiR   R?   s   Bokeh app main.pys   main.pyR   t   woott   myapps   Notebook foo.ipynbs	   foo.ipynbR   R   R   R   R  R  R  s   linux-64s   osx-64s   win-64R  t	   encryptedR+   R5   s-   A downloaded file which is referenced by FOO.s   https://example.com/blaht   urlR  t	   SOMETHINGs+   SOMETHING environment variable must be set.t   SOMETHING_ELSEs0   SOMETHING_ELSE environment variable must be set.R<   R  t	   REDIS_URLsA   A running Redis server, located by a redis: URL set as REDIS_URL.t   redist   typeR  t	   somethings   double 0t   w00tt   woohooR	  R(  R   i    (   R   R   R   R   R  R   R.   R  (   R   R%   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt#   check_publication_info_from_complex	  s(   



R   s   main.pys	   foo.ipynb(   R   t   _complicated_project_contentsR   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt.   test_get_publication_info_from_complex_project	  s    	c          C@ s/   d   }  t  i t t 6d d 6d d 6|   d  S(   Nc         S@ ss  t  |   } g  | j k s! t  | j } | j | d d } t |  d k sW t  | d j d k sp t  | j | d t } t |  d k s t  t | d t  s t  | j | d t	 } t |  d k s t  t | d t	  s t  | j | d t
 } t |  d k s)t  t | d t
  sBt  | j | d t d d } g  | k sot  d  S(   NR/   R  i   i    t   klass(   R   R   R   R-   t   find_requirementsR.   R/   R   RC   R   R   (   R   R%   t	   spec_namet   reqs(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_find_requirementsZ
  s"    	R   s   main.pys	   foo.ipynb(   R   R  R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_find_requirementsY
  s    	c          C@ s/   d   }  t  i t t 6d d 6d d 6|   d  S(   Nc   	      S@ s  t  |   } g  | j k s! t  | j | j  } t |  d k sK t  t | d t  sd t  | d j d k s} t  | j	 | j  } t |  d k s t  t | d t
  s t  | d j d k s t  | j | j  } g  | D] } | j ^ q } d d d d g t |  d k s/t  | j | j  } g  | D] } | j ^ qH} d d g t |  k s{t  d  S(   Ni   i    R  R+   R  R  (   R   R   R   t   service_requirementsR-   R.   RC   R   R/   t   download_requirementsR   t   all_variable_requirementsRE   t   plain_variable_requirements(	   R   R%   R  R  t
   everythingRF   t   everything_namest   plaint   plain_names(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   check_requirements_subsets|
  s     (R   s   main.pys	   foo.ipynb(   R   R  R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_requirements_subsets{
  s    	c          C@ s/   d   }  t  i t t 6d d 6d d 6|   d  S(   Nc         S@ s   t  |   } g  | j k s! t  | j | j  } d g | k sH t  | j | j  } d g | k so t  | j | j  } d d d d g t |  d k s t  | j | j  } d d g t |  k s t  d  S(   NR  R+   R  R  i   (	   R   R   R   R  R-   R  t   all_variablesRE   t   plain_variables(   R   R%   R  R  R  R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt"   check_env_var_name_list_properties
  s    (R   s   main.pys	   foo.ipynb(   R   R  R   (   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt!   test_env_var_name_list_properties
  s    	c          C@ s   t  d d  }  |  j d k s$ t  |  j s4 t  |  j d   d  k sO t  d   } t  d d d d d |  } | j d k s t  | j s t  | j d   d k s t  d  S(	   Nt   textR?   c         S@ s   d S(   Ni*   (    (   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   fixit
  s    RO   t
   fix_promptt   promptt   fix_functioni*   (   R   R  R   t   can_fixR  R   (   t	   unfixableR  t   fixable(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_project_problem
  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } t | j  d k s' t  t | j  d k sB t  | j d } | j d t k sh t  | j sw t  | j |  | j	 j
   | j g  k s t  | j t j j |   k s t  d | j	 j k s t  d  S(   Ni   i    s!   %s: The 'name:' field is missing.R   (   R   R.   R   R   R   R  R   R  R  R    Rp   R   R   R   R"   t   root(   R   R%   t   problem(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   
  s    !sM   env_specs:
  default: {}
platforms: [linux-32,linux-64,osx-64,win-32,win-64]
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_auto_fix_missing_name
  s
    	t   modet   missings   missing-commandt   emptys   empty-commandc         @ se     f d   } d }   j  d  r1 | d 7} n    j d  rM | d 7} n  t i | t 6|  d  S(   Nc         @ s   t  |   } t | j  d k s' t  t | j  d k sB t  | j d }   j d d  d } | j d t | f k s t  | j s t  | j	 |  | j
 j   | j g  k s t  t | j j    d g k s t  d  S(   Ni   i    t   -s    %s: The env_specs section is %s.R9   (   R   R.   R   R   R   t   splitR  R   R  R  R    Rp   R   R   t   keys(   R   R%   R  t   msg(   R  (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   
  s    s
   name: foo
R  s   env_specs: {}
R   s#   commands:
 default:
  bokeh_app: .
(   R   t   endswithR   R   (   R  RP   t   yaml(    (   R  sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_auto_fix_env_specs_section
  s    c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ s1  t  |   } t | j  d k s' t  t | j  d k sB t  t | j  d k s] t  | j d } | j d k s t  | j s t  | j |  | j	 j
   | j g  k s t  t | j j    d g k s t  | j d } | j d	 k st  | j d
 k st  | j d k s-t  d  S(   Ni   i    sM   Environment spec 'stuff' from environment.yml is not in anaconda-project.yml.t   stuffR   R   R?   RO   (   R   R   (   R?   (   RO   (   R   R.   R   R   R   t   fixable_problemsR  R  R  R    Rp   R   R   R  R   R   R   (   R   R%   R  R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   
  s    $sL   name: foo
env_specs: {}
platforms: [linux-32,linux-64,osx-64,win-32,win-64]
sG   
name: stuff
dependencies:
 - a
 - b
 - pip:
   - foo
channels:
 - bar
s   environment.yml(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_auto_fix_env_spec_import
  s    	
c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ s1  t  |   } t | j  d k s' t  t | j  d k sB t  t | j  d k s] t  | j d } | j d k s t  | j s t  | j |  | j	 j
   | j g  k s t  t | j j    d g k s t  | j d } | j d k st  | j d k st  | j d	 k s-t  d  S(
   Ni   i    sP   Environment spec 'default' from requirements.txt is not in anaconda-project.yml.R9   R   t   efg(    (   R   R  (    (   R   R.   R   R   R   R  R  R  R  R    Rp   R   R   R  R   R   R   (   R   R%   R  R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    $sL   name: foo
env_specs: {}
platforms: [linux-32,linux-64,osx-64,win-32,win-64]
s(   
# these are some pip packages.
abc
efg
s   requirements.txt(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt%   test_auto_fix_requirements_txt_import  s    	c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ s5  t  |   } t | j  d k s' t  t | j  d k sB t  t | j  d k s] t  | j d } d d | j k s t  | j s t  | j |  | j	 j
   | j g  k s t  t | j j    d g k s t  | j d } | j d
 k st  | j d k st  | j d k s1t  d  S(   Ni   i    s^   Environment spec 'stuff' from environment.yml is out of sync with anaconda-project.yml. Diff:
s.     channels:
    + bar
+ a
+ b
  pip:
    + fooR  R   R   R?   RO   (   R   R   (   R?   (   RO   (   R   R.   R   R   R   R  R  R  R  R    Rp   R   R   R  R   R   R   (   R   R%   R  R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   5  s     $sh   name: foo
env_specs: { 'stuff': { 'packages':[] } }
platforms: [linux-32,linux-64,osx-64,win-32,win-64]
sG   
name: stuff
dependencies:
 - a
 - b
 - pip:
   - foo
channels:
 - bar
s   environment.yml(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt"   test_auto_fix_env_spec_out_of_sync4  s
    	c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ s!  t  |   } t | j  d k s' t  t | j  d k sB t  t | j  d k s] t  | j d } | j d k s t  | j s t  | j |  | j	 j
   | j g  k s t  t | j j    d g k s t  | j	 j d d g  } | d  k	 st  | d k st  d  S(   Ni   i    sM   Environment spec 'stuff' from environment.yml is not in anaconda-project.yml.R9   R  t   environmentR   (   R   R.   R   R   R   R  R  R  R  R    Rp   R   R   R  R  R   (   R   R%   R  t   skip_importing_hash(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   [  s    $se   name: foo
env_specs: {'default':{'packages':[]}}
platforms: [linux-32,linux-64,osx-64,win-32,win-64]
sG   
name: stuff
dependencies:
 - a
 - b
 - pip:
   - foo
channels:
 - bar
s   environment.yml(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_auto_fix_env_spec_import_saying_noZ  s
    	c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ sJ  t  |   } t | j  d k s' t  t | j  d k sB t  t | j  d k s] t  | j d } d d | j k s t  | j s t  | j |  | j	 j
   | j g  k s t  t | j j    d g k s t  | j d } | j d k st  | j d k st  | j d k s1t  | j	 j d
 d d g  } | j d d g  | j	 j d
 d d g |  | j	 j
   | j g  k st  | j d } | j d k st  | j	 j d
 d d g  } | j d g  | j	 j d
 d d g |  | j	 j
   t | j  d k s.t  | j	 j d
 d d g  } | j d  | j	 j d
 d d g |  | j	 j
   t | j  d k st  | j	 j d
 d d g  } | j d  | j	 j d
 d d g |  | j	 j
   t | j  d k st  | j d } | j d k s(t  | j	 j d
 d d g  } | j d  | j	 j d
 d d g |  | j	 j
   t | j  d k st  | j	 j d
 d d g  } d  } x* | D]" } t | t  r| d } qqW| j d  | j	 j   | j	 j
   t | j  d k s$t  | j d } | j d k sFt  d  S(   Ni   i    s^   Environment spec 'stuff' from environment.yml is out of sync with anaconda-project.yml. Diff:
s.     channels:
    + bar
+ a
+ b
  pip:
    + fooR  R   R   R?   RO   R   R  R(  R   t	   someotherR   t   boot   pip(   R   R   (   R?   (   RO   (   R   R   R(  R   (   RO   R  (   R?   R  (   R   R.   R   R   R   R  R  R  R  R    Rp   R   R   R  R   R   R   R  t   extendRo   RU  t   appendR   RC   R'   t   use_changes_without_saving(   R   R%   R  R   R  R   t   pip_listt   p(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     sp    $sh   name: foo
env_specs: { 'stuff': { 'packages':[] } }
platforms: [linux-32,linux-64,osx-64,win-32,win-64]
sG   
name: stuff
dependencies:
 - a
 - b
 - pip:
   - foo
channels:
 - bar
s   environment.yml(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt7   test_no_auto_fix_env_spec_with_notebook_bokeh_injection  s
    	Oc          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ s]  t  |   } t | j  d k s' t  t | j  d k sB t  t | j  d k s] t  t | j  d k sx t  t | j  d k s t  t | j d j	  d k s t  | j d } d | j
 j | j k s t  | j s t  | j |  | j
 j   | j g  k st  | j g  k s4t  | j d j	 t d g  k sYt  d  S(   Ni    i   R9   sV   %s: Command foo.ipynb uses env spec default which does not have the packages: notebookR   (   R   R.   R   R   R   R  R  R  R   R   R    R"   R  R  R  Rp   R   (   R   R%   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s     "s/   commands:
  foo.ipynb:
    notebook: foo.ipynb
s   not a real notebooks	   foo.ipynb(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_auto_fix_notebook_dep  s    	c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ s_   t  |   } | j g  k s! t  | j g  k s6 t  | j d j t d g  k s[ t  d  S(   NR9   t   anaconda(   R   R   R   R  R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    sE   packages:
 - anaconda
commands:
  foo.ipynb:
    notebook: foo.ipynb
s   not a real notebooks	   foo.ipynb(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt1   test_no_auto_fix_notebook_dep_if_we_have_anaconda   s
    	c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ sJ   t  |   } | j g  k s! t  | j d j t d g  k sF t  d  S(   NR9   R   (   R   R   R   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    sE   packages:
 - notebook
commands:
  foo.ipynb:
    notebook: foo.ipynb
s   not a real notebooks	   foo.ipynb(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt1   test_no_auto_fix_notebook_dep_if_we_have_notebook  s
    	c          C@ s(   d   }  t  i d t 6d d 6|   d  S(   Nc         S@ sH  t  |   } t | j  d k s' t  t | j  d k sB t  t | j  d k s] t  t | j  d k sx t  t | j  d k s t  t | j d j	  d k s t  | j d } d | j
 j | j k s t  | j s t  | j |  | j
 j   | j g  k st  | j d j	 t d g  k sDt  d  S(   Ni    i   R9   sT   %s: Command bokeh_test uses env spec default which does not have the packages: bokehR(  (   R   R.   R   R   R   R  R  R  R   R   R    R"   R  R  R  Rp   R   (   R   R%   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   &  s    "s/   commands:
  bokeh_test:
    bokeh_app: main.py
R:   s   main.py(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_auto_fix_bokeh_dep%  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sM   t  |   } g  | j k s! t  d | j j } | g | j k sI t  d  S(   Ns!   %s: Unknown field name 'somejunk'(   R   R   R   R    R"   R  (   R   R%   t   expected_suggestion(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   E  s    s   somejunk: False
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_unknown_field_in_rootD  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sM   t  |   } g  | j k s! t  d | j j } | g | j k sI t  d  S(   Ns!   %s: Unknown field name 'somejunk'(   R   R   R   R    R"   R  (   R   R%   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   O  s    s8   commands:
  foo:
    unix: something
    somejunk: True
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_unknown_field_in_commandN  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sM   t  |   } g  | j k s! t  d | j j } | g | j k sI t  d  S(   Ns!   %s: Unknown field name 'somejunk'(   R   R   R   R    R"   R  (   R   R%   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   \  s    s?   env_specs:
  foo:
    packages: [something]
    somejunk: True
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_unknown_field_in_env_spec[  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sM   t  |   } g  | j k s! t  d | j j } | g | j k sI t  d  S(   Ns!   %s: Unknown field name 'somejunk'(   R   R   R   R   R"   R  (   R   R%   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   i  s    s'   locking_enabled: false
somejunk: False
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_unknown_field_in_root_of_lock_fileh  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sM   t  |   } g  | j k s! t  d | j j } | g | j k sI t  d  S(   Ns!   %s: Unknown field name 'somejunk'(   R   R   R   R   R"   R  (   R   R%   R  (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   v  s    sX   
env_specs:
  default:
     platforms: [linux-64,osx-64,win-64]
     somejunk: True
    (   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt+   test_unknown_field_in_lock_set_of_lock_fileu  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s+   t  |   } d d g | j k s' t  d  S(   Ns3   anaconda-project.yml: The 'name:' field is missing.s7   anaconda-project.yml: The env_specs section is missing.(   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    R   (   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_empty_file_has_problems  s    	c          C@ s(   d   }  t  i d t 6d t 6|   d  S(   Nc         S@ s+   t  |   } d d g | j k s' t  d  S(   Ns3   anaconda-project.yml: The 'name:' field is missing.sX   anaconda-project.yml: The 'platforms:' field should list platforms the project supports.(   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    s%   
env_specs:
  foo:
     packages: []
s   locking_enabled: true
(   R   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt*   test_with_one_locked_env_spec_has_problems  s
    	c          C@ s(   d   }  t  i d t 6d t 6|   d  S(   Nc         S@ s+   t  |   } d d g | j k s' t  d  S(   Ns3   anaconda-project.yml: The 'name:' field is missing.s7   anaconda-project.yml: The env_specs section is missing.(   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    R   s   locking_enabled: true
(   R   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt3   test_with_locking_enabled_no_env_specs_has_problems  s
    	c          C@ s(   d   }  t  i d t 6d t 6|   d  S(   Nc         S@ s%   t  |   } g  | j k s! t  d  S(   N(   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    s1   name: foo
env_specs:
  default:
    packages: []
s   locking_enabled: false
(   R   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt0   test_with_locking_disabled_no_platforms_required  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sb   t  |   } d g | j k s$ t  d g | j k s< t  | j d } | j d k s^ t  d  S(   Nsw   anaconda-project.yml: Unusual platform name 'weird-valid' may be a typo (more usual examples: linux-64, osx-64, win-64)sh   anaconda-project.yml: Platform name 'weirdinvalid' is invalid (valid examples: linux-64, osx-64, win-64)R9   s   linux-64s   weird-valid(   s   linux-64s   weird-valid(   R   R  R   R   R   R  (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    sf   
name: foo
platforms: [linux-64, weird-valid, weirdinvalid]
env_specs:
  default:
    packages: [foo]
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_load_weird_platform  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s%   t  |   } g  | j k s! t  d  S(   N(   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    st   
name: foo

env_specs:
  default:
    platforms: [linux-64]
    packages: [foo]
  no_platforms:
    packages: [bar]
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt8   test_only_some_env_specs_have_platforms_locking_disabled  s    	c          C@ s(   d   }  t  i d t 6d t 6|   d  S(   Nc         S@ s,   t  |   } d d g | j k s( t  d  S(   NsJ   anaconda-project.yml: Env spec no_platforms does not have anything in its s   'platforms:' field.(   R   R   R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    
s|   
name: foo

env_specs:
  default:
    platforms: [linux-64]
    packages: [foo]
  no_platforms:
    packages: [bar]
        s   locking_enabled: true
(   R   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt7   test_only_some_env_specs_have_platforms_locking_enabled  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s   t  |   } | j s t  d  S(   N(   R   t   locking_globally_enabledR   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    R=  (   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt$   test_empty_lock_file_enables_locking  s    	c          C@ s   d   }  t  t   |   d  S(   Nc         S@ s    t  |   } | j s t  d  S(   N(   R   R  R   (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    (   R   R'   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_default_lock_file_disables_locking  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s>   t  |   } d | j j d f } | g | j k s: t  d  S(   Ns?   %s: Value for locking_enabled should be true or false, found %ri*   (   R   R   R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    s   locking_enabled:  42
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_lock_file_non_bool_locking_enabled  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sB   t  |   } d d | j j d f } | g | j k s> t  d  S(   Ns=   %s: 'env_specs:' section in lock file should be a dictionary s1   from env spec names to lock information, found %ri*   (   R   R   R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP      s    s   env_specs:  42
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt!   test_lock_file_non_dict_env_specs  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sB   t  |   } d d | j j d f } | g | j k s> t  d  S(   NsF   %s: Field 'default' in env_specs in lock file should be a dictionary, s   found %ri*   (   R   R   R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   *  s    s   
env_specs:
  default: 42
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt    test_lock_file_non_dict_lock_set)  s    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sB   t  |   } d d | j j d f } | g | j k s> t  d  S(   NsE   %s: Value for locked for env spec 'default' should be true or false, s   found %ri*   (   R   R   R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   9  s    s&   
env_specs:
  default:
    locked: 42
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_lock_file_non_bool_lock_set_locked8  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sB   t  |   } d d | j j d f } | g | j k s> t  d  S(   NsG   %s: Value for env_spec_hash for env spec 'default' should be a string, s   found %ri*   (   R   R   R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   J  s    s-   
env_specs:
  default:
    env_spec_hash: 42
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_lock_file_non_string_lock_set_hashI  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sB   t  |   } d d | j j d f } | g | j k s> t  d  S(   NsS   %s: 'packages:' section in env spec 'default' in lock file should be a dictionary, s   found %ri*   (   R   R   R"   R   R   (   R   R%   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   [  s    s(   
env_specs:
  default:
    packages: 42
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt)   test_lock_file_non_dict_lock_set_packagesZ  s
    	c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sP   t  |   } g  | j k s! t  d | j j f } | g | j k sL t  d  S(   NsO   %s: env spec 'default': pip dependencies are currently ignored in the lock file(   R   R   R   R   R"   R  (   R   R%   t   expected_warning(    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   l  s
    sz   
env_specs:
  default:
    platforms: [linux-64,osx-64,win-64]
    packages:
      all:
        - pip:
          - foobar
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_lock_file_has_pip_packagesk  s    	
c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ sF   t  |   } | j j } d | d | d | g | j k sB t  d  S(   Ns$   %s: invalid package specification: =s*   %s: invalid package specification: foo bars%   %s: invalid pip package specifier: %%(   R   R   R"   R   R   (   R   R%   R!   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    
so   
env_specs:
  default:
    packages:
      all:
        - "="
        - foo bar
        - pip:
          - "%"
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt#   test_lock_file_has_invalid_packages  s    	
c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s=   t  |   } g  | j k s! t  d g | j k s9 t  d  S(   Ns   anaconda-project-lock.yml: Env spec 'default' specifies platforms 'linux-64,osx-64,win-64' but the lock file has locked versions for platforms 'win-64'(   R   R   R   R  (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    sP   
env_specs:
  default:
    platforms: ["win-64"]
    packages:
      all: [foo]
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt"   test_lock_file_has_wrong_platforms  s    	
c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s=   t  |   } g  | j k s! t  d g | j k s9 t  d  S(   Ns   anaconda-project-lock.yml: Env spec 'default' specifies platforms 'linux-64,osx-64,win-64' but the lock file lists no platforms for it(   R   R   R   R  (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    sH   
env_specs:
  default:
    platforms: []
    packages:
      all: [foo]
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt!   test_lock_file_has_zero_platforms  s
    		c          C@ s!   d   }  t  i d t 6|   d  S(   Nc         S@ s=   t  |   } g  | j k s! t  d g | j k s9 t  d  S(   Ns   anaconda-project-lock.yml: Env spec 'default' has changed since the lock file was last updated (env spec hash has changed from wrong to a30f02c961ef4f3fe07ceb09e0906394c3885a79)(   R   R   R   R  (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    sw   
env_specs:
  default:
    env_spec_hash: wrong
    platforms: [linux-64,osx-64,win-64]
    packages:
      all: [foo]
(   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   test_lock_file_has_wrong_hash  s    	
	c          C@ s(   d   }  t  i d t 6d t 6|   d  S(   Nc         S@ sC   t  |   } g  | j k s! t  d d d g | j k s? t  d  S(   Nsb   anaconda-project-lock.yml: Lock file lists no packages for env spec 'default' on platform linux-64sa   anaconda-project-lock.yml: Lock file is missing 1 packages for env spec default on osx-64 (hello)s`   anaconda-project-lock.yml: Lock file lists no packages for env spec 'default' on platform win-64(   R   R   R   R  (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP     s    s9   
env_specs:
   default:
      packages:
         - hello
s   
env_specs:
  default:
    platforms: [linux-64,osx-64,win-64]
    packages:
      linux-64: []
      win-64: []
      win-32: [foo]
      osx-64: [bar]
      linux-32: [baz]
(   R   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt0   test_lock_file_has_empty_and_wrong_package_lists  s
    	c          C@ s(   d   }  t  i d t 6d t 6|   d  S(   Nc         S@ s=   t  |   } g  | j k s! t  d g | j k s9 t  d  S(   Nsa   anaconda-project-lock.yml: Lock file lists env spec 'orphan' which is not in anaconda-project.yml(   R   R   R   R  (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   	  s    s9   
env_specs:
   default:
      packages:
         - hello
s   
env_specs:
  default:
    platforms: [linux-64,osx-64,win-64]
    packages:
      all: [hello]
  orphan:
    platforms: [linux-64,osx-64,win-64]
    packages: {}
(   R   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt"   test_lock_file_has_orphan_env_spec  s
    	c          C@ s(   d   }  t  i d t 6d t 6|   d  S(   Nc         S@ s   t  |   } d g | j k s$ t  d | j d j k s@ t  | j   g  | j k s_ t  d | j d j k s{ t  d  S(   NsX   anaconda-project.yml: The 'platforms:' field should list platforms the project supports.R9   s   linux-64s   osx-64s   win-64(    (   s   linux-64s   osx-64s   win-64(   R   R   R   R   R  t   fix_problems_and_suggestions(   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   '  s    
sC   
name: foo
env_specs:
   default:
      packages:
         - hello
s   
locking_enabled: true
(   R   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt'   test_fix_project_file_with_no_platforms&  s    	c          C@ s(   d   }  t  i d t 6d t 6|   d  S(   Nc         S@ s   t  |   } d d g | j k s' t  d	 | j d j k sC t  d
 | j d j k s_ t  d | j d j k s{ t  | j   g  | j k s t  d | j d j k s t  d | j d j k s t  d | j d j k s t  d  S(   NsT   anaconda-project.yml: Env spec bar does not have anything in its 'platforms:' field.sT   anaconda-project.yml: Env spec foo does not have anything in its 'platforms:' field.s   linux-64R9   R?   RO   s   osx-64s   win-64(   s   linux-64(    (    (   s   linux-64(   s   linux-64s   osx-64s   win-64(   s   linux-64s   osx-64s   win-64(   R   R   R   R   R  R  (   R   R%   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyRP   E  s    
s   
name: foo
env_specs:
   default:
      platforms: ['linux-64']
      packages:
         - hello
   foo:
      platforms: []
      packages:
         - apackage
   bar:
      platforms: []
      packages:
         - package2
s   
locking_enabled: true
(   R   R   R   (   RP   (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt#   test_fix_env_spec_with_no_platformsD  s
    	(   t
   __future__R    R   t   copyR   t   distutils.spawnR   R   R@  RG  RM  RR  RX  Ru  t   anaconda_project.env_specR   t   anaconda_project.versionR   t,   anaconda_project.internal.test.tmpfile_utilsR   R   t   anaconda_project.internalR   t/   anaconda_project.requirements_registry.registryR	   t2   anaconda_project.requirements_registry.requirementR
   t=   anaconda_project.requirements_registry.requirements.conda_envR   t;   anaconda_project.requirements_registry.requirements.serviceR   t<   anaconda_project.requirements_registry.requirements.downloadR   t   anaconda_project.projectR   R   t   anaconda_project.project_fileR   t"   anaconda_project.project_lock_fileR   t#   anaconda_project.test.environ_utilsR   t#   anaconda_project.test.project_utilsR   R   R(   R*   R4   R6   R8   R;   R=   R>   RQ   RS   RV   RW   R\   Rd   Re   Ri   Rk   Rl   Rn   Rs   Ru   Rv   Ry   Rz   R{   R}   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R  R  R  R  R  R   R!  R"  R#  R%  R'  R+  R-  R.  R/  R1  R2  R3  R5  R6  R;  R>  RC  RA  RF  R   R   Rb  Re  Rg  Rh  Ri  Rj  Rk  Rm  Rn  Rr  R|  R  R  R  R  R  R  R  R  R  t   markt   parametrizeR  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R   (    (    (    sA   lib/python2.7/site-packages/anaconda_project/test/test_project.pyt   <module>   sr  										,		!																+								t	0																																					&		#	 	.	"		'			#					#		"	!				!			J							
	
							X		"				*	$		&	%	a	 				
															
	
										'		