Blob Blame History Raw
From 74dca8920e3388536fd7330013f379e7f27f14de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= <lsedlar@redhat.com>
Date: Fri, 7 Jun 2019 12:25:59 +0200
Subject: [PATCH] Revert "Update for newer RPM"

This reverts commit 86c951c4661d3af234f8a7b7e560ab88e12a3f2b.
---
 compose_utils/changelog.py | 18 ++++++++++++++----
 tests/test_changelog.py    | 20 ++++++++++----------
 4 files changed, 27 insertions(+), 21 deletions(-)

diff --git a/compose_utils/changelog.py b/compose_utils/changelog.py
index abc7e34..0aec6c6 100644
--- a/compose_utils/changelog.py
+++ b/compose_utils/changelog.py
@@ -37,6 +37,16 @@ def formatsize(size):
     return '{0:.{1}f} {2}'.format(size, prec, chosen)
 
 
+def to_utf8(text):
+    encodings = ["ascii", "utf8", "latin1", "latin2"]
+    for encoding in encodings:
+        try:
+            return text.decode(encoding)
+        except UnicodeDecodeError:
+            pass
+    return text.decode("ascii", "ignore")
+
+
 clogs = {}
 
 
@@ -51,7 +61,7 @@ class SimpleRpmWrapperWithChangelog(kobo.pkgset.SimpleRpmWrapper):
         ts = kwargs.pop("ts", None)
         header = kobo.rpmlib.get_rpm_header(file_path, ts=ts)
 
-        self.summary = kobo.rpmlib.get_header_field(header, "summary")
+        self.summary = kobo.rpmlib.get_header_field(header, "summary").decode('utf-8')
 
         if self.sourcerpm:
             key = self.sourcerpm
@@ -96,10 +106,10 @@ def get_changelog_diff_from_headers(old, new, max_records=-1):
         result = []
         try:
             old_time = old_changelog[0].time
-            old_nvr = LooseVersion(old_changelog[0].name.rsplit(None, 1)[-1])
+            old_nvr = LooseVersion(to_utf8(old_changelog[0].name).rsplit(None, 1)[-1])
             while new_changelog:
                 entry = new_changelog.pop(0)
-                new_nvr = LooseVersion(entry.name.rsplit(None, 1)[-1])
+                new_nvr = LooseVersion(to_utf8(entry.name).rsplit(None, 1)[-1])
                 if entry.time < old_time or (
                     entry.time == old_time and new_nvr <= old_nvr
                 ):
@@ -365,7 +375,7 @@ class ComposeChangelog(object):
 
             data["changelog"] = []
             for i in get_changelog_diff_from_headers(old_package, new_package, max_logs):
-                data["changelog"].append("* %s %s\n%s" % (i.ctime, i.name, i.text))
+                data["changelog"].append("* %s %s\n%s" % (i.ctime, to_utf8(i.name), to_utf8(i.text)))
 
             # TODO: comps, system release
             # if rpm.versionCompare(old_package, new_package.header) == -1:
diff --git a/tests/test_changelog.py b/tests/test_changelog.py
index ffda70e..3dca9b7 100644
--- a/tests/test_changelog.py
+++ b/tests/test_changelog.py
@@ -28,7 +28,7 @@ DUMMY_FIREFOX = {
     'old_rpms': ['Dummy-firefox'],
     'common_rpms': ['Dummy-firefox'],
     'rpms': ['Dummy-firefox'],
-    'changelog': ['* Tue Mar 15 2016 Lubomír Sedlář <lubomir.sedlar@gmail.com> - 1:0.1.0-1\n- new version'],
+    'changelog': [u'* Tue Mar 15 2016 Lubomír Sedlář <lubomir.sedlar@gmail.com> - 1:0.1.0-1\n- new version'],
     'added_rpms': [],
     'dropped_rpms': [],
     'nvr': 'Dummy-firefox-1:0.1.0-1',
@@ -60,7 +60,7 @@ DUMMY_CLOUD_INIT = {
     'old_rpms': ['cloud-init'],
     'common_rpms': ['cloud-init'],
     'rpms': ['cloud-init'],
-    'changelog': ['* Tue Sep 05 2017 Lubomír Sedlář <lsedlar@redhat.com> - 0.7.9-9.module_f8c7dcdc\n- First release'],
+    'changelog': [u'* Tue Sep 05 2017 Lubomír Sedlář <lsedlar@redhat.com> - 0.7.9-9.module_f8c7dcdc\n- First release'],
     'added_rpms': [],
     'dropped_rpms': [],
     'nvr': 'cloud-init-0.7.9-9.module_f8c7dcdc',
@@ -227,26 +227,26 @@ class TestFormat(unittest.TestCase):
 
 class TestCompareChangelogs(unittest.TestCase):
     def test_select_new(self):
-        c1 = ChangelogEntry('John Doe <jdoe@example.com> 1.0-1', 1000000, 'change 1')
-        c2 = ChangelogEntry('John Doe <jdoe@example.com> 1.1-1', 2000000, 'change 2')
+        c1 = ChangelogEntry(b'John Doe <jdoe@example.com> 1.0-1', 1000000, 'change 1')
+        c2 = ChangelogEntry(b'John Doe <jdoe@example.com> 1.1-1', 2000000, 'change 2')
         old = mock.Mock(changelogs=[c1])
         new = mock.Mock(changelogs=[c2, c1])
         clog = get_changelog_diff_from_headers(old, new)
         self.assertEqual(clog, [c2])
 
     def test_select_with_same_date(self):
-        c1 = ChangelogEntry('John Doe <jdoe@example.com> 1.0-1', 1000000, 'change 1')
-        c2 = ChangelogEntry('John Doe <jdoe@example.com> 1.1-1', 1000000, 'change 2')
+        c1 = ChangelogEntry(b'John Doe <jdoe@example.com> 1.0-1', 1000000, 'change 1')
+        c2 = ChangelogEntry(b'John Doe <jdoe@example.com> 1.1-1', 1000000, 'change 2')
         old = mock.Mock(changelogs=[c1])
         new = mock.Mock(changelogs=[c2, c1])
         clog = get_changelog_diff_from_headers(old, new)
         self.assertEqual(clog, [c2])
 
     def test_no_subset(self):
-        c1 = ChangelogEntry('John Doe <jdoe@example.com> 0:2.0-1', 1000000, 'change 1')
-        c2 = ChangelogEntry('John Doe <jdoe@example.com> 1:1.1-1', 1000000, 'change 2')
-        c3 = ChangelogEntry('John Doe <jdoe@example.com> 1:1.2-1', 1000000, 'change 3')
-        c4 = ChangelogEntry('John Doe <jdoe@example.com> 1:1.3-1', 1000000, 'change 4')
+        c1 = ChangelogEntry(b'John Doe <jdoe@example.com> 0:2.0-1', 1000000, 'change 1')
+        c2 = ChangelogEntry(b'John Doe <jdoe@example.com> 1:1.1-1', 1000000, 'change 2')
+        c3 = ChangelogEntry(b'John Doe <jdoe@example.com> 1:1.2-1', 1000000, 'change 3')
+        c4 = ChangelogEntry(b'John Doe <jdoe@example.com> 1:1.3-1', 1000000, 'change 4')
         old = mock.Mock(changelogs=[c3, c1])
         new = mock.Mock(changelogs=[c4, c2, c1])
         clog = get_changelog_diff_from_headers(old, new)
-- 
2.17.2