U
    饡c~                     @   s^  d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZddl	m
Z
mZ d dlmZ ejjddd ejjd	d
d ejjddejjd eje jdd	 de jd< dd ZG dd dZdd Zdd Zejdd Zejdddd Zejdd d!d" Zejddd#d$ Zejddd%d& Zejddd'd( Zejddd)d* Z dS )+    N)TemporaryDirectory   )groupsdefaultsfind_free_portcii  )max_examplesdev2   debug
   )r	   	verbosityZHYPOTHESIS_PROFILEz	/dev/nullZAWS_CONFIG_FILEc                 C   sh   ddd}t D ]T}|d|t| }| jd|d|d|d | jd|dd	d
|d qd S )Nc                 S   sP   t j|  }|s|S | }|dkr,dS |dkr8dS td|  |d S )N>   ontrueyesy1T>   0nooffnfalseFz {}={} is not parsable as boolean)osenvirongetupperlower
ValueErrorformat)namedefaultvalue r#   :/tmp/pip-unpacked-wheel-qoi2rb4q/pyarrow/tests/conftest.pybool_env2   s     z"pytest_addoption.<locals>.bool_envzPYARROW_TEST_{}--enable-{}
store_truezEnable the {} test group)actionr!   help--disable-{}FzDisable the {} test group)N)r   r   r   Z	addoption)parserr%   groupr!   r#   r#   r$   pytest_addoption0   s    
  r-   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )PyArrowConfigc                 C   s
   i | _ d S N)
is_enabled)selfr#   r#   r$   __init__J   s    zPyArrowConfig.__init__c                 C   s   |j }|tkr| | d S r/   )r    r   requires)r1   markr,   r#   r#   r$   
apply_markM   s    zPyArrowConfig.apply_markc                 C   s   | j | std| d S )Nz{} NOT enabled)r0   pytestskipr   )r1   r,   r#   r#   r$   r3   R   s    
zPyArrowConfig.requiresN)__name__
__module____qualname__r2   r5   r3   r#   r#   r#   r$   r.   I   s   r.   c                 C   sX   t  | _tD ]F}| d| d|}d|}| |oD| | }|| jj|< qd S )Nmarkersr&   r*   )r.   pyarrowr   Zaddinivalue_liner   Z	getoptionr0   )configr4   Zenable_flagZdisable_flagr0   r#   r#   r$   pytest_configureW   s     


r>   c                 C   s    |   D ]}| jj| qd S r/   )Ziter_markersr=   r<   r5   )itemr4   r#   r#   r$   pytest_runtest_setuph   s    r@   c                 C   s   t | jS r/   )pathlibPathZstrpath)Ztmpdirr#   r#   r$   tempdirn   s    rC   session)Zscopec                   C   s   t tjd S )Ndata)rA   rB   __file__parentr#   r#   r#   r$   base_datadirt   s    rH   T)Zautousec                 C   s   |  dd dS )zStop the AWS SDK from trying to contact the EC2 metadata server.

    Otherwise, this causes a 5 second delay in tests that exercise the
    S3 filesystem.
    ZAWS_EC2_METADATA_DISABLEDr   N)Zsetenv)Zmonkeypatchr#   r#   r$   disable_aws_metadatay   s    rI   c                  C   s8   t jdd} tt jdd}t jdd}| ||fS )NZARROW_HDFS_TEST_HOSTr!   ZARROW_HDFS_TEST_PORTr   ZARROW_HDFS_TEST_USERZhdfs)r   r   r   int)hostportuserr#   r#   r$   hdfs_connection   s    rN   c                  C   s    dt   } }d\}}| |||fS )N	localhost)ZarrowZapachearrowr   )rK   rL   
access_key
secret_keyr#   r#   r$   s3_connection   s    rR   c           
   	   c   s   | \}}}}d ||}tj }|||d t t}ddddd||g}d }	zDztj||d}	W n t	k
r   t
d	 Y nX | |	|d
V  W 5 |	d k	r|	  X W 5 Q R X d S )Nz{}:{})ZMINIO_ACCESS_KEYZMINIO_SECRET_KEYZminioz--compatserverz--quietz	--addressenvz!`minio` command cannot be located)
connectionprocessrC   )r   r   r   copyupdater   kill
subprocessPopenOSErrorr6   r7   )
rR   rK   rL   rP   rQ   addressrU   rC   argsprocr#   r#   r$   	s3_server   s.    

 ra   c               
   c   s   t  } tj }tjdddt| g}d }z`ztj	||d}W n8 t
k
rt } ztd| d|  W 5 d }~X Y nX d| f|dV  W 5 |d k	r|  X d S )	Nz-mZ	testbenchz--portrT   zCommand z failed to execute: rO   )rV   rW   )r   r   r   rX   sys
executablestrrZ   r[   r\   r]   r6   r7   )rL   rU   r_   r`   er#   r#   r$   
gcs_server   s    
(rf   )!r   rA   r[   rb   tempfiler   r6   Z
hypothesishZconftestr   r   Zpyarrow.utilr   settingsZregister_profileZ	VerbosityverboseZload_profiler   r   r-   r.   r>   r@   ZfixturerC   rH   rI   rN   rR   ra   rf   r#   r#   r#   r$   <module>   sB   













