
    lc                         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e	j                        Zy# e$ r	 d dlmZ Y )w xY w)    N)urlopen)basec                   6    e Zd ZdZd Zd Zd Zd	dZd Zd Z	y)
TestWsgiScripts)pbr_test_wsgipbr_test_wsgi_with_classc                    t         j                  j                  d| j                  z        rd| j                  z  }nt         j                  j                  d| j                  z        rd| j                  z  }nFt         j                  j                  d| j                  z        rd| j                  z  S t	        d      d|dt
        j                  d   d	t
        j                  d
   dS )Nz%s/lib64z%s/libz%s/site-packagesz.:%s/site-packagesz!Could not determine path for testz.:z/pythonr   .   z/site-packages)ospathisdirtemp_dir	Exceptionsysversion_info)selfr   s     5/usr/lib/python3/dist-packages/pbr/tests/test_wsgi.py	_get_pathzTestWsgiScripts._get_path!   s    77==dmm34-DWW]]8dmm34dmm+DWW]]-=>'$--77?@@QQ! 	!    c                     t         j                  dk(  r| j                  d       | j                  dd| j                  z        \  }}}| j                  |       y)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_codes       r   test_wsgi_script_installz(TestWsgiScripts.test_wsgi_script_install/   sM    77d?MM:;!%}t}}4"6; 	((0r   c                    | j                  d       t        j                  dk(  r| j                  d       | j                  dd| j                  z        \  }}}| j                  |       | j                  D ]  }| j                  |d        y)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.

        Not working on Debianr   r   r   r   s   Hello WorldN)r   r   r   r   r   r   	cmd_names
_test_wsgi)r   r!   r"   r#   cmd_names        r   test_wsgi_script_runz$TestWsgiScripts.test_wsgi_script_run9   s     	-.77d?MM:;!%}t}}4"6; 	((0  	6HOOHn5	6r   Nc                    t         j                  j                  | j                  d|      }t	        d|z         |ddddg}|r|j                  |       d| j                         i}t        j                  |t        j                  t        j                  | j                  |      }| j                  |j                         |j                  j                         }|j                  j                         }| j                  d	|       |j                  j                         }t	        |       t        j                   d
|      }	| j#                  |	d|z         |j                  j                         }| j                  d|       |j                  j                         }t%        |	j'                  d      j)                  d            }
| j+                  ||
j-                                t%        |	j'                  d      j)                  d             |j.                  j                         }dt1        |      z  }| j                  |j3                  d      |       y )NbinzRunning %s -p 0 -b 127.0.0.1z-p0z-bz	127.0.0.1
PYTHONPATH)r!   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   joinr   printextendr   
subprocessPopenPIPE
addCleanupkillr!   readlineassertInresearchassertIsNotNoner   groupdecodeassertEqualreadr/   lenencode)r   r)   output
extra_argscmd	popen_cmdr1   p
stdoutdatamfstatuss               r   r(   zTestWsgiScripts._test_wsgiO   s   ggll4==%:,s23$T;7	Z(T^^-.Yz$.OO!$& 	XX&&(
XX&&(
8	 XX&&(
jII-z:Q =
 JKXX&&(
A	 XX&&(
AGGAJ%%g./* 	
!!'*+XX&&(
 +S[8fmmG,j9r   c                    | j                   D ]  }d|d| j                  }| j                  ||       t        j                  j                  | j                  d|      }t        |d      j                         }| j                  d|       d}|dk(  rd}nd	}d
|z  }d}	| j                  ||       | j                  ||       | j                  |	|        y )NzInstalling z script to r,   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)	r'   r   r;   r   r   r2   openrB   assertNotIn)
r   install_stdoutr)   install_txtcmd_filename
script_txt
main_blockapp_namestarting_block
else_blocks
             r   r   z+TestWsgiScripts._check_wsgi_install_content}   s     	2H:B:>--IKMM+~677<<uhGLlC0557J_j9+J ?*!%#%-.NJ MM*j1MM.*5MM*j1;	2r   c                     | j                  d       t        j                  dk(  r| j                  d       | j                  dd| j                  z        \  }}}| j                  ddg d       y )	Nr&   r   r   r   r   r   s   Foo Bar)z--z-czFoo Bar)r   r   r   r   r   r(   r    s       r   test_with_argumentz"TestWsgiScripts.test_with_argument   s]    -.77d?MM:;!%}t}}4"6; 	5LMr   )N)
__name__
__module____qualname__r'   r   r$   r*   r(   r   r]    r   r   r   r      s(    =I!16,,:\2@Nr   r   )r   r<   r5   r   urllib2r   ImportErrorurllib.request	pbr.testsr   BaseTestCaser   ra   r   r   <module>rg      sJ    
 	  
'
 HNd'' HN  '&'s   4 AA