test/buildroot: check we log bwrap's error output

Check that any errors that bubblewrap spits out on stderr make it
to the log. A common case of bubblewrap failing is a runner failing
to execute.
This commit is contained in:
Christian Kellner 2020-08-26 15:06:22 +02:00 committed by David Rheinsberg
parent 96a5499ed9
commit ba94409d23

View file

@ -10,7 +10,7 @@ import unittest
import osbuild import osbuild
from osbuild.buildroot import BuildRoot from osbuild.buildroot import BuildRoot
from osbuild.monitor import NullMonitor from osbuild.monitor import LogMonitor, NullMonitor
from .. import test from .. import test
@ -47,6 +47,28 @@ class TestBuildRoot(test.TestBase):
r = root.run(["/usr/bin/false"], monitor) r = root.run(["/usr/bin/false"], monitor)
self.assertNotEqual(r.returncode, 0) self.assertNotEqual(r.returncode, 0)
def test_runner_fail(self):
runner = "org.osbuild.nonexistantrunner"
libdir = os.path.abspath(os.curdir)
var = pathlib.Path(self.tmp.name, "var")
var.mkdir()
logfile = os.path.join(self.tmp.name, "log.txt")
with BuildRoot("/", runner, libdir=libdir, var=var) as root, \
open(logfile, "w") as log:
monitor = LogMonitor(log.fileno())
api = osbuild.api.API({}, monitor)
root.register_api(api)
r = root.run(["/usr/bin/true"], monitor)
self.assertEqual(r.returncode, 1)
with open(logfile) as f:
log = f.read()
assert log
@unittest.skipUnless(test.TestBase.have_test_data(), "no test-data access") @unittest.skipUnless(test.TestBase.have_test_data(), "no test-data access")
def test_bind_mounts(self): def test_bind_mounts(self):
runner = "org.osbuild.linux" runner = "org.osbuild.linux"