osbuild: add description() methods
We already allow loading from a description. This adds the opposite direction to export Pipelines, Stages, and Assemblers.
This commit is contained in:
parent
ec671ddc04
commit
054fea3d83
4 changed files with 105 additions and 0 deletions
77
test/test_osbuild.py
Normal file
77
test/test_osbuild.py
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
|
||||
import osbuild
|
||||
import unittest
|
||||
|
||||
|
||||
class TestDescriptions(unittest.TestCase):
|
||||
def test_canonical(self):
|
||||
"""Degenerate case. Make sure we always return the same canonical
|
||||
description when passing empty or null values."""
|
||||
|
||||
cases = [
|
||||
{},
|
||||
{ "assembler": None },
|
||||
{ "stages": [] },
|
||||
{ "build": {} },
|
||||
{ "build": None }
|
||||
]
|
||||
for pipeline in cases:
|
||||
with self.subTest(pipeline):
|
||||
self.assertEqual(osbuild.load(pipeline).description(), {})
|
||||
|
||||
def test_stage(self):
|
||||
name = "org.osbuild.test"
|
||||
options = { "one": 1 }
|
||||
cases = [
|
||||
(osbuild.Stage(name, None, None, {}), {"name": name}),
|
||||
(osbuild.Stage(name, None, None, None), {"name": name}),
|
||||
(osbuild.Stage(name, None, None, options), {"name": name, "options": options}),
|
||||
]
|
||||
for stage, description in cases:
|
||||
with self.subTest(description):
|
||||
self.assertEqual(stage.description(), description)
|
||||
|
||||
def test_assembler(self):
|
||||
name = "org.osbuild.test"
|
||||
options = { "one": 1 }
|
||||
cases = [
|
||||
(osbuild.Assembler(name, {}), {"name": name}),
|
||||
(osbuild.Assembler(name, None), {"name": name}),
|
||||
(osbuild.Assembler(name, options), {"name": name, "options": options}),
|
||||
]
|
||||
for assembler, description in cases:
|
||||
with self.subTest(description):
|
||||
self.assertEqual(assembler.description(), description)
|
||||
|
||||
def test_pipeline(self):
|
||||
build = osbuild.Pipeline()
|
||||
build.add_stage("org.osbuild.test", { "one": 1 })
|
||||
|
||||
pipeline = osbuild.Pipeline()
|
||||
pipeline.set_build(build)
|
||||
pipeline.add_stage("org.osbuild.test", { "one": 2 })
|
||||
pipeline.set_assembler("org.osbuild.test")
|
||||
|
||||
self.assertEqual(pipeline.description(), {
|
||||
"build": {
|
||||
"stages": [
|
||||
{
|
||||
"name": "org.osbuild.test",
|
||||
"options": { "one": 1 }
|
||||
}
|
||||
]
|
||||
},
|
||||
"stages": [
|
||||
{
|
||||
"name": "org.osbuild.test",
|
||||
"options": { "one": 2 }
|
||||
}
|
||||
],
|
||||
"assembler": {
|
||||
"name": "org.osbuild.test"
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue