Exemplo n.º 1
0
def call_returning_exit_and_output(exec_args, **popen_args):
    def readInputStream(inputStream):
        reader = BufferedReader(InputStreamReader(inputStream))
        builder = StringBuilder()
        line = None
        while True:
            line = reader.readLine()
            if line is None:
                break
            builder.append(line)
            builder.append(System.getProperty("line.separator"))
        return builder.toString()

    # WORKAOUND: because capturing output of Jython's subprocess module at testing with
    # pytest is not possible using Java implementation
    pb = ProcessBuilder(exec_args)
    env = popen_args.get('env')
    if env:
        process_env = pb.environment()
        for key in list(process_env.keySet()):
            if key not in env:
                _log.debug("remove from process-env: %s", key)
                process_env.remove(key)
        for key in env:
            process_env.put(key, env[key])
    pb.redirectErrorStream(True)
    process = pb.start()
    stdout = readInputStream(process.getInputStream())
    exitValue = process.waitFor()
    return exitValue, (stdout, stdout)
Exemplo n.º 2
0
def call_returning_exit_and_output(exec_args, **popen_args):
    def readInputStream(inputStream):
        reader = BufferedReader(InputStreamReader(inputStream))
        builder = StringBuilder()
        line = None
        while True:
            line = reader.readLine()
            if line is None:
                break
            builder.append(line)
            builder.append(System.getProperty("line.separator"))
        return builder.toString()

    # WORKAOUND: because capturing output of Jython's subprocess module at testing with
    # pytest is not possible using Java implementation
    pb = ProcessBuilder(exec_args)
    env = popen_args.get('env')
    if env:
        process_env = pb.environment()
        for key in list(process_env.keySet()):
            if key not in env:
                _log.debug("remove from process-env: %s", key)
                process_env.remove(key)
        for key in env:
            process_env.put(key, env[key])
    pb.redirectErrorStream(True)
    process = pb.start()
    stdout = readInputStream(process.getInputStream())
    exitValue = process.waitFor()
    return exitValue, (stdout, stdout)