test/api: add build root integration check

Add a new test that checks the integration of API end points with
the `BuildRoot`.
This commit is contained in:
Christian Kellner 2020-07-24 20:10:07 +02:00 committed by Tom Gundersen
parent c236039e0d
commit 6f8b850ef2

View file

@ -2,11 +2,15 @@
# Test for API infrastructure
#
import pathlib
import os
import sys
import tempfile
import unittest
import osbuild
from osbuild.buildroot import BuildRoot
from osbuild.monitor import NullMonitor
from osbuild.util import jsoncomm
@ -65,3 +69,27 @@ class TestAPI(unittest.TestCase):
with self.assertRaises(AssertionError):
with api:
pass
def test_buildroot(self):
# Check API and BuildRoot integration: the runner will call
# api.setup_stdio and thus check that connecting to the api
# works correctly
runner = "org.osbuild.linux"
libdir = os.path.abspath(os.curdir)
var = pathlib.Path(self.tmp.name, "var")
var.mkdir()
monitor = NullMonitor(sys.stderr.fileno())
with BuildRoot("/", runner, libdir=libdir, var=var) as root:
api = osbuild.api.API({}, monitor)
root.register_api(api)
r = root.run(["/usr/bin/true"])
self.assertEqual(r.returncode, 0)
# Test we can use `.run` multiple times
r = root.run(["/usr/bin/true"])
self.assertEqual(r.returncode, 0)
r = root.run(["/usr/bin/false"])
self.assertNotEqual(r.returncode, 0)