From e2231a8bd2d448dd8b9f7a2c4d66e37db6a8694a Mon Sep 17 00:00:00 2001 From: Christian Kellner Date: Wed, 12 Aug 2020 13:44:02 +0200 Subject: [PATCH] test/buildroot: simple check for bind mounts Check that bind-mounting works and read only bind mounts are indeed read-only and "normal" bind mounts are read-write. --- test/mod/test_buildroot.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/test/mod/test_buildroot.py b/test/mod/test_buildroot.py index 80a9bde2..df3caff4 100644 --- a/test/mod/test_buildroot.py +++ b/test/mod/test_buildroot.py @@ -46,3 +46,37 @@ class TestBuildRoot(test.TestBase): r = root.run(["/usr/bin/false"]) self.assertNotEqual(r.returncode, 0) + + @unittest.skipUnless(test.TestBase.have_test_data(), "no test-data access") + def test_bind_mounts(self): + runner = "org.osbuild.linux" + libdir = os.path.abspath(os.curdir) + var = pathlib.Path(self.tmp.name, "var") + var.mkdir() + + rw_data = pathlib.Path(self.tmp.name, "data") + rw_data.mkdir() + + scripts = os.path.join(self.locate_test_data(), "scripts") + + monitor = NullMonitor(sys.stderr.fileno()) + with BuildRoot("/", runner, libdir=libdir, var=var) as root: + api = osbuild.api.API({}, monitor) + root.register_api(api) + + ro_binds = [f"{scripts}:/scripts"] + + cmd = ["/scripts/mount_flags.py", + "/scripts", + "ro"] + + r = root.run(cmd, readonly_binds=ro_binds) + self.assertEqual(r.returncode, 0) + + cmd = ["/scripts/mount_flags.py", + "/rw-data", + "ro"] + + binds = [f"{rw_data}:/rw-data"] + r = root.run(cmd, binds=binds, readonly_binds=ro_binds) + self.assertEqual(r.returncode, 1)