#!/usr/bin/env python2.5
#-*- mode: python -*-
##-*****************************************************************************
##
## Copyright (c) 2009-2011, Industrial Light & Magic,
##   a division of Lucasfilm Entertainment Company Ltd.
##
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are
## met:
## *       Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
## *       Redistributions in binary form must reproduce the above
## copyright notice, this list of conditions and the following disclaimer
## in the documentation and/or other materials provided with the
## distribution.
## *       Neither the name of Industrial Light & Magic nor the names of
## its contributors may be used to endorse or promote products derived
## from this software without specific prior written permission.
##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##
##-*****************************************************************************

import subprocess, sys, os

Popen = subprocess.Popen
PIPE = subprocess.PIPE

# USAGE:
# RunPythonTest <BUILD_ROOT> <SCRIPT> <ARGS>
if len( sys.argv ) < 3:
    print ( "USAGE: %s <BUILD_ROOT> <SCRIPT> [ARGS...]" % sys.argv[0] )
    sys.exit( -1 )

buildroot = sys.argv[1]
script = sys.argv[2]
args = sys.argv[3:]

# Set the python path
pythonpathlist = [os.path.join( buildroot, "lib" )]
pythonpath = os.environ.get( 'PYTHONPATH' )

if not pythonpath == None:
    pythonpathlist.extend( pythonpath.split( os.pathsep ))
else:
    pass

os.environ['PYTHONPATH'] = os.pathsep.join( pythonpathlist )


# Run the thing
commandlist = [script]
commandlist.extend( args )
errstr = ""
try:
    results = Popen( commandlist, env=os.environ, stdin=PIPE, stdout=PIPE,
                     stderr=PIPE )
    retcode = results.wait()
    results.stderr.flush()
    errstr = results.stderr.read()
except Exception, e:
    errstr = str( e )
    retcode = -1

# did it work?
if retcode != 0:
    print ( "ERROR: Command %s failed: %s" ) % ( script, errstr )
    sys.exit( -1 )
else:
    sys.exit( 0 )
