diff --git a/test/run/test_ostree.py b/test/run/test_ostree.py index ee60f79f..5da187a3 100644 --- a/test/run/test_ostree.py +++ b/test/run/test_ostree.py @@ -4,50 +4,69 @@ import os import tempfile -import unittest +import pytest from .. import test -@unittest.skipUnless(test.TestBase.have_test_data(), "no test-data access") -@unittest.skipUnless(test.TestBase.can_bind_mount(), "root-only") -class TestOSTree(test.TestBase): - def setUp(self): - self.osbuild = test.OSBuild(self) +@pytest.fixture(name="tmpdir", scope="module") +def tmpdir_fixture(): + with tempfile.TemporaryDirectory() as tmp: + yield tmp - def test_ostree(self): - with self.osbuild as osb: - with tempfile.TemporaryDirectory(dir="/var/tmp") as temp_dir: - # Build a container - manifest = os.path.join(self.locate_test_data(), - "manifests/fedora-ostree-container.json") - osb.compile_file(manifest, - output_dir=temp_dir, - checkpoints=["build", "ostree-tree", "ostree-commit"], - exports=["container"]) +@pytest.fixture(name="osb", scope="module") +def osbuild_fixture(): + with test.OSBuild() as osb: + yield osb - oci_archive = os.path.join(temp_dir, "container", "fedora-container.tar") - self.assertTrue(os.path.exists(oci_archive)) - # build a bootable ISO - manifest = os.path.join(self.locate_test_data(), - "manifests/fedora-ostree-bootiso.json") - osb.compile_file(manifest, - output_dir=temp_dir, - checkpoints=["build", "ostree-tree", "ostree-commit"], - exports=["bootiso"]) +@pytest.fixture(name="testdata", scope="module") +def testdata_fixture(): + return test.TestBase.locate_test_data() - bootiso = os.path.join(temp_dir, "bootiso", "fedora-ostree-boot.iso") - self.assertTrue(os.path.exists(bootiso)) - # build a qemu image - manifest = os.path.join(self.locate_test_data(), - "manifests/fedora-ostree-image.json") - osb.compile_file(manifest, - output_dir=temp_dir, - checkpoints=["build", "ostree-tree", "ostree-commit"], - exports=["qcow2"]) +@pytest.mark.skipif(not test.TestBase.have_test_data(), reason="no test-data access") +@pytest.mark.skipif(not test.TestBase.can_bind_mount(), reason="root-only") +def test_ostree_container(osb, tmpdir, testdata): - bootiso = os.path.join(temp_dir, "qcow2", "disk.qcow2") - self.assertTrue(os.path.exists(bootiso)) + # Build a container + manifest = os.path.join(testdata, + "manifests/fedora-ostree-container.json") + osb.compile_file(manifest, + output_dir=tmpdir, + checkpoints=["build", "ostree-tree", "ostree-commit"], + exports=["container"]) + + oci_archive = os.path.join(tmpdir, "container", "fedora-container.tar") + assert os.path.exists(oci_archive) + + +@pytest.mark.skipif(not test.TestBase.have_test_data(), reason="no test-data access") +@pytest.mark.skipif(not test.TestBase.can_bind_mount(), reason="root-only") +def test_ostree_bootiso(osb, tmpdir, testdata): + # build a bootable ISO + manifest = os.path.join(testdata, + "manifests/fedora-ostree-bootiso.json") + osb.compile_file(manifest, + output_dir=tmpdir, + checkpoints=["build", "ostree-tree", "ostree-commit"], + exports=["bootiso"]) + + bootiso = os.path.join(tmpdir, "bootiso", "fedora-ostree-boot.iso") + assert os.path.exists(bootiso) + + +@pytest.mark.skipif(not test.TestBase.have_test_data(), reason="no test-data access") +@pytest.mark.skipif(not test.TestBase.can_bind_mount(), reason="root-only") +def test_ostree_image(osb, tmpdir, testdata): + # build a qemu image + manifest = os.path.join(testdata, + "manifests/fedora-ostree-image.json") + osb.compile_file(manifest, + output_dir=tmpdir, + checkpoints=["build", "ostree-tree", "ostree-commit"], + exports=["qcow2"]) + + bootiso = os.path.join(tmpdir, "qcow2", "disk.qcow2") + assert os.path.exists(bootiso)