From a3d91176f76a96301dd4a3611c251868740574a7 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Oct 06 2017 11:51:51 +0000 Subject: Ignore module build suffix in release Packages in modules can be rebuild with just a difference in dist tag. Otherwise the package is identical. We should not report them as downgrades or upgrades just because the module hash is different. If there is a real upgrade or downgrade, a full NVR is reported though (including the module suffix). Also if there are multiple copies of a package, addition or dropping will be reported correctly. There's a new command line argument to specify the suffix that MBS uses for rebuilds. Fixes: https://pagure.io/compose-utils/issue/62 Signed-off-by: Lubomír Sedlář --- diff --git a/bin/compose-changelog b/bin/compose-changelog index fdaab8a..40f3f2d 100755 --- a/bin/compose-changelog +++ b/bin/compose-changelog @@ -20,7 +20,7 @@ def run(opts): old_compose = productmd.compose.Compose(opts.compose1) new_compose = productmd.compose.Compose(opts.compose2) - changelog = ComposeChangelog() + changelog = ComposeChangelog(strip_suffix=opts.module_suffix) try: data = changelog.get_changelog(old_compose, new_compose) except RuntimeError as exc: @@ -46,5 +46,8 @@ if __name__ == '__main__': action='store_true', default=False, help='Print all information about about packages.') + parser.add_argument('--module-suffix', + action='store', + help='Suffix for module builds configured in MBS.') opts = parser.parse_args() run(opts) diff --git a/compose_utils/changelog.py b/compose_utils/changelog.py index b02617f..3ce9f8d 100644 --- a/compose_utils/changelog.py +++ b/compose_utils/changelog.py @@ -11,6 +11,7 @@ __all__ = ( import os import json +import re from distutils.version import LooseVersion import kobo.pkgset @@ -149,7 +150,11 @@ def get_srpm(lst, name, rpm_obj_list): class ComposeChangelog(object): - def __init__(self): + def __init__(self, strip_suffix=None): + self.suffix_re = None + if strip_suffix: + self.suffix_re = re.compile('\.%s[0-9a-fA-F]+$' % strip_suffix) + self.file_cache = kobo.pkgset.FileCache(SimpleRpmWrapperWithChangelog) def get_srpms(self, compose): @@ -337,6 +342,12 @@ class ComposeChangelog(object): new_package = get_srpm(srpm_headers_new, name, rpm_headers_new[name]) old_package = get_srpm(srpm_headers_old, name, rpm_headers_old[name]) + if self.suffix_re: + # We need to compare releases without considering hash from + # module build. + if self.suffix_re.sub('', new_package.nvr) == self.suffix_re.sub('', old_package.nvr): + continue + data = {} data["name"] = new_package.name data["nvr"] = new_package.nvr diff --git a/doc/compose-changelog.1 b/doc/compose-changelog.1 index 06245a8..9bf1260 100644 --- a/doc/compose-changelog.1 +++ b/doc/compose-changelog.1 @@ -31,6 +31,14 @@ Set custom identifier for the generated files. Print all information about packages including names of all RPMs and their sizes. Without this option the output is shortened to only included information about actual changes. +.TP +.BR \-\-module-suffix [\fI=SUFFIX\fR] +Use this argument for modular composes. The suffix followed by hex hash will be +stripped from package release values, to avoid having rebuilds with no change +reported as upgrade or downgrade just because of different module hash. +.IP +The default value used in MBS is \fImodule_\fR. Unless configured otherwise, +that is the one you want. .SH EXIT CODE This tool always exits with status code of \fB0\fR. .SH BUGS diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/c/cloud-init-0.7.9-8.module_813d223c.src.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/c/cloud-init-0.7.9-8.module_813d223c.src.rpm new file mode 100644 index 0000000..d84f02d Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/c/cloud-init-0.7.9-8.module_813d223c.src.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.src.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.src.rpm new file mode 100644 index 0000000..6e1057c Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.src.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_813d223c.src.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_813d223c.src.rpm new file mode 100644 index 0000000..89c6a6e Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_813d223c.src.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/p/python-configobj-5.0.6-9.module_813d223c.src.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/p/python-configobj-5.0.6-9.module_813d223c.src.rpm new file mode 100644 index 0000000..e612857 Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/source/tree/Packages/p/python-configobj-5.0.6-9.module_813d223c.src.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/c/cloud-init-0.7.9-8.module_813d223c.noarch.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/c/cloud-init-0.7.9-8.module_813d223c.noarch.rpm new file mode 100644 index 0000000..19873b5 Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/c/cloud-init-0.7.9-8.module_813d223c.noarch.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.noarch.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.noarch.rpm new file mode 100644 index 0000000..a3d86ab Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.noarch.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_813d223c.noarch.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_813d223c.noarch.rpm new file mode 100644 index 0000000..ed1bc43 Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_813d223c.noarch.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/p/python3-configobj-5.0.6-9.module_813d223c.noarch.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/p/python3-configobj-5.0.6-9.module_813d223c.noarch.rpm new file mode 100644 index 0000000..d5cf15d Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/Server/x86_64/os/Packages/p/python3-configobj-5.0.6-9.module_813d223c.noarch.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/composeinfo.json b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/composeinfo.json new file mode 100644 index 0000000..4b4d974 --- /dev/null +++ b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/composeinfo.json @@ -0,0 +1,64 @@ +{ + "header": { + "type": "productmd.composeinfo", + "version": "1.2" + }, + "payload": { + "compose": { + "date": "20171004", + "id": "Fedora-Modular-Bikeshed-20171004.n.0", + "respin": 0, + "type": "nightly" + }, + "release": { + "internal": false, + "name": "Fedora-Modular", + "short": "Fedora-Modular", + "type": "ga", + "version": "Bikeshed" + }, + "variants": { + "Server": { + "arches": [ + "x86_64" + ], + "id": "Server", + "name": "Server", + "paths": { + "debug_packages": { + "x86_64": "Server/x86_64/debug/tree/Packages" + }, + "debug_repository": { + "x86_64": "Server/x86_64/debug/tree" + }, + "debug_tree": { + "x86_64": "Server/x86_64/debug/tree" + }, + "isos": { + "x86_64": "Server/x86_64/iso" + }, + "os_tree": { + "x86_64": "Server/x86_64/os" + }, + "packages": { + "x86_64": "Server/x86_64/os/Packages" + }, + "repository": { + "x86_64": "Server/x86_64/os" + }, + "source_packages": { + "x86_64": "Server/source/tree/Packages" + }, + "source_repository": { + "x86_64": "Server/source/tree" + }, + "source_tree": { + "x86_64": "Server/source/tree" + } + }, + "type": "variant", + "uid": "Server" + } + } + } +} diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/images.json b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/images.json new file mode 100644 index 0000000..dd356ee --- /dev/null +++ b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/images.json @@ -0,0 +1,16 @@ +{ + "header": { + "type": "productmd.images", + "version": "1.2" + }, + "payload": { + "compose": { + "date": "20171004", + "id": "Fedora-Modular-Bikeshed-20171004.n.0", + "respin": 0, + "type": "nightly" + }, + "images": { + } + } +} diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/rpms.json b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/rpms.json new file mode 100644 index 0000000..10ea31d --- /dev/null +++ b/tests/composes/Fedora-Modular-Bikeshed-20171004.n.0/compose/metadata/rpms.json @@ -0,0 +1,68 @@ +{ + "header": { + "type": "productmd.rpms", + "version": "1.2" + }, + "payload": { + "compose": { + "date": "20171004", + "id": "Fedora-Modular-Bikeshed-20171004.n.0", + "respin": 0, + "type": "nightly" + }, + "rpms": { + "Server": { + "x86_64": { + "cloud-init-0:0.7.9-8.module_813d223c.src": { + "cloud-init-0:0.7.9-8.module_813d223c.src": { + "category": "source", + "path": "Server/source/tree/Packages/c/cloud-init-0.7.9-8.module_813d223c.src.rpm", + "sigkey": "a3cc4e62" + }, + "cloud-init-0:0.7.9-8.module_813d223c.noarch": { + "category": "binary", + "path": "Server/x86_64/os/Packages/c/cloud-init-0.7.9-8.module_813d223c.noarch.rpm", + "sigkey": "a3cc4e62" + } + }, + "net-tools-2.0-0.44.20160912git.module_6050b07a.src": { + "net-tools-2.0-0.44.20160912git.module_6050b07a.src": { + "category": "source", + "path": "Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.src.rpm", + "sigkey": "a3cc4e62" + }, + "net-tools-2.0-0.44.20160912git.module_6050b07a.noarch": { + "category": "binary", + "path": "Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.noarch.rpm", + "sigkey": "a3cc4e62" + } + }, + "net-tools-2.0-0.44.20160912git.module_813d223c.src": { + "net-tools-2.0-0.44.20160912git.module_813d223c.src": { + "category": "source", + "path": "Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_813d223c.src.rpm", + "sigkey": "a3cc4e62" + }, + "net-tools-2.0-0.44.20160912git.module_813d223c.noarch": { + "category": "binary", + "path": "Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_813d223c.noarch.rpm", + "sigkey": "a3cc4e62" + } + }, + "python-configobj-0:5.0.6-9.module_813d223c.src": { + "python-configobj-0:5.0.6-9.module_813d223c.src": { + "category": "source", + "path": "Server/source/tree/Packages/p/python-configobj-5.0.6-9.module_813d223c.src.rpm", + "sigkey": "a3cc4e62" + }, + "python3-configobj-0:5.0.6-9.module_813d223c.noarch": { + "category": "binary", + "path": "Server/x86_64/os/Packages/p/python3-configobj-5.0.6-9.module_813d223c.noarch.rpm", + "sigkey": "a3cc4e62" + } + } + } + } + } + } +} diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/c/cloud-init-0.7.9-9.module_f8c7dcdc.src.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/c/cloud-init-0.7.9-9.module_f8c7dcdc.src.rpm new file mode 100644 index 0000000..4a3b735 Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/c/cloud-init-0.7.9-9.module_f8c7dcdc.src.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.src.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.src.rpm new file mode 100644 index 0000000..6e1057c Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.src.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/p/python-configobj-5.0.6-9.module_f8c7dcdc.src.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/p/python-configobj-5.0.6-9.module_f8c7dcdc.src.rpm new file mode 100644 index 0000000..953e5ea Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/source/tree/Packages/p/python-configobj-5.0.6-9.module_f8c7dcdc.src.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/c/cloud-init-0.7.9-9.module_f8c7dcdc.noarch.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/c/cloud-init-0.7.9-9.module_f8c7dcdc.noarch.rpm new file mode 100644 index 0000000..1e620a3 Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/c/cloud-init-0.7.9-9.module_f8c7dcdc.noarch.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.noarch.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.noarch.rpm new file mode 100644 index 0000000..a3d86ab Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.noarch.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/p/python3-configobj-5.0.6-9.module_f8c7dcdc.noarch.rpm b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/p/python3-configobj-5.0.6-9.module_f8c7dcdc.noarch.rpm new file mode 100644 index 0000000..059d7c1 Binary files /dev/null and b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/Server/x86_64/os/Packages/p/python3-configobj-5.0.6-9.module_f8c7dcdc.noarch.rpm differ diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/composeinfo.json b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/composeinfo.json new file mode 100644 index 0000000..d91bb47 --- /dev/null +++ b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/composeinfo.json @@ -0,0 +1,64 @@ +{ + "header": { + "type": "productmd.composeinfo", + "version": "1.2" + }, + "payload": { + "compose": { + "date": "20171005", + "id": "Fedora-Modular-Bikeshed-20171005.n.0", + "respin": 0, + "type": "nightly" + }, + "release": { + "internal": false, + "name": "Fedora-Modular", + "short": "Fedora-Modular", + "type": "ga", + "version": "Bikeshed" + }, + "variants": { + "Server": { + "arches": [ + "x86_64" + ], + "id": "Server", + "name": "Server", + "paths": { + "debug_packages": { + "x86_64": "Server/x86_64/debug/tree/Packages" + }, + "debug_repository": { + "x86_64": "Server/x86_64/debug/tree" + }, + "debug_tree": { + "x86_64": "Server/x86_64/debug/tree" + }, + "isos": { + "x86_64": "Server/x86_64/iso" + }, + "os_tree": { + "x86_64": "Server/x86_64/os" + }, + "packages": { + "x86_64": "Server/x86_64/os/Packages" + }, + "repository": { + "x86_64": "Server/x86_64/os" + }, + "source_packages": { + "x86_64": "Server/source/tree/Packages" + }, + "source_repository": { + "x86_64": "Server/source/tree" + }, + "source_tree": { + "x86_64": "Server/source/tree" + } + }, + "type": "variant", + "uid": "Server" + } + } + } +} diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/images.json b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/images.json new file mode 100644 index 0000000..44e08df --- /dev/null +++ b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/images.json @@ -0,0 +1,16 @@ +{ + "header": { + "type": "productmd.images", + "version": "1.2" + }, + "payload": { + "compose": { + "date": "20171005", + "id": "Fedora-Modular-Bikeshed-20171005.n.0", + "respin": 0, + "type": "nightly" + }, + "images": { + } + } +} diff --git a/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/rpms.json b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/rpms.json new file mode 100644 index 0000000..89a8a36 --- /dev/null +++ b/tests/composes/Fedora-Modular-Bikeshed-20171005.n.0/compose/metadata/rpms.json @@ -0,0 +1,56 @@ +{ + "header": { + "type": "productmd.rpms", + "version": "1.2" + }, + "payload": { + "compose": { + "date": "20171005", + "id": "Fedora-Modular-Bikeshed-20171005.n.0", + "respin": 0, + "type": "nightly" + }, + "rpms": { + "Server": { + "x86_64": { + "cloud-init-0:0.7.9-9.module_f8c7dcdc.src": { + "cloud-init-0:0.7.9-9.module_f8c7dcdc.src": { + "category": "source", + "path": "Server/source/tree/Packages/c/cloud-init-0.7.9-9.module_f8c7dcdc.src.rpm", + "sigkey": "a3cc4e62" + }, + "cloud-init-0:0.7.9-9.module_f8c7dcdc.noarch": { + "category": "binary", + "path": "Server/x86_64/os/Packages/c/cloud-init-0.7.9-9.module_f8c7dcdc.noarch.rpm", + "sigkey": "a3cc4e62" + } + }, + "net-tools-2.0-0.44.20160912git.module_6050b07a.src": { + "net-tools-2.0-0.44.20160912git.module_6050b07a.src": { + "category": "source", + "path": "Server/source/tree/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.src.rpm", + "sigkey": "a3cc4e62" + }, + "net-tools-2.0-0.44.20160912git.module_6050b07a.noarch": { + "category": "binary", + "path": "Server/x86_64/os/Packages/n/net-tools-2.0-0.44.20160912git.module_6050b07a.noarch.rpm", + "sigkey": "a3cc4e62" + } + }, + "python-configobj-0:5.0.6-9.module_f8c7dcdc.src": { + "python-configobj-0:5.0.6-9.module_f8c7dcdc.src": { + "category": "source", + "path": "Server/source/tree/Packages/p/python-configobj-5.0.6-9.module_f8c7dcdc.src.rpm", + "sigkey": "a3cc4e62" + }, + "python3-configobj-0:5.0.6-9.module_f8c7dcdc.noarch": { + "category": "binary", + "path": "Server/x86_64/os/Packages/p/python3-configobj-5.0.6-9.module_f8c7dcdc.noarch.rpm", + "sigkey": "a3cc4e62" + } + } + } + } + } + } +} diff --git a/tests/test_changelog.py b/tests/test_changelog.py index 8b9ef60..2e566ef 100644 --- a/tests/test_changelog.py +++ b/tests/test_changelog.py @@ -50,6 +50,30 @@ DUMMY_TFTP = { } +DUMMY_CLOUD_INIT = { + 'size': 5946, + 'name': 'cloud-init', + 'old_nvr': 'cloud-init-0.7.9-8.module_813d223c', + 'old_rpms': ['cloud-init'], + 'common_rpms': ['cloud-init'], + 'rpms': ['cloud-init'], + 'changelog': ['* Tue Sep 05 2017 Lubomír Sedlář - 0.7.9-9.module_f8c7dcdc\n- First release'], + 'added_rpms': [], + 'dropped_rpms': [], + 'nvr': 'cloud-init-0.7.9-9.module_f8c7dcdc', + 'summary': 'A dummy package', + 'size_change': 88, +} + +DUMMY_NET_TOOLS = { + 'name': 'net-tools', + 'nvr': 'net-tools-2.0-0.44.20160912git.module_813d223c', + 'rpms': ['net-tools'], + 'size': 5910, + 'summary': 'A dummy package', +} + + class ChangelogTest(unittest.TestCase): def setUp(self): @@ -144,6 +168,19 @@ class ChangelogTest(unittest.TestCase): self.assertEqual('Failed to load metadata from /tmp/not_here', str(ctx.exception)) + def test_changelog_with_modular_suffix(self): + old_compose = get_compose('Fedora-Modular-Bikeshed-20171004.n.0') + new_compose = get_compose('Fedora-Modular-Bikeshed-20171005.n.0') + changelog = ComposeChangelog(strip_suffix='module_') + + data = changelog.get_changelog(old_compose, new_compose) + self.assertEqual(data['added_images'], []) + self.assertEqual(data['dropped_images'], []) + self.assertEqual(data['added_packages'], []) + self.assertEqual(data['dropped_packages'], [DUMMY_NET_TOOLS]) + self.assertEqual(data['downgraded_packages'], []) + self.assertEqual(data['upgraded_packages'], [DUMMY_CLOUD_INIT]) + class TestFormat(unittest.TestCase): def setUp(self):