pungi/tests/test_metadata.py
Haibo Lin 3eddcfccd8 Fix flake8 complaints - F401
F401 'dnf' imported but unused
F401 'imp' imported but unused
F401 'os' imported but unused
F401 'subprocess' imported but unused
F401 'sys' imported but unused
F401 'yum' imported but unused

JIRA: COMPOSE-4108
Signed-off-by: Haibo Lin <hlin@redhat.com>
2020-02-07 11:48:31 +08:00

222 lines
7.0 KiB
Python

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", ""),
],
)