a
    }ag                     @   s  d dl mZmZ zd dlmZ W n ey>   d dlmZ Y n0 d dlZd dl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 G dd deZdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd  Z#dS )!    )absolute_importprint_function)quoteN)_parse_args_and_run_subcommand)activatemain)#UI_MODE_TEXT_ASSUME_YES_DEVELOPMENT)/with_directory_contents_completing_project_file)DEFAULT_PROJECT_FILENAME)DEFAULT_LOCAL_STATE_FILENAME)!project_dir_disable_dedicated_envc                   @   s   e Zd Zdd ZdS )Argsc                 K   s6   d| _ d | _t| _d | _|D ]}t| |||  qd S N.)	directoryZenv_specr   modeZcommandsetattr)selfkwargskey r   Olib/python3.9/site-packages/anaconda_project/internal/cli/test/test_activate.py__init__   s    zArgs.__init__N)__name__
__module____qualname__r   r   r   r   r   r      s   r   c                    s$   t   d fdd	}| d|  S )N      ?c                    s   |  d< | d< | d< dS )Nhostporttimeout_secondsTr   r   r   r   can_connect_argsr   r   mock_can_connect_to_socket(   s    zQ_monkeypatch_can_connect_to_socket_to_succeed.<locals>.mock_can_connect_to_socketIanaconda_project.requirements_registry.network_util.can_connect_to_socket)r   )dictr   monkeypatchr#   r   r!   r   -_monkeypatch_can_connect_to_socket_to_succeed%   s    r(   c                    s   d}i  | pdD ]J}t d|}|rV| \}}|dkrLt dkrLtd | |< qd}qt t|ksp|rdd l}td	t|j	  td
t|   t
 fdd|D S )NFr   z^export ([^=]*)=(.*)$PATHZWindowsz:activate changed PATH on Windows and ideally it would not.Tr   zos.environ=zresult=c                 3   s   | ]}  |V  qd S )N)get).0vZoutputsr   r   	<genexpr>D       z*_filter_activate_result.<locals>.<genexpr>)rematchgroupsplatformsystemprintsetosreprenvirontuple)resultvarsZadditional_outputliner1   varvaluer7   r   r-   r   _filter_activate_result4   s    
r@   c                    s&   t |   fdd}ttdi| d S )Nc                    sJ   t |  t| td d d} d dks(J t|d}|t| dfksFJ d S )NZconda_environmentZcommand_namer     )PROJECT_DIRZ	REDIS_URLzredis://localhost:6379r   r   r   r@   r   dirnamer;   r!   r   r   activate_redis_urlJ   s
    
z)test_activate.<locals>.activate_redis_urlz"
services:
  REDIS_URL: redis
    )r(   r	   r
   )r'   rG   r   r!   r   test_activateG   s    rH   c                 C   s   dd }t tdtdi| d S )Nc                 S   s:   t |  t| td d d}t|d}|dt| fks6J d S )NrA   )ZFOOrC   z'$! boo'rD   rE   r   r   r   activate_fooY   s    
z+test_activate_quoting.<locals>.activate_fooz
variables:
  FOO: {}
    z
variables:
  FOO: $! boo
)r	   r
   r   )r'   rI   r   r   r   test_activate_quotingX   s    	rJ   c                 C   sj   dd }|  d| t| }dd }ttdi| |d dksBJ | \}}d	|v sZJ d
|ksfJ d S )Nc                 S   s   t d| |f d S )Nz=this test should not create an environment in %s with pkgs %r)RuntimeError)prefixZpkgsZchannelsr   r   r   mock_conda_createm   s    z$test_main.<locals>.mock_conda_createz*anaconda_project.internal.conda_api.createc                 S   s   t |  tt| d d S )Nr   r   r   r   )rF   r   r   r   main_redis_urlt   s    z!test_main.<locals>.main_redis_url
services:
  REDIS_URL: redis
r   rB   (export REDIS_URL=redis://localhost:6379
 )r   r(   r	   r
   
readouterr)r'   capsysrM   r"   rP   outerrr   r   r   	test_mainl   s    rX   c                    sf   t  } fdd}ttdi| |d dks2J | \}}d|v sJJ d|v sVJ d|ksbJ d S )	Nc                    sJ   ddl m  fdd}d| t  tddg}|dksFJ d S )Nr   )abspathc                    s   | dkr S | S d S r   r   )pathrF   Zreal_abspathr   r   mock_abspath   s    zTtest_main_dirname_not_provided_use_pwd.<locals>.main_redis_url.<locals>.mock_abspathzos.path.abspathanaconda-projectr   )Zos.pathrY   r   r   r   )rF   r\   coder'   r[   r   rP      s    z>test_main_dirname_not_provided_use_pwd.<locals>.main_redis_urlrQ   r   rB   export PROJECT_DIRrR   rS   r(   r	   r
   rT   r'   rU   r"   rP   rV   rW   r   r_   r   &test_main_dirname_not_provided_use_pwd   s    rc   c                 C   sb   t | }dd }ttdi| |d dks.J | \}}d|v sFJ d|v sRJ d|ks^J d S )	Nc                 S   s(   t |  tddd| g}|dks$J d S )Nr]   r   --directoryr   r   r   rF   r^   r   r   r   rP      s    z9test_main_dirname_provided_use_it.<locals>.main_redis_urlrQ   r   rB   r`   rR   rS   ra   rb   r   r   r   !test_main_dirname_provided_use_it   s    rg   c                 C   s4   dd }t tdi| |  \}}|ds0J d S )Nc                 S   s,   t |  tddd| ddg}|dks(J d S )Nr]   r   rd   z	--commandZnope   re   rf   r   r   r   check   s
    z-test_main_bad_command_provided.<locals>.checkrQ   zCommand name 'nope' is not in)r	   r
   rT   
startswith)rU   ri   rV   rW   r   r   r   test_main_bad_command_provided   s    rk   c                 C   s   ddd}|  d| d S )Nr   c                 S   s   |dkrdS dS d S )NrB   FTr   r    r   r   r   r#      s    z\_monkeypatch_can_connect_to_socket_to_fail_to_find_redis.<locals>.mock_can_connect_to_socketr$   )r   )r   r&   r   r   r   8_monkeypatch_can_connect_to_socket_to_fail_to_find_redis   s    
rl   c                 C   sF   t |  dd }ttdi| | \}}d|v s6J d|v sBJ d S )Nc                 S   s&   t |  tt| d}d|ks"J d S )NrN   rh   rO   rf   r   r   r   rP      s    z0test_main_fails_to_redis.<locals>.main_redis_urlrQ   zmissing requirementz'All ports from 6380 to 6449 were in use)rl   r	   r
   rT   )r'   rU   rP   rV   rW   r   r   r   test_main_fails_to_redis   s    rm   )$Z
__future__r   r   Zshlexr   ImportErrorZpipesr3   r0   Z"anaconda_project.internal.cli.mainr   Z&anaconda_project.internal.cli.activater   r   Z/anaconda_project.internal.cli.prepare_with_moder   Z,anaconda_project.internal.test.tmpfile_utilsr	   Zanaconda_project.project_filer
   Z!anaconda_project.local_state_filer   Z#anaconda_project.test.project_utilsr   objectr   r(   r@   rH   rJ   rX   rc   rg   rk   rl   rm   r   r   r   r   <module>   s0   
