3 F\L @stddlZddlZddlZddlZyddlmZWn ek rPddlmZYnXddlm Z Gddde j Z dS)N)urlopen)basec@sBeZdZdZddZddZddZdd d Zd d ZddZ d S)TestWsgiScripts pbr_test_wsgipbr_test_wsgi_with_classcCsztjjd|jrd|j}nBtjjd|jrWdS)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. rzWindows support is passthroughrz --prefix=%ss Hello WorldN)rrrrr r cmd_names _test_wsgi)rrrrcmd_namerrrtest_wsgi_script_run9s    z$TestWsgiScripts.test_wsgi_script_runNc Cs:tjj|jd|}td||ddg}|r6|j|d|ji}tj|tj tj |j|d}|j |j |j j }|j j }|jd||j j }t|tjd|} |j| d ||j j }|jd ||j j }t| jd jd } |j|| jt| jd jd |jj }d t|} |j| jd |dS)NbinzRunning %s -p 0z-p0 PYTHONPATH)rstderrcwdenvs)STARTING test server pbr_testpackage.wsgis(http://[^:]+:\d+)/zRegex failed to match on %ss2DANGER! For testing only, do not use in productionrzutf-8z"GET / HTTP/1.1" 200 %d)rr joinr printextendr subprocessPopenPIPEZ addCleanupkillrreadlineassertInresearchZassertIsNotNonergroupdecodeZ assertEqualreadr$lenencode) rroutput extra_argscmdZ popen_cmdr&pZ stdoutdatamfstatusrrrrNs<              zTestWsgiScripts._test_wsgic Csx|jD]}d||jf}|j||tjj|jd|}t|dj}|jd|d}|dkrdd}nd}d |}d } |j|||j|||j| |qWdS) NzInstalling %s script to %sr!r pkg_resourceszwif __name__ == "__main__": import argparse import socket import sys import wsgiref.simple_server as wssrmainzWSGI.appz,STARTING test server pbr_testpackage.wsgi.%szelse: application = None) rr r/rr r'openr4Z assertNotIn) rZinstall_stdoutrZ install_txtZ cmd_filenameZ script_txtZ main_blockZapp_nameZstarting_blockZ else_blockrrrr|s"      z+TestWsgiScripts._check_wsgi_install_contentcCsDtjdkr|jd|jdd|j\}}}|jddddd gdS) NrzWindows support is passthroughrz --prefix=%srsFoo Barz--z-czFoo Bar)rrrrr r)rrrrrrrtest_with_arguments   z"TestWsgiScripts.test_with_argument)rr)N) __name__ __module__ __qualname__rrrr rrrBrrrrrs  . r) rr0r*r urllib2r ImportErrorurllib.requestZ pbr.testsrZ BaseTestCaserrrrrs