You are not logged in Log in Join
You are here: Home » Members » adytumsolutions » PyCon2004 » ZopeCommandLineTest » wikipage_view

Log in
Name

Password

 
 
Zope2 Sprint »

ZopeCommandLineTest

import os
import sys
here = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(here, 'lib', 'python'))
import Zope
from ZPublisher import publish_module

__version__ = 1



def publish(script=None,path_info='/',
            u=None,p=None,d=None,t=None,e=None,s=None,pm=0,
            extra=None,
            request_method='GET',
            fp=None,
            stdin=sys.stdin):

    profile=p
    debug=d
    timeit=t
    silent=s
    if e is None: e={}
    if extra is None: extra={}

    if script is None: script='Zope'
    if script[0]=='+': script='../../lib/python/'+script[1:]

    env=e
    env['SERVER_NAME']='zope_test.server'
    env['SERVER_PORT']='80'
    env['REQUEST_METHOD']=request_method
    env['REMOTE_ADDR']='127.0.0.1'
    env['REMOTE_HOST']='zope_test.remote.host'
    env['HTTP_USER_AGENT']='Zope_test/%s' % __version__
    env['HTTP_HOST']='127.0.0.1'
    env['SERVER_SOFTWARE']='Zope_test/%s' % __version__
    env['SERVER_PROTOCOL']='HTTP/1.1'
    env['HTTP_ACCEPT']='image/gif, image/x-xbitmap, image/jpeg, */* '
    env['SERVER_HOSTNAME']='zope_test.server.host'
    env['GATEWAY_INTERFACE']='CGI/1.1 '
    env['SCRIPT_NAME']='' #script 
    p=path_info.split('?')
    if   len(p)==1: env['PATH_INFO'] = p[0]
    elif len(p)==2: [env['PATH_INFO'], env['QUERY_STRING']]=p
    else: raise TypeError, ''

    if u:
        import base64
        env['HTTP_AUTHORIZATION']="Basic %s" % base64.encodestring(u)

    dir,file=os.path.split(script)
    cdir=os.path.join(dir,'Components')
    sys.path[0:0]=[dir,cdir,os.path.join(cdir,sys.platform)]

    # We delay import to here, in case Publish is part of the
    # application distribution.

    if silent:
        stdout=open('/dev/null','w')
    else:
        if fp and hasattr(fp,'write'):
            stdout = fp
        else:
            stdout=sys.stdout

    publish_module(file, environ=env, stdout=stdout)
    print '\n%s\n' % ('_'*60)

if __name__ == "__main__":
    path_info = '/standard_html_header'        
    Zope.configure(os.path.join(here, 'etc', 'zope.conf'))
    Zope.startup()
    publish('Zope', path_info=path_info, e={})