[Reportbug-commits] [reportbug] 04/32: convert reportbug.debbugs 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 7b676cd9cf4075cc0432226b45a22420fbf0309e
Author: Sandro Tosi <morph at debian.org>
Date: Sat Jun 25 17:35:17 2016 +0100
convert reportbug.debbugs to py3k
- remove BTSParser, now that we are using SOAP
---
reportbug/debbugs.py | 297 +++++----------------------------------------------
test/test_debbugs.py | 126 ++++++++++------------
2 files changed, 82 insertions(+), 341 deletions(-)
diff --git a/reportbug/debbugs.py b/reportbug/debbugs.py
index 523bf06..54cd1cd 100644
--- a/reportbug/debbugs.py
+++ b/reportbug/debbugs.py
@@ -21,37 +21,36 @@
# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
# SOFTWARE.
-import utils
+from . import utils
import sys
import mailbox
import email
import email.parser
-import email.Errors
-import cStringIO
-import sgmllib
+import email.errors
+import io
import glob
import os
import re
import time
-import urllib
+import urllib.request, urllib.parse, urllib.error
import textwrap
import pprint
# SOAP interface to Debian BTS
import debianbts
from collections import defaultdict
-import checkversions
-from exceptions import (
+from . import checkversions
+from .exceptions import (
NoNetwork,
QuertBTSError,
)
-from urlutils import open_url
+from .urlutils import open_url
def msgfactory(fp):
try:
return email.message_from_file(fp)
- except email.Errors.MessageParseError:
+ except email.errors.MessageParseError:
# Don't return None since that will
# stop the mailbox iterator
return ''
@@ -455,7 +454,7 @@ def handle_debian_release(package, bts, ui, fromaddr, timeout, online=True, http
# FIXME: pu/rm should lookup the version elsewhere
version = info and info[0]
if online and tag.endswith('-pu'):
- version = checkversions.get_versions_available(package, timeout, (tag[:-3],)).values()[0]
+ version = list(checkversions.get_versions_available(package, timeout, (tag[:-3],)).values())[0]
if version:
cont = ui.select_options(
"Latest version seems to be %s, is this the proper one ?" % (version),
@@ -552,7 +551,7 @@ def handle_debian_release(package, bts, ui, fromaddr, timeout, online=True, http
good = ".depends ~ " + j(listgood)
bad = ".depends ~ " + j(listbad)
- body += textwrap.dedent(u"""\
+ body += textwrap.dedent("""\
Ben file:
@@ -568,7 +567,7 @@ def handle_debian_release(package, bts, ui, fromaddr, timeout, online=True, http
body = ''
elif tag == 'unblock':
subject = 'unblock: %s/%s' % (package, version)
- body = textwrap.dedent(u"""\
+ body = textwrap.dedent("""\
Please unblock package %s
(explain the reason for the unblock here)
@@ -587,7 +586,7 @@ def handle_debian_release(package, bts, ui, fromaddr, timeout, online=True, http
return (subject, severity, headers, pseudos, body, query)
-itp_template = textwrap.dedent(u"""\
+itp_template = textwrap.dedent("""\
* Package name : %(package)s
Version : x.y.z
Upstream Author : Name <somebody at example.org>
@@ -671,7 +670,7 @@ def handle_wnpp(package, bts, ui, fromaddr, timeout, online=True, http_proxy=Non
if tag == 'ITP':
headers.append('X-Debbugs-CC: debian-devel at lists.debian.org')
- pseudos.append(u'Owner: %s' % fromaddr.decode('utf-8', 'replace'))
+ pseudos.append('Owner: %s' % fromaddr.decode('utf-8', 'replace'))
ui.log_message('Your report will be carbon-copied to debian-devel, '
'per Debian policy.\n')
@@ -731,13 +730,13 @@ def dpkg_infofunc():
multiarch = utils.get_multiarch()
if debarch:
if utsmachine == debarch:
- debinfo = u'Architecture: %s\n' % debarch
+ debinfo = 'Architecture: %s\n' % debarch
else:
- debinfo = u'Architecture: %s (%s)\n' % (debarch, utsmachine)
+ debinfo = 'Architecture: %s (%s)\n' % (debarch, utsmachine)
else:
- debinfo = u'Architecture: ? (%s)\n' % utsmachine
+ debinfo = 'Architecture: ? (%s)\n' % utsmachine
if multiarch:
- debinfo += u'Foreign Architectures: %s\n' % multiarch
+ debinfo += 'Foreign Architectures: %s\n' % multiarch
debinfo += '\n'
return debinfo
@@ -752,7 +751,7 @@ def ubuntu_infofunc():
def generic_infofunc():
utsmachine = os.uname()[4]
- return utils.lsb_release_info() + u'Architecture: %s\n\n' % utsmachine
+ return utils.lsb_release_info() + 'Architecture: %s\n\n' % utsmachine
# Supported servers
@@ -868,7 +867,7 @@ def cgi_package_url(system, package, archived=False, source=False,
if version:
query['version'] = str(version)
- qstr = urllib.urlencode(query)
+ qstr = urllib.parse.urlencode(query)
# print qstr
return '%spkgreport.cgi?%s' % (root, qstr)
@@ -877,7 +876,7 @@ def cgi_package_url(system, package, archived=False, source=False,
def package_url(system, package, mirrors=None, source=False,
repeatmerged=True):
btsroot = get_btsroot(system, mirrors)
- package = urllib.quote_plus(package.lower())
+ package = urllib.parse.quote_plus(package.lower())
return btsroot + ('db/pa/l%s.html' % package)
@@ -918,7 +917,7 @@ def parse_bts_url(url):
# Dynamically add any additional systems found
for origin in glob.glob('/etc/dpkg/origins/*'):
try:
- fp = file(origin)
+ fp = open(origin)
system = os.path.basename(origin)
SYSTEMS[system] = SYSTEMS.get(system, {'otherpkgs': {},
'query-dpkg': True,
@@ -950,198 +949,6 @@ for origin in glob.glob('/etc/dpkg/origins/*'):
pass
-# For summary pages, we want to keep:
-#
-# - Contents of <title>...</title>
-# - Contents of <h2>...</h2>
-# - Contents of each <li>
-#
-# For individual bugs, we want to keep:
-# - Contents of <title>...</title>
-# - Contents of every <pre>...</pre> after a <h2>....</h2> tag.
-
-class BTSParser(sgmllib.SGMLParser):
- def __init__(self, mode='summary', cgi=False, followups=False):
- import warnings
- warnings.warn('BTSParse is Deprecated, report a bug if you see this',
- DeprecationWarning)
- sgmllib.SGMLParser.__init__(self)
- self.hierarchy = []
- self.lidata = None
- self.lidatalist = None
- self.savedata = None
- self.title = None
- self.bugcount = 0
- self.mode = mode
- self.cgi = cgi
- self.followups = followups
- self.inbuglist = self.intrailerinfo = False
- self.bugtitle = None
- if followups:
- self.preblock = []
- else:
- self.preblock = ''
- self.endh2 = False
-
- # --- 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 += data
-
- # --- Hooks to save data; shouldn't need to be overridden
-
- def save_bgn(self):
- self.savedata = ''
-
- def save_end(self, mode=False):
- data = self.savedata
- if not mode and data:
- data = ' '.join(data.split())
- self.savedata = None
- return data
-
- def start_h1(self, attrs):
- self.save_bgn()
- self.oldmode = self.mode
- self.mode = 'title'
-
- def end_h1(self):
- self.title = self.save_end()
- self.mode = self.oldmode
-
- def start_h2(self, attrs):
- if self.lidata:
- self.check_li()
-
- self.save_bgn()
-
- def end_h2(self):
- if self.mode == 'summary':
- hiertitle = self.save_end()
- if 'bug' in hiertitle:
- self.hierarchy.append((hiertitle, []))
- self.endh2 = True # We are at the end of a title, flag <pre>
-
- def start_ul(self, attrs):
- if self.mode == 'summary':
- for k, v in attrs:
- if k == 'class' and v == 'bugs':
- self.inbuglist = True
-
- def end_ul(self):
- if self.inbuglist:
- self.check_li()
-
- self.inbuglist = False
-
- def do_br(self, attrs):
- if self.mode == 'title':
- self.savedata = ""
- elif self.mode == 'summary' and self.inbuglist and not self.intrailerinfo:
- self.bugtitle = self.save_end()
- self.intrailerinfo = True
- self.save_bgn()
-
- def check_li(self):
- if self.mode == 'summary':
- if not self.intrailerinfo:
- self.bugtitle = self.save_end()
- trailinfo = ''
- else:
- trailinfo = self.save_end()
-
- match = re.search(r'fixed:\s+([\w.+~-]+(\s+[\w.+~:-]+)?)', trailinfo)
- if match:
- title = self.bugtitle
- bits = re.split(r':\s+', title, 1)
- if len(bits) > 1:
- buginfo = '%s [FIXED %s]: %s' % (
- bits[0], match.group(1), bits[1])
- else:
- if title.endswith(':'):
- title = title[:-1]
-
- buginfo = '%s [FIXED %s]' % (title, match.group(1))
- else:
- buginfo = self.bugtitle
-
- self.lidatalist.append(buginfo)
- self.bugcount += 1
-
- self.lidata = self.intrailerinfo = False
-
- def do_li(self, attrs):
- if self.mode == 'summary' and self.inbuglist:
- if self.lidata:
- self.check_li()
-
- self.lidata = True
- if self.hierarchy:
- self.lidatalist = self.hierarchy[-1][1]
- else:
- self.lidatalist = []
- self.save_bgn()
-
- def start_pre(self, attrs):
- "Save <pre> when we follow a </h2>"
- if self.followups:
- if not self.endh2:
- return
- else:
- if self.cgi and self.preblock:
- return
-
- self.save_bgn()
-
- def end_pre(self):
- if self.followups:
- if not self.endh2:
- return
- self.endh2 = False # Done with a report, reset </h2>.
- stuff = self.save_end(1)
- if not self.cgi:
- self.preblock.insert(0, stuff)
- else:
- self.preblock.append(stuff)
- elif not (self.preblock and self.cgi):
- self.preblock = self.save_end(1)
-
- def reorganize(self):
- if not self.hierarchy:
- return
-
- newhierarchy = []
- fixed = []
- fixedfinder = re.compile(r'\[FIXED ([^\]]+)\]')
- resolvedfinder = re.compile(r'Resolved')
-
- for (title, buglist) in self.hierarchy:
- if 'Resolved' in title:
- newhierarchy.append((title, buglist))
- continue
-
- bugs = []
- for bug in buglist:
- if fixedfinder.search(bug):
- fixed.append(bug)
- else:
- bugs.append(bug)
-
- if bugs:
- title = ' '.join(title.split()[:-2])
- if len(bugs) != 1:
- title += ' (%d bugs)' % len(bugs)
- else:
- title += ' (1 bug)'
-
- newhierarchy.append((title, bugs))
-
- if fixed:
- self.hierarchy = [('Bugs fixed in subsequent releases (%d bugs)' % len(fixed), fixed)] + newhierarchy
-
-
# TODO: to be removed
def parse_html_report(number, url, http_proxy, timeout, followups=False, cgi=True):
page = open_url(url, http_proxy, timeout)
@@ -1193,7 +1000,7 @@ def parse_mbox_report(number, url, http_proxy, timeout, followups=False):
return None
# Make this seekable
- wholefile = cStringIO.StringIO(page.read())
+ wholefile = io.StringIO(page.read())
try:
page.fp._sock.recv = None
@@ -1244,60 +1051,6 @@ def parse_mbox_report(number, url, http_proxy, timeout, followups=False):
return (title, output)
-def get_cgi_reports(package, timeout, system='debian', http_proxy='',
- archived=False, source=False, version=None):
- try:
- page = open_url(cgi_package_url(system, package, archived, source,
- version=version), http_proxy, timeout)
- except:
- raise NoNetwork
-
- if not page:
- return (0, None, None)
-
- # content = page.read()
- # if 'Maintainer' not in content:
- # return (0, None, None)
-
- parser = BTSParser(cgi=True)
- for line in page:
- try:
- line = line.decode('utf-8') # BTS pages are encoded in utf-8
- except UnicodeDecodeError:
- # page has a bad char
- line = line.decode('utf-8', 'replace')
- parser.feed(line)
- parser.close()
- try:
- page.fp._sock.recv = None
- except:
- pass
- page.close()
-
- # Reorganize hierarchy to put recently-fixed bugs at top
- parser.reorganize()
-
- # Morph @ 2008-08-15; due to BTS output format changes
- try:
- parser.hierarchy.remove(('Select bugs', []))
- except:
- pass
-
- data = (parser.bugcount, parser.title, parser.hierarchy)
- del parser
-
- return data
-
-
-def get_cgi_report(number, timeout, system='debian', http_proxy='', archived=False,
- followups=False):
- number = int(number)
-
- url = cgi_report_url(system, number, archived='no', mbox=True)
- return parse_mbox_report(number, url, http_proxy, timeout, followups)
- # return parse_html_report(number, url, http_proxy, followups, cgi=True)
-
-
def get_btsroot(system, mirrors=None):
if mirrors:
alternates = SYSTEMS[system].get('mirrors')
@@ -1310,14 +1063,14 @@ def get_btsroot(system, mirrors=None):
def get_reports(package, timeout, system='debian', mirrors=None, version=None,
http_proxy='', archived=False, source=False):
if system == 'debian':
- if isinstance(package, basestring):
+ if isinstance(package, str):
if source:
pkg_filter = 'src'
else:
pkg_filter = 'package'
bugs = debianbts.get_bugs(pkg_filter, package)
else:
- bugs = map(int, package)
+ bugs = list(map(int, package))
try:
# retrieve bugs and generate the hierarchy
@@ -1344,7 +1097,7 @@ def get_reports(package, timeout, system='debian', mirrors=None, version=None,
return (len(bugs), 'Bug reports for %s' % package, hier)
# XXX: is the code below used at all now? can we remove it?
- if isinstance(package, basestring):
+ if isinstance(package, str):
if SYSTEMS[system].get('cgiroot'):
try:
result = get_cgi_reports(package, timeout, system, http_proxy, archived,
diff --git a/test/test_debbugs.py b/test/test_debbugs.py
index ce2e9d8..1ae29fd 100644
--- a/test/test_debbugs.py
+++ b/test/test_debbugs.py
@@ -1,95 +1,95 @@
-import unittest2
+import unittest
from nose.plugins.attrib import attr
import mock
from reportbug import utils
from reportbug import debbugs
-import urllib
+import urllib.request, urllib.parse, urllib.error
import re
-class TestDebianbts(unittest2.TestCase):
+class TestDebianbts(unittest.TestCase):
def test_get_tags(self):
# for each severity, for each mode
- self.assertItemsEqual(debbugs.get_tags('critical', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('critical', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'security', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('grave', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('grave', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'security', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('serious', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('serious', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'security', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('important', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('important', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('does-not-build', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('does-not-build', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('normal', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('normal', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('non-critical', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('non-critical', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('minor', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('minor', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('wishlist', utils.MODE_NOVICE).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('wishlist', utils.MODE_NOVICE).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('critical', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('critical', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'security', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('grave', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('grave', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'security', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('serious', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('serious', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'security', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('important', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('important', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('does-not-build', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('does-not-build', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('normal', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('normal', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('non-critical', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('non-critical', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('minor', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('minor', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('wishlist', utils.MODE_STANDARD).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('wishlist', utils.MODE_STANDARD).keys()),
['lfs', 'l10n', 'd-i', 'upstream', 'ipv6', 'patch', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('critical', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('critical', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('grave', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('grave', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('serious', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('serious', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('important', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('important', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('does-not-build', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('does-not-build', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('normal', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('normal', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('non-critical', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('non-critical', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('minor', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('minor', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('wishlist', utils.MODE_ADVANCED).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('wishlist', utils.MODE_ADVANCED).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('critical', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('critical', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('grave', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('grave', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('serious', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('serious', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('important', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('important', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('does-not-build', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('does-not-build', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('normal', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('normal', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('non-critical', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('non-critical', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('minor', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('minor', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
- self.assertItemsEqual(debbugs.get_tags('wishlist', utils.MODE_EXPERT).keys(),
+ self.assertCountEqual(list(debbugs.get_tags('wishlist', utils.MODE_EXPERT).keys()),
['l10n', 'd-i', 'ipv6', 'patch', 'lfs', 'upstream', 'security', 'newcomer'])
-class TestInfofunc(unittest2.TestCase):
+class TestInfofunc(unittest.TestCase):
def test_dpkg_infofunc(self):
info = debbugs.dpkg_infofunc()
arch = utils.get_arch()
@@ -138,7 +138,7 @@ class TestInfofunc(unittest2.TestCase):
self.assertIn('Architecture:', info)
-class TestMiscFunctions(unittest2.TestCase):
+class TestMiscFunctions(unittest.TestCase):
def test_yn_bool(self):
self.assertEqual(debbugs.yn_bool(None), 'no')
self.assertEqual(debbugs.yn_bool('no'), 'no')
@@ -158,13 +158,13 @@ class TestMiscFunctions(unittest2.TestCase):
self.assertEqual(debbugs.convert_severity(severity, type), value)
@attr('network') # marking the test as using network
- @unittest2.skip("Need to talk with dondelelcaro about make them sync")
+ @unittest.skip("Need to talk with dondelelcaro about make them sync")
def test_pseudopackages_in_sync(self):
dictparse = re.compile(r'([^\s]+)\s+(.+)', re.IGNORECASE)
bdo_list = {}
- pseudo = urllib.urlopen('https://bugs.debian.org/pseudopackages/pseudo-packages.description')
+ pseudo = urllib.request.urlopen('https://bugs.debian.org/pseudopackages/pseudo-packages.description')
for l in pseudo:
m = dictparse.search(l)
bdo_list[m.group(1)] = m.group(2)
@@ -173,11 +173,7 @@ class TestMiscFunctions(unittest2.TestCase):
self.assertEqual(debbugs.debother, bdo_list)
-class TestGetReports(unittest2.TestCase):
- @attr('network') # marking the test as using network
- def test_get_cgi_reports(self):
- data = debbugs.get_cgi_reports('reportbug', timeout=60)
- self.assertGreater(data[0], 0)
+class TestGetReports(unittest.TestCase):
@attr('network') # marking the test as using network
def test_get_reports(self):
@@ -203,32 +199,24 @@ class TestGetReports(unittest2.TestCase):
self.assertGreater(data[0], 0)
-class TestUrlFunctions(unittest2.TestCase):
+class TestUrlFunctions(unittest.TestCase):
def test_cgi_report_url(self):
- self.assertEqual(debbugs.cgi_report_url('debian', 123),
- 'https://bugs.debian.org/cgi-bin/bugreport.cgi?' +
- 'bug=123&archived=False&mbox=no')
+ self.assertCountEqual(debbugs.cgi_report_url('debian', 123).split('?')[1].split('&'),
+ 'bug=123&archived=False&mbox=no'.split('&'))
self.assertIsNone(debbugs.cgi_report_url('default', 123))
def test_cgi_package_url(self):
- self.assertEqual(debbugs.cgi_package_url('debian', 'reportbug'),
- 'https://bugs.debian.org/cgi-bin/pkgreport.cgi?' +
- 'archived=no&pkg=reportbug&repeatmerged=yes')
- self.assertEqual(debbugs.cgi_package_url
- ('debian', 'reportbug', source=True),
- 'https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=' +
- 'reportbug&archived=no&repeatmerged=yes')
- self.assertEqual(debbugs.cgi_package_url
- ('debian', 'reportbug', version='5.0'),
- 'https://bugs.debian.org/cgi-bin/pkgreport.cgi?archi' +
- 'ved=no&version=5.0&pkg=reportbug&repeatmerged=yes')
+ self.assertCountEqual(debbugs.cgi_package_url('debian', 'reportbug').split('?')[1].split('&'),
+ 'repeatmerged=yes&archived=no&pkg=reportbug'.split('&'))
+ self.assertCountEqual(debbugs.cgi_package_url('debian', 'reportbug', source=True).split('?')[1].split('&'),
+ 'src=reportbug&archived=no&repeatmerged=yes'.split('&'))
+ self.assertCountEqual(debbugs.cgi_package_url('debian', 'reportbug', version='5.0').split('?')[1].split('&'),
+ 'pkg=reportbug&version=5.0&repeatmerged=yes&archived=no'.split('&'))
def test_get_package_url(self):
- self.assertEqual(debbugs.get_package_url('debian', 'reportbug'),
- 'https://bugs.debian.org/cgi-bin/pkgreport.cgi?archi' +
- 'ved=no&pkg=reportbug&repeatmerged=yes')
+ self.assertCountEqual(debbugs.get_package_url('debian', 'reportbug').split('?')[1].split('&'),
+ 'archived=no&pkg=reportbug&repeatmerged=yes'.split('&'))
def test_get_report_url(self):
- self.assertEqual(debbugs.get_report_url('debian', 123),
- 'https://bugs.debian.org/cgi-bin/bugreport.cgi?' +
- 'bug=123&archived=False&mbox=no')
+ self.assertCountEqual(debbugs.get_report_url('debian', 123).split('?')[1].split('&'),
+ 'bug=123&archived=False&mbox=no'.split('&'))
--
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