diff --git a/test/mod/test_fmt_v2.py b/test/mod/test_fmt_v2.py new file mode 100644 index 00000000..2bf0407c --- /dev/null +++ b/test/mod/test_fmt_v2.py @@ -0,0 +1,109 @@ +# +# Tests specific for version 2 of the format +# + +import os +import unittest + +import osbuild +import osbuild.meta + + +BASIC_PIPELINE = { + "version": "2", + "sources": { + "org.osbuild.files": { + "items": { + "sha256:6eeebf21f245bf0d6f58962dc49b6dfb51f55acb6a595c6b9cbe9628806b80a4": + "https://internet/curl-7.69.1-1.fc32.x86_64.rpm", + } + }, + "org.osbuild.ostree": { + "items": { + "439911411ce7868a7b058c2a660e421991eb2df10e2bdce1fa559bd4390105d1": { + "remote": { + "url": "file:///repo", + "gpgkeys": ["data"] + } + } + } + } + }, + "pipelines": [ + { + "name": "build", + "runner": "org.osbuild.linux", + "stages": [ + { + "type": "org.osbuild.noop", + "options": {"zero": 0} + } + ] + }, + { + "name": "tree", + "build": "name:build", + "stages": [ + { + "type": "org.osbuild.noop", + "options": {"one": 1} + } + ] + }, + { + "name": "assembler", + "build": "name:build", + "stages": [ + { + "type": "org.osbuild.noop", + "options": {"one": 3} + } + ] + } + ] +} + + +class TestFormatV1(unittest.TestCase): + def setUp(self): + self.index = osbuild.meta.Index(os.curdir) + + def test_load(self): + + desc = BASIC_PIPELINE + info = self.index.detect_format_info(desc) + assert info, "Failed to detect format" + + fmt = info.module + self.assertEqual(fmt.VERSION, "2") + + manifest = fmt.load(desc, self.index) + self.assertIsNotNone(manifest) + + self.assertTrue(manifest.pipelines) + self.assertTrue(len(manifest.pipelines) == 3) + + build = manifest["build"] + self.assertIsNotNone(build) + + tree = manifest["tree"] + self.assertIsNotNone(tree) + self.assertIsNotNone(tree.build) + self.assertEqual(tree.build, build.id) + self.assertEqual(tree.runner, "org.osbuild.linux") + + assembler = manifest["assembler"] + self.assertIsNotNone(assembler) + self.assertIsNotNone(assembler.build) + self.assertEqual(assembler.build, build.id) + self.assertEqual(assembler.runner, "org.osbuild.linux") + + def test_format_info(self): + index = self.index + + lst = index.list_formats() + self.assertIn("osbuild.formats.v2", lst) + + # the basic test manifest + info = index.detect_format_info(BASIC_PIPELINE) + self.assertEqual(info.version, "2")