pungi/tests/test_metadata.py

217 lines
7.4 KiB
Python
Raw Normal View History

import mock
import os
import sys
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", ""),
],
)