Blame test/python_framework/cmd_helper.py

Packit Service 724aca
#
Packit Service 724aca
#  Copyright (C) 2017 Intel Corporation.
Packit Service 724aca
#  All rights reserved.
Packit Service 724aca
#
Packit Service 724aca
#  Redistribution and use in source and binary forms, with or without
Packit Service 724aca
#  modification, are permitted provided that the following conditions are met:
Packit Service 724aca
#  1. Redistributions of source code must retain the above copyright notice(s),
Packit Service 724aca
#     this list of conditions and the following disclaimer.
Packit Service 724aca
#  2. Redistributions in binary form must reproduce the above copyright notice(s),
Packit Service 724aca
#     this list of conditions and the following disclaimer in the documentation
Packit Service 724aca
#     and/or other materials provided with the distribution.
Packit Service 724aca
#
Packit Service 724aca
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS
Packit Service 724aca
#  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
Packit Service 724aca
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
Packit Service 724aca
#  EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
Packit Service 724aca
#  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Packit Service 724aca
#  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
Packit Service 724aca
#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
Packit Service 724aca
#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
Packit Service 724aca
#  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
Packit Service 724aca
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit Service 724aca
#
Packit Service 724aca
Packit Service 724aca
import pytest
Packit Service 724aca
import os
Packit Service 724aca
import tempfile
Packit Service 724aca
import subprocess
Packit Service 724aca
Packit Service 724aca
class CMD_helper(object):
Packit Service 724aca
Packit Service 724aca
    def execute_cmd(self, command, sudo=False):
Packit Service 724aca
        if sudo:
Packit Service 724aca
            command = "sudo {0}".format(command)
Packit Service 724aca
        #Initialize temp file for stdout. Will be removed when closed.
Packit Service 724aca
        outfile = tempfile.SpooledTemporaryFile()
Packit Service 724aca
        try:
Packit Service 724aca
            #Invoke process
Packit Service 724aca
            p = subprocess.Popen(command, stdout=outfile, stderr=subprocess.STDOUT, shell=True)
Packit Service 724aca
            p.communicate()
Packit Service 724aca
            #Read stdout from file
Packit Service 724aca
            outfile.seek(0)
Packit Service 724aca
            stdout = outfile.read()
Packit Service 724aca
        except:
Packit Service 724aca
            raise
Packit Service 724aca
        finally:
Packit Service 724aca
            #Make sure the file is closed
Packit Service 724aca
            outfile.close()
Packit Service 724aca
        retcode = p.returncode
Packit Service 724aca
        return stdout, retcode
Packit Service 724aca
Packit Service 724aca
    def get_command_path(self, binary):
Packit Service 724aca
        """Get the path to the binary."""
Packit Service 724aca
        path = os.path.dirname(os.path.abspath(__file__))
Packit Service 724aca
        return os.path.join(path, binary)