test: move test_objectstore into module-tests
Move `test_objectstore` into the module-level tests. This allows us to run it as part of `make test-module. Make sure to properly guard it as root-only module.
This commit is contained in:
parent
9bb6123963
commit
3cf8b79e80
3 changed files with 52 additions and 9 deletions
5
.github/workflows/tests.yml
vendored
5
.github/workflows/tests.yml
vendored
|
|
@ -74,11 +74,6 @@ jobs:
|
||||||
cd osbuild
|
cd osbuild
|
||||||
python3 -m unittest -v test.test_osbuild
|
python3 -m unittest -v test.test_osbuild
|
||||||
|
|
||||||
- name: Run test_objectstore
|
|
||||||
run: |
|
|
||||||
cd osbuild
|
|
||||||
python3 -m unittest -v test.test_objectstore
|
|
||||||
|
|
||||||
sample_validation:
|
sample_validation:
|
||||||
name: "sample validation"
|
name: "sample validation"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
#
|
||||||
|
# Tests for the 'osbuild.objectstore' module.
|
||||||
|
#
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
@ -5,8 +9,10 @@ import unittest
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from osbuild import objectstore
|
from osbuild import objectstore
|
||||||
|
from .. import test
|
||||||
|
|
||||||
|
|
||||||
|
@unittest.skipUnless(test.TestBase.can_bind_mount(), "root-only")
|
||||||
class TestObjectStore(unittest.TestCase):
|
class TestObjectStore(unittest.TestCase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
@ -279,7 +285,3 @@ class TestObjectStore(unittest.TestCase):
|
||||||
p = Path(f"{path}/osbuild-test-file")
|
p = Path(f"{path}/osbuild-test-file")
|
||||||
with self.assertRaises(OSError):
|
with self.assertRaises(OSError):
|
||||||
p.touch()
|
p.touch()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
unittest.main()
|
|
||||||
46
test/test.py
46
test/test.py
|
|
@ -119,6 +119,52 @@ class TestBase(unittest.TestCase):
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def can_bind_mount() -> bool:
|
||||||
|
"""Check Bind-Mount Capability
|
||||||
|
|
||||||
|
Test whether we can bind-mount file-system objects. If yes, return
|
||||||
|
`True`, otherwise return `False`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
|
original = os.path.join(tmpdir, "original")
|
||||||
|
mnt = os.path.join(tmpdir, "mnt")
|
||||||
|
|
||||||
|
with open(original, "w") as f:
|
||||||
|
f.write("foo")
|
||||||
|
with open(mnt, "w") as f:
|
||||||
|
f.write("bar")
|
||||||
|
|
||||||
|
try:
|
||||||
|
subprocess.run(
|
||||||
|
[
|
||||||
|
"mount",
|
||||||
|
"--make-private",
|
||||||
|
"-o",
|
||||||
|
"bind,ro",
|
||||||
|
original,
|
||||||
|
mnt,
|
||||||
|
],
|
||||||
|
stdin=subprocess.DEVNULL,
|
||||||
|
stdout=subprocess.DEVNULL,
|
||||||
|
stderr=subprocess.DEVNULL,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
with open(mnt, "r") as f:
|
||||||
|
assert f.read() == "foo"
|
||||||
|
return True
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
return False
|
||||||
|
finally:
|
||||||
|
subprocess.run(
|
||||||
|
["umount", mnt],
|
||||||
|
stdin=subprocess.DEVNULL,
|
||||||
|
stdout=subprocess.DEVNULL,
|
||||||
|
stderr=subprocess.DEVNULL,
|
||||||
|
check=False,
|
||||||
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def have_rpm_ostree() -> bool:
|
def have_rpm_ostree() -> bool:
|
||||||
"""Check rpm-ostree Availability
|
"""Check rpm-ostree Availability
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue