oggit/packages/pyblkid/opengnsys-pyblkid-0.3/tests/utils.py

44 lines
1.3 KiB
Python

import os
import subprocess
def run_command(command):
res = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = res.communicate()
if res.returncode != 0:
output = out.decode().strip() + "\n\n" + err.decode().strip()
else:
output = out.decode().strip()
return (res.returncode, output)
def read_file(filename):
with open(filename, "r") as f:
content = f.read()
return content
def loop_setup(filename):
if filename.endswith(".xz") and not os.path.exists(filename[:-3]):
ret, out = run_command("xz --decompress --keep %s" % filename)
if ret != 0:
raise RuntimeError("Failed to decompress file %s: %s" % (filename, out))
filename = filename[:-3]
ret, out = run_command("losetup --show --partscan -f %s" % filename)
if ret != 0:
raise RuntimeError("Failed to create loop device from %s: %s" % (filename, out))
return out
def loop_teardown(loopdev, filename=None):
ret, out = run_command("losetup -d %s" % loopdev)
if ret != 0:
raise RuntimeError("Failed to detach loop device %s: %s" % (loopdev, out))
# remove the extracted test file
if filename and filename.endswith(".xz") and os.path.exists(filename[:-3]):
os.remove(filename[:-3])