from .cnfline import build_cnfvar
from . import cnfvar
from . import sysmisc
-from . import call_helpers
raise subprocess.CalledProcessError(status, cmd, stderr=stderr)
return subprocess.CompletedProcess(cmd, status, stdout=stdout, stderr=stderr)
else:
- if sys.version_info.major <= 3 and sys.version_info.minor < 5:
- return call_helpers.subprocess_run(cmd, check=not ignore_errors, shell=True)
- else:
- return subprocess.run(cmd, check=not ignore_errors, shell=True, capture_output=True)
+ return subprocess.run(cmd, check=not ignore_errors, shell=True, capture_output=True)
def verify_running(process='arnied', timeout=60, vm=None):
stderr_data.splitlines()
else:
return proc.returncode, stdout_data, stderr_data
-
-
-# Backports of py3.5+ subprocess module - nothing better than to
-# remove this and simply use 3.5+ python version on of course.
-
-class CompletedProcess(object):
- """
- Backported minimal class from the py3.5+ subprocess module.
-
- All arguments are equivalent to the formal subprocess module.
- """
- def __init__(self, args, returncode, stdout=None, stderr=None):
- self.args = args
- self.returncode = returncode
- self.stdout = stdout
- self.stderr = stderr
-
- def __repr__(self):
- args = ['args={!r}'.format(self.args),
- 'returncode={!r}'.format(self.returncode)]
- if self.stdout is not None:
- args.append('stdout={!r}'.format(self.stdout))
- if self.stderr is not None:
- args.append('stderr={!r}'.format(self.stderr))
- return "{}({})".format(type(self).__name__, ', '.join(args))
-
-
-class CalledProcessError(Exception):
- """
- Backported minimal class from the py3.5+ subprocess module.
-
- All arguments are equivalent to the formal subprocess module.
- """
- def __init__(self, returncode, cmd, stderr=None):
- self.returncode = returncode
- self.cmd = cmd
- self.stderr = stderr
-
- def __str__(self):
- return "Command '%s' returned non-zero exit status %d." % (
- self.cmd, self.returncode)
-
-
-def subprocess_run(args, check=True, shell=True, universal_newlines=False):
- """
- Backported minimal function from the py3.5+ subprocess module.
-
- All arguments are equivalent to the formal subprocess module.
- """
- command = args if isinstance(args, str) else " ".join(args)
- status, stdout, stderr = \
- call_and_capture(command, shell=shell, split_lines=False,
- universal_newlines=universal_newlines)
- if check and status != 0:
- raise CalledProcessError(status, args, stderr=stderr)
- else:
- return CompletedProcess(args, status, stdout=stdout, stderr=stderr)