From 7dc87203f1d1b3b4fd65321825ce87b8281fb1bc Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Sep 16 2016 07:27:56 +0000 Subject: Fix compatibility with old productmd There are multiple places where 1.1 is assumed, so we have to depend on it. The test for legacy .composeinfo file needs to be updated as 1.1 does not include variants with dashes in identifiers. Signed-off-by: Lubomír Sedlář --- diff --git a/compose-utils.spec b/compose-utils.spec index 1a59f27..2f04ba8 100644 --- a/compose-utils.spec +++ b/compose-utils.spec @@ -10,12 +10,12 @@ Source0: https://pagure.io/releases/compose-utils/%{name}-%{version}.tar.bz2 BuildRequires: python2-devel BuildRequires: python2-nose -BuildRequires: python-productmd +BuildRequires: python-productmd >= 1.1 BuildRequires: python-freezegun BuildRequires: python-mock BuildRequires: kobo BuildRequires: kobo-rpmlib -Requires: python-productmd +Requires: python-productmd >= 1.1 Requires: kobo Requires: kobo-rpmlib Requires: rsync diff --git a/compose_utils/legacy.py b/compose_utils/legacy.py index 32e1f15..39b29c8 100644 --- a/compose_utils/legacy.py +++ b/compose_utils/legacy.py @@ -32,9 +32,7 @@ def _serialize_product(conf, release, compose=None, section='product'): else: conf.set(section, 'name', release.name) conf.set(section, 'short', release.short) - if hasattr(release, 'type'): - # Added in productmd 1.1 - conf.set(section, 'type', release.type.lower()) + conf.set(section, 'type', release.type.lower()) conf.set(section, 'version', release.version) if release.is_layered: conf.set(section, 'is_layered', 'true') diff --git a/tests/composes/DP-1.0-20160720.t.8/compose/.productmd11.composeinfo b/tests/composes/DP-1.0-20160720.t.8/compose/.productmd11.composeinfo new file mode 100644 index 0000000..fbed85d --- /dev/null +++ b/tests/composes/DP-1.0-20160720.t.8/compose/.productmd11.composeinfo @@ -0,0 +1,302 @@ +[compose] +date = 20160720 +id = DP-1.0-20160720.t.8 +respin = 8 +type = test + +[product] +family = Dummy Product +name = DP-1.0-20160720.t.8 +short = DP +type = ga +variants = Client,Everything,Live,Server +version = 1.0 + +[product-Server-Gluster] +is_layered = true +name = Gluster +short = Gluster +type = ga +version = 2.3 + +[variant-Client] +arches = i386,x86_64 +id = Client +name = Client +type = variant +uid = Client +variants = Client-optional + +[variant-Client-optional] +arches = i386,x86_64 +id = optional +name = optional +type = optional +uid = Client-optional + +[variant-Client-optional.i386] +debug_dir = Client-optional/i386/debug/tree +debug_packages = Client-optional/i386/debug/tree/Packages +debug_repository = Client-optional/i386/debug/tree +debug_tree = Client-optional/i386/debug/tree +debuginfo = Client-optional/i386/debug/tree +os_dir = Client-optional/i386/os +os_tree = Client-optional/i386/os +packages = Client-optional/i386/os/Packages +repository = Client-optional/i386/os +source_dir = Client-optional/source/tree +source_packages = Client-optional/source/tree/Packages +source_repository = Client-optional/source/tree +source_tree = Client-optional/source/tree + +[variant-Client-optional.x86_64] +debug_dir = Client-optional/x86_64/debug/tree +debug_packages = Client-optional/x86_64/debug/tree/Packages +debug_repository = Client-optional/x86_64/debug/tree +debug_tree = Client-optional/x86_64/debug/tree +debuginfo = Client-optional/x86_64/debug/tree +os_dir = Client-optional/x86_64/os +os_tree = Client-optional/x86_64/os +packages = Client-optional/x86_64/os/Packages +repository = Client-optional/x86_64/os +source_dir = Client-optional/source/tree +source_packages = Client-optional/source/tree/Packages +source_repository = Client-optional/source/tree +source_tree = Client-optional/source/tree + +[variant-Client.i386] +debug_dir = Client/i386/debug/tree +debug_packages = Client/i386/debug/tree/Packages +debug_repository = Client/i386/debug/tree +debug_tree = Client/i386/debug/tree +debuginfo = Client/i386/debug/tree +iso_dir = Client/i386/iso +isos = Client/i386/iso +os_dir = Client/i386/os +os_tree = Client/i386/os +packages = Client/i386/os/Packages +repository = Client/i386/os +source_dir = Client/source/tree +source_iso_dir = Client/source/iso +source_isos = Client/source/iso +source_packages = Client/source/tree/Packages +source_repository = Client/source/tree +source_tree = Client/source/tree + +[variant-Client.x86_64] +debug_dir = Client/x86_64/debug/tree +debug_packages = Client/x86_64/debug/tree/Packages +debug_repository = Client/x86_64/debug/tree +debug_tree = Client/x86_64/debug/tree +debuginfo = Client/x86_64/debug/tree +iso_dir = Client/x86_64/iso +isos = Client/x86_64/iso +os_dir = Client/x86_64/os +os_tree = Client/x86_64/os +packages = Client/x86_64/os/Packages +repository = Client/x86_64/os +source_dir = Client/source/tree +source_iso_dir = Client/source/iso +source_isos = Client/source/iso +source_packages = Client/source/tree/Packages +source_repository = Client/source/tree +source_tree = Client/source/tree + +[variant-Everything] +arches = i386,x86_64 +id = Everything +name = Everything +type = variant +uid = Everything + +[variant-Everything.i386] +debug_dir = Everything/i386/debug/tree +debug_packages = Everything/i386/debug/tree/Packages +debug_repository = Everything/i386/debug/tree +debug_tree = Everything/i386/debug/tree +debuginfo = Everything/i386/debug/tree +iso_dir = Everything/i386/iso +isos = Everything/i386/iso +os_dir = Everything/i386/os +os_tree = Everything/i386/os +packages = Everything/i386/os/Packages +repository = Everything/i386/os +source_dir = Everything/source/tree +source_iso_dir = Everything/source/iso +source_isos = Everything/source/iso +source_packages = Everything/source/tree/Packages +source_repository = Everything/source/tree +source_tree = Everything/source/tree + +[variant-Everything.x86_64] +debug_dir = Everything/x86_64/debug/tree +debug_packages = Everything/x86_64/debug/tree/Packages +debug_repository = Everything/x86_64/debug/tree +debug_tree = Everything/x86_64/debug/tree +debuginfo = Everything/x86_64/debug/tree +iso_dir = Everything/x86_64/iso +isos = Everything/x86_64/iso +os_dir = Everything/x86_64/os +os_tree = Everything/x86_64/os +packages = Everything/x86_64/os/Packages +repository = Everything/x86_64/os +source_dir = Everything/source/tree +source_iso_dir = Everything/source/iso +source_isos = Everything/source/iso +source_packages = Everything/source/tree/Packages +source_repository = Everything/source/tree +source_tree = Everything/source/tree + +[variant-Live] +arches = x86_64 +id = Live +name = Live +type = variant +uid = Live + +[variant-Live.x86_64] +debug_dir = Live/x86_64/debug/tree +debug_packages = Live/x86_64/debug/tree/Packages +debug_repository = Live/x86_64/debug/tree +debug_tree = Live/x86_64/debug/tree +debuginfo = Live/x86_64/debug/tree +iso_dir = Live/x86_64/iso +isos = Live/x86_64/iso +os_dir = Live/x86_64/os +os_tree = Live/x86_64/os +packages = Live/x86_64/os/Packages +repository = Live/x86_64/os +source_dir = Live/source/tree +source_iso_dir = Live/source/iso +source_isos = Live/source/iso +source_packages = Live/source/tree/Packages +source_repository = Live/source/tree +source_tree = Live/source/tree + +[variant-Server] +arches = s390x,x86_64 +id = Server +name = Server +type = variant +uid = Server +variants = Server-Gluster,Server-ResilientStorage,Server-optional + +[variant-Server-Gluster] +arches = x86_64 +id = Gluster +name = Gluster Layered Product +type = layered-product +uid = Server-Gluster + +[variant-Server-Gluster.x86_64] +debug_dir = Server-Gluster/x86_64/debug/tree +debug_packages = Server-Gluster/x86_64/debug/tree/Packages +debug_repository = Server-Gluster/x86_64/debug/tree +debug_tree = Server-Gluster/x86_64/debug/tree +debuginfo = Server-Gluster/x86_64/debug/tree +os_dir = Server-Gluster/x86_64/os +os_tree = Server-Gluster/x86_64/os +packages = Server-Gluster/x86_64/os/Packages +repository = Server-Gluster/x86_64/os +source_dir = Server-Gluster/source/tree +source_packages = Server-Gluster/source/tree/Packages +source_repository = Server-Gluster/source/tree +source_tree = Server-Gluster/source/tree + +[variant-Server-ResilientStorage] +arches = x86_64 +id = ResilientStorage +name = Resilient Storage +type = addon +uid = Server-ResilientStorage + +[variant-Server-ResilientStorage.x86_64] +debug_dir = Server/x86_64/debug/tree +debug_packages = Server/x86_64/debug/tree/addons/ResilientStorage +debug_repository = Server/x86_64/debug/tree/addons/ResilientStorage +debug_tree = Server/x86_64/debug/tree +debuginfo = Server/x86_64/debug/tree/addons/ResilientStorage +os_dir = Server/x86_64/os +os_tree = Server/x86_64/os +packages = Server/x86_64/os/addons/ResilientStorage +repository = Server/x86_64/os/addons/ResilientStorage +source_dir = Server/source/tree +source_packages = Server/source/tree/addons/ResilientStorage +source_repository = Server/source/tree/addons/ResilientStorage +source_tree = Server/source/tree + +[variant-Server-optional] +arches = s390x,x86_64 +id = optional +name = optional +type = optional +uid = Server-optional + +[variant-Server-optional.s390x] +debug_dir = Server-optional/s390x/debug/tree +debug_packages = Server-optional/s390x/debug/tree/Packages +debug_repository = Server-optional/s390x/debug/tree +debug_tree = Server-optional/s390x/debug/tree +debuginfo = Server-optional/s390x/debug/tree +os_dir = Server-optional/s390x/os +os_tree = Server-optional/s390x/os +packages = Server-optional/s390x/os/Packages +repository = Server-optional/s390x/os +source_dir = Server-optional/source/tree +source_packages = Server-optional/source/tree/Packages +source_repository = Server-optional/source/tree +source_tree = Server-optional/source/tree + +[variant-Server-optional.x86_64] +debug_dir = Server-optional/x86_64/debug/tree +debug_packages = Server-optional/x86_64/debug/tree/Packages +debug_repository = Server-optional/x86_64/debug/tree +debug_tree = Server-optional/x86_64/debug/tree +debuginfo = Server-optional/x86_64/debug/tree +os_dir = Server-optional/x86_64/os +os_tree = Server-optional/x86_64/os +packages = Server-optional/x86_64/os/Packages +repository = Server-optional/x86_64/os +source_dir = Server-optional/source/tree +source_packages = Server-optional/source/tree/Packages +source_repository = Server-optional/source/tree +source_tree = Server-optional/source/tree + +[variant-Server.s390x] +debug_dir = Server/s390x/debug/tree +debug_packages = Server/s390x/debug/tree/Packages +debug_repository = Server/s390x/debug/tree +debug_tree = Server/s390x/debug/tree +debuginfo = Server/s390x/debug/tree +iso_dir = Server/s390x/iso +isos = Server/s390x/iso +os_dir = Server/s390x/os +os_tree = Server/s390x/os +packages = Server/s390x/os/Packages +repository = Server/s390x/os +source_dir = Server/source/tree +source_iso_dir = Server/source/iso +source_isos = Server/source/iso +source_packages = Server/source/tree/Packages +source_repository = Server/source/tree +source_tree = Server/source/tree + +[variant-Server.x86_64] +debug_dir = Server/x86_64/debug/tree +debug_packages = Server/x86_64/debug/tree/Packages +debug_repository = Server/x86_64/debug/tree +debug_tree = Server/x86_64/debug/tree +debuginfo = Server/x86_64/debug/tree +iso_dir = Server/x86_64/iso +isos = Server/x86_64/iso +os_dir = Server/x86_64/os +os_tree = Server/x86_64/os +packages = Server/x86_64/os/Packages +repository = Server/x86_64/os +source_dir = Server/source/tree +source_iso_dir = Server/source/iso +source_isos = Server/source/iso +source_packages = Server/source/tree/Packages +source_repository = Server/source/tree +source_tree = Server/source/tree + diff --git a/tests/test_legacy_composeinfo.py b/tests/test_legacy_composeinfo.py index 50da51c..eab1514 100644 --- a/tests/test_legacy_composeinfo.py +++ b/tests/test_legacy_composeinfo.py @@ -15,6 +15,18 @@ from compose_utils.legacy import write_legacy_composeinfo BASE_PATH = os.path.join(os.path.dirname(__file__), 'composes', 'DP-1.0-20160720.t.8') +def get_expected(): + import pkg_resources + from distutils.version import LooseVersion + try: + productmd_ver = LooseVersion(pkg_resources.get_distribution('productmd').version) + if productmd_ver == LooseVersion('1.1'): + return '.productmd11.composeinfo' + except pkg_resources.DistributionNotFound: + pass + return '.composeinfo' + + class LegacyComposeInfoTest(unittest.TestCase): def setUp(self): @@ -23,7 +35,7 @@ class LegacyComposeInfoTest(unittest.TestCase): def test_write_legacy_file(self): output = StringIO.StringIO() write_legacy_composeinfo(self.compose.info, output) - with open(os.path.join(BASE_PATH, 'compose', '.composeinfo')) as f: + with open(os.path.join(BASE_PATH, 'compose', get_expected())) as f: expected = f.read().split() self.assertEqual(output.getvalue().split(), expected)