o
    Ni@                     @   s   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m	Z	 d dl
mZ G dd dejZG dd	 d	ejZdS )
    )absolute_import)print_functionN)urlopen)basec                   @   s   e Zd Zdd ZdS )TestPackagingc                 C   s`   t j| jd}| t j| t |}| d| | d| | d| | d| d S )Nz pbr_testpackage-0.0.data/scriptspbr_test_wsgipbr_test_wsgi_with_classpbr_test_cmdpbr_test_cmd_with_class)	ospathjoinextracted_wheel_dir
assertTrueexistslistdirassertInassertNotIn)selfscripts_dirscripts r   Z/home/ubuntu/.local/lib/python3.10/site-packages/pbr/tests/functional/test_wsgi_scripts.py$test_data_directory_has_wsgi_scripts   s   
z2TestPackaging.test_data_directory_has_wsgi_scriptsN)__name__
__module____qualname__r   r   r   r   r   r      s    r   c                   @   sB   e Zd ZdZdd Zdd Zdd Zdd	d
Zdd Zdd Z	dS )TestWsgiScripts)r   r   c                 C   s   t jd dkrtjdd| jidS tjd| j r d| j }n!tjd| j r/d| j }ntjd| j r=d	| j S td
d|t jd t jd f S )Nr      platlibr   )varsz%s/lib64z%s/libz%s/site-packagesz.:%s/site-packagesz!Could not determine path for testz.:%s/python%s.%s/site-packages   )	sysversion_info	sysconfigget_pathtemp_dirr   r   isdir	Exception)r   r   r   r   r   	_get_path0   s   
zTestWsgiScripts._get_pathc                 C   s:   t jdkr
| d | dd| j \}}}| | dS )z5Test that we install a non-pkg-resources wsgi script.ntWindows support is passthroughinstall--prefix=%sN)r   nameskipTest	run_setupr&   _check_wsgi_install_contentr   stdout_return_coder   r   r   test_wsgi_script_installA   s   



z(TestWsgiScripts.test_wsgi_script_installc                 C   sR   t jdkr
| d | dd| j \}}}| | | jD ]}| |d qdS )zTest that we install a runnable wsgi script.

        This test actually attempts to start and interact with the
        wsgi script in question to demonstrate that it's a working
        wsgi script using simple server.

        r*   r+   r,   r-   s   Hello WorldN)r   r.   r/   r0   r&   r1   	cmd_names
_test_wsgi)r   r3   r4   r5   cmd_namer   r   r   test_wsgi_script_runL   s   





z$TestWsgiScripts.test_wsgi_script_runNc                 C   s>  t j| jd|}td|  |ddddg}|r|| d|  i}tj|tj	tj	| j|d}| 
|j |j }|j }| d	| |j }t| td
|}	| |	d|  |j }| d| |j }t|	dd}
| ||
  t|	dd |j }dt| }| |d| d S )NbinzRunning %s -p 0 -b 127.0.0.1z-p0z-bz	127.0.0.1
PYTHONPATH)r3   stderrcwdenvs)   STARTING test server pbr_testpackage.wsgis   (http://[^:]+:\d+)/zRegex failed to match on %ss2   DANGER! For testing only, do not use in productionr!   zutf-8z"GET / HTTP/1.1" 200 %d)r   r   r   r&   printextendr)   
subprocessPopenPIPE
addCleanupkillr3   readliner   researchassertIsNotNoner   groupdecodeassertEqualreadr>   lenencode)r   r9   output
extra_argscmd	popen_cmdr@   p
stdoutdatamfstatusr   r   r   r8   b   s@   






zTestWsgiScripts._test_wsgic           
      C   s   | j D ]H}d|| jf }| || tj| jd|}t|d }| d| d}|dkr1d}nd}d	| }d
}	| || | || | |	| qd S )NzInstalling %s script to %sr;   rpkg_resourceszwif __name__ == "__main__":
    import argparse
    import socket
    import sys
    import wsgiref.simple_server as wssr   mainzWSGI.appz,STARTING test server pbr_testpackage.wsgi.%szelse:
    application = None)	r7   r&   r   r   r   r   openrO   r   )
r   install_stdoutr9   install_txtcmd_filename
script_txt
main_blockapp_namestarting_block
else_blockr   r   r   r1      s(   
z+TestWsgiScripts._check_wsgi_install_contentc                 C   sB   t jdkr
| d | dd| j \}}}| ddg d d S )Nr*   r+   r,   r-   r   s   Foo Bar)z--z-czFoo Bar)r   r.   r/   r0   r&   r8   r2   r   r   r   test_with_argument   s   



z"TestWsgiScripts.test_with_argument)N)
r   r   r   r7   r)   r6   r:   r8   r1   rg   r   r   r   r   r   ,   s    
0#r   )
__future__r   r   r   rI   rC   r"   r$   pbr._compat.fiver   pbr.tests.functionalr   BaseWheelTestCaser   BaseTestCaser   r   r   r   r   <module>   s   