fix tests with py3

This commit is contained in:
Philip Bauer 2018-06-12 14:25:01 +02:00
parent a8f2db58ff
commit 95861b28d5
7 changed files with 21 additions and 22 deletions

View File

@ -17,6 +17,7 @@ from plone.z3cform import z2
from plone.z3cform.fieldsets import extensible from plone.z3cform.fieldsets import extensible
from plone.z3cform.interfaces import IWrappedForm from plone.z3cform.interfaces import IWrappedForm
from Products.CMFCore.utils import getToolByName from Products.CMFCore.utils import getToolByName
from Products.CMFPlone.utils import safe_unicode
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from Products.statusmessages.interfaces import IStatusMessage from Products.statusmessages.interfaces import IStatusMessage
from six.moves.urllib.parse import quote from six.moves.urllib.parse import quote
@ -152,13 +153,9 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
# Make sure author_name/ author_email is properly encoded # Make sure author_name/ author_email is properly encoded
if 'author_name' in data: if 'author_name' in data:
author_name = data['author_name'] author_name = safe_unicode(data['author_name'])
if isinstance(author_name, str):
author_name = six.text_type(author_name, 'utf-8')
if 'author_email' in data: if 'author_email' in data:
author_email = data['author_email'] author_email = safe_unicode(data['author_email'])
if isinstance(author_email, str):
author_email = six.text_type(author_email, 'utf-8')
# Set comment author properties for anonymous users or members # Set comment author properties for anonymous users or members
portal_membership = getToolByName(context, 'portal_membership') portal_membership = getToolByName(context, 'portal_membership')
@ -167,8 +164,7 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
'Reply to item', context): 'Reply to item', context):
# Member # Member
member = portal_membership.getAuthenticatedMember() member = portal_membership.getAuthenticatedMember()
# memberdata is stored as utf-8 encoded strings email = safe_unicode(member.getProperty('email'))
email = member.getProperty('email')
fullname = member.getProperty('fullname') fullname = member.getProperty('fullname')
if not fullname or fullname == '': if not fullname or fullname == '':
fullname = member.getUserName() fullname = member.getUserName()

View File

@ -347,20 +347,20 @@ class ConversationReplies(object):
return len(self.children) return len(self.children)
def __contains__(self, key): def __contains__(self, key):
return long(key) in self.children return int(key) in self.children
def __getitem__(self, key): def __getitem__(self, key):
"""Get an item by its long key """Get an item by its int key
""" """
key = long(key) key = int(key)
if key not in self.children: if key not in self.children:
raise KeyError(key) raise KeyError(key)
return self.conversation[key] return self.conversation[key]
def __delitem__(self, key): def __delitem__(self, key):
"""Delete an item by its long key """Delete an item by its int key
""" """
key = long(key) key = int(key)
if key not in self.children: if key not in self.children:
raise KeyError(key) raise KeyError(key)
del self.conversation[key] del self.conversation[key]
@ -369,7 +369,7 @@ class ConversationReplies(object):
return iter(self.children) return iter(self.children)
def get(self, key, default=None): def get(self, key, default=None):
key = long(key) key = int(key)
if key not in self.children: if key not in self.children:
return default return default
return self.conversation.get(key) return self.conversation.get(key)

View File

@ -470,7 +470,7 @@ Edit the content object.
>>> from hashlib import sha1 as sha >>> from hashlib import sha1 as sha
>>> ring = _getKeyring('foo') >>> ring = _getKeyring('foo')
>>> secret = ring.random() >>> secret = ring.random()
>>> token = hmac.new(secret, 'admin', sha).hexdigest() >>> token = hmac.new(secret.encode('utf8'), b'admin', sha).hexdigest()
>>> browser.open("http://nohost/plone/doc1/edit?_authenticator=" + token) >>> browser.open("http://nohost/plone/doc1/edit?_authenticator=" + token)
>>> browser.getControl(name='form.widgets.IRichTextBehavior.text').value = "Lorem ipsum" >>> browser.getControl(name='form.widgets.IRichTextBehavior.text').value = "Lorem ipsum"
>>> browser.getControl('Save').click() >>> browser.getControl('Save').click()

View File

@ -171,9 +171,10 @@ class CommentTest(unittest.TestCase):
def test_getText_with_non_ascii_characters(self): def test_getText_with_non_ascii_characters(self):
comment1 = createObject('plone.Comment') comment1 = createObject('plone.Comment')
comment1.text = u'Umlaute sind ä, ö und ü.' comment1.text = u'Umlaute sind ä, ö und ü.'
out = b'<p>Umlaute sind \xc3\xa4, \xc3\xb6 und \xc3\xbc.</p>'
self.assertEqual( self.assertEqual(
comment1.getText(), comment1.getText(),
'<p>Umlaute sind \xc3\xa4, \xc3\xb6 und \xc3\xbc.</p>', out.decode('utf8')
) )
def test_getText_doesnt_link(self): def test_getText_doesnt_link(self):

View File

@ -567,7 +567,8 @@ class TestCommentsViewlet(unittest.TestCase):
replies = self.viewlet.get_replies() replies = self.viewlet.get_replies()
next(replies) next(replies)
next(replies) next(replies)
self.assertRaises(StopIteration, replies.next) with self.assertRaises(StopIteration):
next(replies)
def test_get_replies_on_non_annotatable_object(self): def test_get_replies_on_non_annotatable_object(self):
context = self.portal.MailHost # the mail host is not annotatable context = self.portal.MailHost # the mail host is not annotatable
@ -575,7 +576,8 @@ class TestCommentsViewlet(unittest.TestCase):
replies = viewlet.get_replies() replies = viewlet.get_replies()
self.assertEqual(len(tuple(replies)), 0) self.assertEqual(len(tuple(replies)), 0)
replies = viewlet.get_replies() replies = viewlet.get_replies()
self.assertRaises(StopIteration, replies.next) with self.assertRaises(StopIteration):
next(replies)
def test_get_replies_with_workflow_actions(self): def test_get_replies_with_workflow_actions(self):
self.assertFalse(self.viewlet.get_replies(workflow_actions=True)) self.assertFalse(self.viewlet.get_replies(workflow_actions=True))

View File

@ -54,7 +54,7 @@ class CommentContentRulesTest(unittest.TestCase):
def testCommentIdStringSubstitution(self): def testCommentIdStringSubstitution(self):
comment_id = getAdapter(self.document, IStringSubstitution, comment_id = getAdapter(self.document, IStringSubstitution,
name=u'comment_id') name=u'comment_id')
self.assertIsInstance(comment_id(), long) self.assertIsInstance(comment_id(), int)
def testCommentTextStringSubstitution(self): def testCommentTextStringSubstitution(self):
comment_text = getAdapter(self.document, IStringSubstitution, comment_text = getAdapter(self.document, IStringSubstitution,
@ -114,7 +114,7 @@ class ReplyContentRulesTest(unittest.TestCase):
IStringSubstitution, IStringSubstitution,
name=u'comment_id', name=u'comment_id',
) )
self.assertIsInstance(reply_id(), long) self.assertIsInstance(reply_id(), int)
def testReplyTextStringSubstitution(self): def testReplyTextStringSubstitution(self):
reply_text = getAdapter( reply_text = getAdapter(

View File

@ -68,7 +68,7 @@ class ConversationTest(unittest.TestCase):
new_id = conversation.addComment(comment) new_id = conversation.addComment(comment)
# Check that the conversation methods return the correct data # Check that the conversation methods return the correct data
self.assertTrue(isinstance(comment.comment_id, long)) self.assertTrue(isinstance(comment.comment_id, int))
self.assertTrue(IComment.providedBy(conversation[new_id])) self.assertTrue(IComment.providedBy(conversation[new_id]))
self.assertEqual( self.assertEqual(
aq_base(conversation[new_id].__parent__), aq_base(conversation[new_id].__parent__),
@ -641,7 +641,7 @@ class ConversationTest(unittest.TestCase):
def test_unconvertible_id(self): def test_unconvertible_id(self):
# make sure the conversation view doesn't break when given comment id # make sure the conversation view doesn't break when given comment id
# can't be converted to long # can't be converted to int
conversation = self.portal.doc1.restrictedTraverse( conversation = self.portal.doc1.restrictedTraverse(
'++conversation++default/ThisCantBeRight', '++conversation++default/ThisCantBeRight',