[Reportbug-commits] [reportbug] 06/32: port reportbug.checkversions to py3k

Sandro Tosi morph at moszumanska.debian.org
Thu Dec 1 01:36:51 UTC 2016


This is an automated email from the git hooks/post-receive script.

morph pushed a commit to branch master
in repository reportbug.

commit 4194c1886aff14feb5bbbc22952989ad49642494
Author: Sandro Tosi <morph at debian.org>
Date:   Sun Sep 4 20:14:01 2016 +0100

    port reportbug.checkversions to py3k
---
 reportbug/checkversions.py | 103 +++++++++++++++++----------------------------
 test/test_checkversions.py |  14 +++---
 2 files changed, 46 insertions(+), 71 deletions(-)

diff --git a/reportbug/checkversions.py b/reportbug/checkversions.py
index bff189f..963a9b8 100644
--- a/reportbug/checkversions.py
+++ b/reportbug/checkversions.py
@@ -24,13 +24,13 @@
 import sys
 import os
 import re
-import urllib2
-import sgmllib
+import urllib.request, urllib.error, urllib.parse
 import gc
 import time
+import gzip
 
-import utils
-from urlutils import open_url
+from . import utils
+from .urlutils import open_url
 from reportbug.exceptions import (
     NoNetwork,
 )
@@ -38,54 +38,30 @@ from reportbug.exceptions import (
 # needed to parse new.822
 from debian.deb822 import Deb822
 from debian import debian_support
+from functools import reduce
 
-RMADISON_URL = 'http://qa.debian.org/madison.php?package=%s&text=on'
+RMADISON_URL = 'https://qa.debian.org/madison.php?package=%s&text=on'
 INCOMING_URL = 'http://incoming.debian.org/'
 NEWQUEUE_URL = 'http://ftp-master.debian.org/new.822'
 
 
-# The format is an unordered list
-
-class BaseParser(sgmllib.SGMLParser):
-    def __init__(self):
-        sgmllib.SGMLParser.__init__(self)
-        self.savedata = None
-
-    # --- Formatter interface, taking care of 'savedata' mode;
-    # shouldn't need to be overridden
-
-    def handle_data(self, data):
-        if self.savedata is not None:
-            self.savedata = self.savedata + data
-
-    # --- Hooks to save data; shouldn't need to be overridden
-    def save_bgn(self):
-        self.savedata = ''
-
-    def save_end(self, mode=0):
-        data = self.savedata
-        self.savedata = None
-        if not mode and data is not None:
-            data = ' '.join(data.split())
-        return data
-
-
-class IncomingParser(sgmllib.SGMLParser):
-    def __init__(self, package, arch='i386'):
-        sgmllib.SGMLParser.__init__(self)
-        self.found = []
-        self.savedata = None
-        arch = r'(?:all|' + re.escape(arch) + ')'
-        self.package = re.compile(re.escape(package) + r'_([^_]+)_' + arch + '.deb')
-
-    def start_a(self, attrs):
-        for attrib, value in attrs:
-            if attrib.lower() != 'href':
-                continue
-
-            mob = self.package.match(value)
-            if mob:
-                self.found.append(mob.group(1))
+## This needs to be adapted now that incoming is an APT repository
+# class IncomingParser(sgmllib.SGMLParser):
+#     def __init__(self, package, arch='i386'):
+#         sgmllib.SGMLParser.__init__(self)
+#         self.found = []
+#         self.savedata = None
+#         arch = r'(?:all|' + re.escape(arch) + ')'
+#         self.package = re.compile(re.escape(package) + r'_([^_]+)_' + arch + '.deb')
+#
+#     def start_a(self, attrs):
+#         for attrib, value in attrs:
+#             if attrib.lower() != 'href':
+#                 continue
+#
+#             mob = self.package.match(value)
+#             if mob:
+#                 self.found.append(mob.group(1))
 
 
 def compare_versions(current, upstream):
@@ -117,15 +93,14 @@ def get_versions_available(package, timeout, dists=None, http_proxy=None, arch='
         page = open_url(url)
     except NoNetwork:
         return {}
-    except urllib2.HTTPError, x:
-        print >> sys.stderr, "Warning:", x
+    except urllib.error.HTTPError as x:
+        print("Warning:", x, file=sys.stderr)
         return {}
     if not page:
         return {}
 
     # read the content of the page, remove spaces, empty lines
-    content = page.read().replace(' ', '').strip()
-    page.close()
+    content = page.replace(' ', '').strip()
 
     versions = {}
     for line in content.split('\n'):
@@ -147,8 +122,8 @@ def get_newqueue_available(package, timeout, dists=None, http_proxy=None, arch='
         page = open_url(NEWQUEUE_URL, http_proxy, timeout)
     except NoNetwork:
         return {}
-    except urllib2.HTTPError, x:
-        print >> sys.stderr, "Warning:", x
+    except urllib.error.HTTPError as x:
+        print("Warning:", x, file=sys.stderr)
         return {}
     if not page:
         return {}
@@ -170,21 +145,21 @@ def get_incoming_version(package, timeout, http_proxy=None, arch='i386'):
         page = open_url(INCOMING_URL, http_proxy, timeout)
     except NoNetwork:
         return None
-    except urllib2.HTTPError, x:
-        print >> sys.stderr, "Warning:", x
+    except urllib.error.HTTPError as x:
+        print("Warning:", x, file=sys.stderr)
         return None
     if not page:
         return None
 
-    parser = IncomingParser(package, arch)
-    for line in page:
-        parser.feed(line)
-    parser.close()
-    try:
-        page.fp._sock.recv = None
-    except:
-        pass
-    page.close()
+    # parser = IncomingParser(package, arch)
+    # for line in page:
+    #     parser.feed(line)
+    # parser.close()
+    # try:
+    #     page.fp._sock.recv = None
+    # except:
+    #     pass
+    # page.close()
 
     if parser.found:
         found = parser.found
diff --git a/test/test_checkversions.py b/test/test_checkversions.py
index 57b23ef..20a6c32 100644
--- a/test/test_checkversions.py
+++ b/test/test_checkversions.py
@@ -1,4 +1,4 @@
-import unittest2
+import unittest
 
 from reportbug import checkversions
 from nose.plugins.attrib import attr
@@ -6,7 +6,7 @@ from nose.plugins.attrib import attr
 import mock
 
 
-class TestCheckversions(unittest2.TestCase):
+class TestCheckversions(unittest.TestCase):
     def test_compare_versions(self):
         # <current, upstream>
         # 1 upstream newer than current
@@ -34,7 +34,7 @@ class TestCheckversions(unittest2.TestCase):
         self.assertEqual(checkversions.later_version('1.2.4', '1.2.3'), '1.2.4')
 
 
-class TestNewQueue(unittest2.TestCase):
+class TestNewQueue(unittest.TestCase):
     def test_bts704040(self):
         # return an iterable object, so that Deb822 (what parses the result)
         # will work
@@ -62,14 +62,14 @@ Source: aaa
 
         res = checkversions.get_newqueue_available('procps', 60)
 
-        self.assertEqual(res.keys()[0], u'experimental (new)')
-        self.assertEqual(res[u'experimental (new)'], u'1:3.3.7-1')
+        self.assertEqual(list(res.keys())[0], 'experimental (new)')
+        self.assertEqual(res['experimental (new)'], '1:3.3.7-1')
 
         # restore the original checkversions.open_url() method
         checkversions.open_url = save_open_url
 
 
-class TestVersionAvailable(unittest2.TestCase):
+class TestVersionAvailable(unittest.TestCase):
     @attr('network')  # marking the test as using network
     def test_bts642032(self):
         vers = checkversions.get_versions_available('reportbug', 60)
@@ -94,4 +94,4 @@ class TestVersionAvailable(unittest2.TestCase):
     def test_codenames(self):
         vers = checkversions.get_versions_available('reportbug', 60, ['sid'])
         self.assertEqual(1, len(vers))
-        self.assertEqual(vers.keys()[0], 'unstable')
+        self.assertEqual(list(vers.keys())[0], 'unstable')

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reportbug/reportbug.git



More information about the Reportbug-commits mailing list