mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-28 05:36:32 +00:00
support/testing: factor out run_cmd_on_host
Currently many test cases call subprocess.check_output on their own. Factor out that code to an infra method so the call get standardized. This will be handful when switching the test infra to use Python 3. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
1b2928201f
commit
620c98a214
@ -55,6 +55,15 @@ def download(dldir, filename):
|
|||||||
return finalpath
|
return finalpath
|
||||||
|
|
||||||
|
|
||||||
|
def run_cmd_on_host(builddir, cmd):
|
||||||
|
"""Call subprocess.check_output and return the text output."""
|
||||||
|
out = subprocess.check_output(cmd,
|
||||||
|
stderr=open(os.devnull, "w"),
|
||||||
|
cwd=builddir,
|
||||||
|
env={"LANG": "C"})
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
def get_elf_arch_tag(builddir, prefix, fpath, tag):
|
def get_elf_arch_tag(builddir, prefix, fpath, tag):
|
||||||
"""
|
"""
|
||||||
Runs the cross readelf on 'fpath', then extracts the value of tag 'tag'.
|
Runs the cross readelf on 'fpath', then extracts the value of tag 'tag'.
|
||||||
@ -66,7 +75,7 @@ def get_elf_arch_tag(builddir, prefix, fpath, tag):
|
|||||||
"""
|
"""
|
||||||
cmd = ["host/bin/{}-readelf".format(prefix),
|
cmd = ["host/bin/{}-readelf".format(prefix),
|
||||||
"-A", os.path.join("target", fpath)]
|
"-A", os.path.join("target", fpath)]
|
||||||
out = subprocess.check_output(cmd, cwd=builddir, env={"LANG": "C"})
|
out = run_cmd_on_host(builddir, cmd)
|
||||||
regexp = re.compile("^ {}: (.*)$".format(tag))
|
regexp = re.compile("^ {}: (.*)$".format(tag))
|
||||||
for line in out.splitlines():
|
for line in out.splitlines():
|
||||||
m = regexp.match(line)
|
m = regexp.match(line)
|
||||||
@ -93,7 +102,7 @@ def get_elf_prog_interpreter(builddir, prefix, fpath):
|
|||||||
"""
|
"""
|
||||||
cmd = ["host/bin/{}-readelf".format(prefix),
|
cmd = ["host/bin/{}-readelf".format(prefix),
|
||||||
"-l", os.path.join("target", fpath)]
|
"-l", os.path.join("target", fpath)]
|
||||||
out = subprocess.check_output(cmd, cwd=builddir, env={"LANG": "C"})
|
out = run_cmd_on_host(builddir, cmd)
|
||||||
regexp = re.compile("^ *\[Requesting program interpreter: (.*)\]$")
|
regexp = re.compile("^ *\[Requesting program interpreter: (.*)\]$")
|
||||||
for line in out.splitlines():
|
for line in out.splitlines():
|
||||||
m = regexp.match(line)
|
m = regexp.match(line)
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
import infra.basetest
|
import infra.basetest
|
||||||
@ -30,10 +29,7 @@ class TestHardeningBase(infra.basetest.BRTest):
|
|||||||
"--file={}".format(filepath)]
|
"--file={}".format(filepath)]
|
||||||
# Checksec is being used for elf file analysis only. There are no
|
# Checksec is being used for elf file analysis only. There are no
|
||||||
# assumptions of target/run-time checks as part of this testing.
|
# assumptions of target/run-time checks as part of this testing.
|
||||||
ret = subprocess.check_output(cmd,
|
ret = infra.run_cmd_on_host(self.builddir, cmd)
|
||||||
stderr=open(os.devnull, "w"),
|
|
||||||
cwd=self.builddir,
|
|
||||||
env={"LANG": "C"})
|
|
||||||
return json.loads(ret)
|
return json.loads(ret)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
|
||||||
|
|
||||||
import infra.basetest
|
import infra.basetest
|
||||||
|
|
||||||
@ -15,10 +14,7 @@ CHECK_FS_TYPE_CMD = "mount | grep '/dev/root on / type {}'"
|
|||||||
|
|
||||||
def dumpe2fs_run(builddir, image):
|
def dumpe2fs_run(builddir, image):
|
||||||
cmd = ["host/sbin/dumpe2fs", os.path.join("images", image)]
|
cmd = ["host/sbin/dumpe2fs", os.path.join("images", image)]
|
||||||
ret = subprocess.check_output(cmd,
|
ret = infra.run_cmd_on_host(builddir, cmd)
|
||||||
stderr=open(os.devnull, "w"),
|
|
||||||
cwd=builddir,
|
|
||||||
env={"LANG": "C"})
|
|
||||||
return ret.strip().splitlines()
|
return ret.strip().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
|
||||||
|
|
||||||
import infra.basetest
|
import infra.basetest
|
||||||
|
|
||||||
@ -29,9 +28,7 @@ class TestF2FS(infra.basetest.BRTest):
|
|||||||
|
|
||||||
def test_run(self):
|
def test_run(self):
|
||||||
img = os.path.join(self.builddir, "images", "rootfs.f2fs")
|
img = os.path.join(self.builddir, "images", "rootfs.f2fs")
|
||||||
out = subprocess.check_output(["host/sbin/dump.f2fs", img],
|
out = infra.run_cmd_on_host(self.builddir, ["host/sbin/dump.f2fs", img])
|
||||||
cwd=self.builddir,
|
|
||||||
env={"LANG": "C"})
|
|
||||||
out = out.splitlines()
|
out = out.splitlines()
|
||||||
prop = dumpf2fs_getprop(out, "Info: total sectors")
|
prop = dumpf2fs_getprop(out, "Info: total sectors")
|
||||||
self.assertEqual(prop, "262144 (128 MB)")
|
self.assertEqual(prop, "262144 (128 MB)")
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
|
||||||
|
|
||||||
import infra.basetest
|
import infra.basetest
|
||||||
|
|
||||||
@ -30,9 +29,8 @@ class TestJffs2(infra.basetest.BRTest):
|
|||||||
|
|
||||||
def test_run(self):
|
def test_run(self):
|
||||||
img = os.path.join(self.builddir, "images", "rootfs.jffs2")
|
img = os.path.join(self.builddir, "images", "rootfs.jffs2")
|
||||||
out = subprocess.check_output(["host/sbin/jffs2dump", "-c", img],
|
cmd = ["host/sbin/jffs2dump", "-c", img]
|
||||||
cwd=self.builddir,
|
out = infra.run_cmd_on_host(self.builddir, cmd)
|
||||||
env={"LANG": "C"})
|
|
||||||
out = out.splitlines()
|
out = out.splitlines()
|
||||||
self.assertTrue(jffs2dump_find_file(out, "busybox"))
|
self.assertTrue(jffs2dump_find_file(out, "busybox"))
|
||||||
|
|
||||||
|
@ -15,9 +15,7 @@ class TestSquashfs(infra.basetest.BRTest):
|
|||||||
|
|
||||||
def test_run(self):
|
def test_run(self):
|
||||||
unsquashfs_cmd = ["host/bin/unsquashfs", "-s", "images/rootfs.squashfs"]
|
unsquashfs_cmd = ["host/bin/unsquashfs", "-s", "images/rootfs.squashfs"]
|
||||||
out = subprocess.check_output(unsquashfs_cmd,
|
out = infra.run_cmd_on_host(self.builddir, unsquashfs_cmd)
|
||||||
cwd=self.builddir,
|
|
||||||
env={"LANG": "C"})
|
|
||||||
out = out.splitlines()
|
out = out.splitlines()
|
||||||
self.assertEqual(out[0],
|
self.assertEqual(out[0],
|
||||||
"Found a valid SQUASHFS 4:0 superblock on images/rootfs.squashfs.")
|
"Found a valid SQUASHFS 4:0 superblock on images/rootfs.squashfs.")
|
||||||
|
@ -21,9 +21,7 @@ class TestUbi(infra.basetest.BRTest):
|
|||||||
# To be investigated.
|
# To be investigated.
|
||||||
def test_run(self):
|
def test_run(self):
|
||||||
img = os.path.join(self.builddir, "images", "rootfs.ubi")
|
img = os.path.join(self.builddir, "images", "rootfs.ubi")
|
||||||
out = subprocess.check_output(["file", img],
|
out = infra.run_cmd_on_host(self.builddir, ["file", img])
|
||||||
cwd=self.builddir,
|
|
||||||
env={"LANG": "C"})
|
|
||||||
out = out.splitlines()
|
out = out.splitlines()
|
||||||
self.assertIn("UBI image, version 1", out[0])
|
self.assertIn("UBI image, version 1", out[0])
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user