222 lines
7.0 KiB
Python
222 lines
7.0 KiB
Python
from unittest import mock
|
|
import os
|
|
|
|
import six
|
|
|
|
from tests import helpers
|
|
|
|
from pungi import metadata
|
|
from pungi.compose_metadata import discinfo
|
|
|
|
|
|
class DiscInfoTestCase(helpers.PungiTestCase):
|
|
def setUp(self):
|
|
super(DiscInfoTestCase, self).setUp()
|
|
os.environ["SOURCE_DATE_EPOCH"] = "101010101"
|
|
self.path = os.path.join(self.topdir, "compose/Server/x86_64/os/.discinfo")
|
|
|
|
def test_write_discinfo_variant(self):
|
|
compose = helpers.DummyCompose(
|
|
self.topdir, {"release_name": "Test", "release_version": "1.0"}
|
|
)
|
|
|
|
metadata.write_discinfo(compose, "x86_64", compose.variants["Server"])
|
|
|
|
with open(self.path) as f:
|
|
self.assertEqual(
|
|
f.read().strip().split("\n"), ["101010101", "Test 1.0", "x86_64", "ALL"]
|
|
)
|
|
|
|
self.assertEqual(
|
|
discinfo.read_discinfo(self.path),
|
|
{
|
|
"timestamp": "101010101",
|
|
"description": "Test 1.0",
|
|
"disc_numbers": ["ALL"],
|
|
"arch": "x86_64",
|
|
},
|
|
)
|
|
|
|
def test_write_discinfo_custom_description(self):
|
|
compose = helpers.DummyCompose(
|
|
self.topdir,
|
|
{
|
|
"release_name": "Test",
|
|
"release_version": "1.0",
|
|
"release_discinfo_description": "Fuzzy %(variant_name)s.%(arch)s",
|
|
},
|
|
)
|
|
compose.variants["Server"].name = "Server"
|
|
|
|
metadata.write_discinfo(compose, "x86_64", compose.variants["Server"])
|
|
|
|
with open(self.path) as f:
|
|
self.assertEqual(
|
|
f.read().strip().split("\n"),
|
|
["101010101", "Fuzzy Server.x86_64", "x86_64", "ALL"],
|
|
)
|
|
|
|
def test_write_discinfo_layered_product(self):
|
|
compose = helpers.DummyCompose(
|
|
self.topdir,
|
|
{
|
|
"release_name": "Test",
|
|
"release_version": "1.0",
|
|
"base_product_name": "Base",
|
|
"base_product_version": 42,
|
|
},
|
|
)
|
|
|
|
metadata.write_discinfo(compose, "x86_64", compose.variants["Server"])
|
|
|
|
with open(self.path) as f:
|
|
self.assertEqual(
|
|
f.read().strip().split("\n"),
|
|
["101010101", "Test 1.0 for Base 42", "x86_64", "ALL"],
|
|
)
|
|
|
|
def test_write_discinfo_integrated_layered_product(self):
|
|
compose = helpers.DummyCompose(
|
|
self.topdir, {"release_name": "Test", "release_version": "1.0"}
|
|
)
|
|
compose.variants["ILP"] = mock.Mock(
|
|
uid="Server",
|
|
arches=["x86_64"],
|
|
type="layered-product",
|
|
is_empty=False,
|
|
release_name="Integrated",
|
|
release_version="2.1",
|
|
parent=compose.variants["Server"],
|
|
)
|
|
|
|
metadata.write_discinfo(compose, "x86_64", compose.variants["ILP"])
|
|
|
|
with open(self.path) as f:
|
|
self.assertEqual(
|
|
f.read().strip().split("\n"),
|
|
["101010101", "Integrated 2.1 for Test 1", "x86_64", "ALL"],
|
|
)
|
|
|
|
def test_addons_dont_have_discinfo(self):
|
|
compose = helpers.DummyCompose(
|
|
self.topdir, {"release_name": "Test", "release_version": "1.0"}
|
|
)
|
|
compose.variants["ILP"] = mock.Mock(
|
|
uid="Server",
|
|
arches=["x86_64"],
|
|
type="addon",
|
|
is_empty=False,
|
|
parent=compose.variants["Server"],
|
|
)
|
|
|
|
metadata.write_discinfo(compose, "x86_64", compose.variants["ILP"])
|
|
|
|
self.assertFalse(os.path.isfile(self.path))
|
|
|
|
|
|
class MediaRepoTestCase(helpers.PungiTestCase):
|
|
def setUp(self):
|
|
super(MediaRepoTestCase, self).setUp()
|
|
self.path = os.path.join(self.topdir, "compose/Server/x86_64/os/media.repo")
|
|
|
|
def test_write_media_repo(self):
|
|
compose = helpers.DummyCompose(
|
|
self.topdir, {"release_name": "Test", "release_version": "1.0"}
|
|
)
|
|
|
|
metadata.write_media_repo(
|
|
compose, "x86_64", compose.variants["Server"], timestamp=123456
|
|
)
|
|
|
|
with open(self.path) as f:
|
|
lines = f.read().strip().split("\n")
|
|
self.assertEqual(lines[0], "[InstallMedia]")
|
|
six.assertCountEqual(
|
|
self,
|
|
lines[1:],
|
|
[
|
|
"name=Test 1.0",
|
|
"mediaid=123456",
|
|
"metadata_expire=-1",
|
|
"gpgcheck=0",
|
|
"cost=500",
|
|
],
|
|
)
|
|
|
|
def test_addons_dont_have_media_repo(self):
|
|
compose = helpers.DummyCompose(
|
|
self.topdir, {"release_name": "Test", "release_version": "1.0"}
|
|
)
|
|
compose.variants["ILP"] = mock.Mock(
|
|
uid="Server",
|
|
arches=["x86_64"],
|
|
type="addon",
|
|
is_empty=False,
|
|
parent=compose.variants["Server"],
|
|
)
|
|
|
|
metadata.write_discinfo(compose, "x86_64", compose.variants["ILP"])
|
|
|
|
self.assertFalse(os.path.isfile(self.path))
|
|
|
|
|
|
FOO_MD5 = {"md5": "acbd18db4cc2f85cedef654fccc4a4d8"}
|
|
BAR_MD5 = {"md5": "37b51d194a7513e45b56f6524f2d51f2"}
|
|
|
|
|
|
class TestPopulateExtraFiles(helpers.PungiTestCase):
|
|
def setUp(self):
|
|
super(TestPopulateExtraFiles, self).setUp()
|
|
self.variant = mock.Mock(uid="Server")
|
|
self.metadata = mock.Mock()
|
|
|
|
def test_with_relative_root(self):
|
|
helpers.touch(
|
|
os.path.join(self.topdir, "compose/Server/x86_64/os/foo"), content="foo"
|
|
)
|
|
helpers.touch(
|
|
os.path.join(self.topdir, "compose/Server/x86_64/os/bar"), content="bar"
|
|
)
|
|
|
|
metadata.populate_extra_files_metadata(
|
|
self.metadata,
|
|
self.variant,
|
|
"x86_64",
|
|
os.path.join(self.topdir, "compose/Server/x86_64/os"),
|
|
["foo", "bar"],
|
|
["md5"],
|
|
relative_root=os.path.join(self.topdir, "compose"),
|
|
)
|
|
|
|
self.maxDiff = None
|
|
|
|
six.assertCountEqual(
|
|
self,
|
|
self.metadata.mock_calls,
|
|
[
|
|
mock.call.add("Server", "x86_64", "Server/x86_64/os/foo", 3, FOO_MD5),
|
|
mock.call.add("Server", "x86_64", "Server/x86_64/os/bar", 3, BAR_MD5),
|
|
mock.call.dump_for_tree(
|
|
mock.ANY, "Server", "x86_64", "Server/x86_64/os/"
|
|
),
|
|
],
|
|
)
|
|
|
|
def test_without_relative_root(self):
|
|
helpers.touch(os.path.join(self.topdir, "foo"), content="foo")
|
|
helpers.touch(os.path.join(self.topdir, "bar"), content="bar")
|
|
|
|
metadata.populate_extra_files_metadata(
|
|
self.metadata, self.variant, "x86_64", self.topdir, ["foo", "bar"], ["md5"]
|
|
)
|
|
|
|
six.assertCountEqual(
|
|
self,
|
|
self.metadata.mock_calls,
|
|
[
|
|
mock.call.add("Server", "x86_64", "foo", 3, FOO_MD5),
|
|
mock.call.add("Server", "x86_64", "bar", 3, BAR_MD5),
|
|
mock.call.dump_for_tree(mock.ANY, "Server", "x86_64", ""),
|
|
],
|
|
)
|