Skip to content

Commit

Permalink
Merge pull request #3 from zopefoundation/issue2
Browse files Browse the repository at this point in the history
Add support for Python 3.7 and fix tests.
  • Loading branch information
jamadden committed Oct 22, 2018
2 parents b75fcaa + 553c999 commit 9afeb1e
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 28 deletions.
8 changes: 7 additions & 1 deletion .travis.yml
Expand Up @@ -5,7 +5,13 @@ python:
- 3.4
- 3.5
- 3.6
- pypy-5.4.1
- pypy
- pypy3
matrix:
include:
- python: "3.7"
dist: xenial
sudo: true
script:
- coverage run -m zope.testrunner --test-path=src --auto-color --auto-progress

Expand Down
4 changes: 2 additions & 2 deletions CHANGES.rst
Expand Up @@ -2,10 +2,10 @@
CHANGES
=======

5.0.1 (unreleased)
5.1.0 (unreleased)
==================

- Nothing changed yet.
- Add support for Python 3.7.


5.0.0 (2017-04-27)
Expand Down
7 changes: 5 additions & 2 deletions setup.py
Expand Up @@ -39,7 +39,7 @@ def read(*rnames):
]

setup(name='zope.app.form',
version='5.0.1.dev0',
version='5.1.0.dev0',
author='Zope Corporation and Contributors',
author_email='zope-dev@zope.org',
description='The Original Zope 3 Form Framework',
Expand All @@ -57,18 +57,21 @@ def read(*rnames):
'Intended Audience :: Developers',
'License :: OSI Approved :: Zope Public License',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
'Natural Language :: English',
'Operating System :: OS Independent',
'Topic :: Internet :: WWW/HTTP',
'Framework :: Zope :: 3',
],
url='http://pypi.python.org/pypi/zope.app.form',
url='https://github.com/zopefoundation/zope.app.form',
license='ZPL 2.1',
packages=find_packages('src'),
package_dir={'': 'src'},
Expand Down
6 changes: 3 additions & 3 deletions src/zope/app/form/browser/form.rst
Expand Up @@ -194,10 +194,10 @@ Now, if I do not specify my own template, and my class does not overwrite the
...
... </configure>
... ''', context)
... except xmlconfig.ZopeXMLConfigurationError as e:
... except xmlconfig.ConfigurationError as e:
... print(e)
File "<string>", line 6.6
ConfigurationError: You must specify a class that implements `getData()` and `setData()`, if you do not overwrite `update()`.
You must specify a class that implements `getData()` and `setData()`, if you do not overwrite `update()`.
File "<string>", line 6.6

Now we need to clean up afterwards.

Expand Down
6 changes: 3 additions & 3 deletions src/zope/app/form/browser/tests/test_add.py
Expand Up @@ -21,7 +21,7 @@
from zope.component import getMultiAdapter
from zope.component.eventtesting import getEvents
from zope.component.interfaces import IFactory
from zope.component.interfaces import IComponentLookup
from zope.interface.interfaces import IComponentLookup
from zope.component.factory import Factory
from zope.interface import Interface, implementer
from zope.lifecycleevent.interfaces import IObjectCreatedEvent, IObjectModifiedEvent
Expand Down Expand Up @@ -270,7 +270,7 @@ def nextURL(self):
view = getMultiAdapter((adding, request), name='addthis')
content = view.create('a',0,abc='def')

self.failUnless(isinstance(content, C))
self.assertTrue(isinstance(content, C))
self.assertEqual(content.args, ('a', 0))
self.assertEqual(content.kw, {'abc':'def'})

Expand Down Expand Up @@ -306,7 +306,7 @@ def nextURL(self):
view = getMultiAdapter((adding, request), name='addthis')
content = view.create('a',0,abc='def')

self.failUnless(isinstance(content, C))
self.assertTrue(isinstance(content, C))
self.assertEqual(content.args, ('a', 0))
self.assertEqual(content.kw, {'abc':'def'})

Expand Down
12 changes: 6 additions & 6 deletions src/zope/app/form/browser/tests/test_directives.py
Expand Up @@ -223,8 +223,8 @@ def testAddFormWithWidget(self):
''')), )

view = component.queryMultiAdapter((ob, request), name='add.html')
self.assert_(hasattr(view, 'text_widget'))
self.assert_(isinstance(view.text_widget, SomeWidget))
self.assertTrue(hasattr(view, 'text_widget'))
self.assertTrue(isinstance(view.text_widget, SomeWidget))
self.assertEqual(view.text_widget.extra, u'foo')
self.assertEqual(view.text_widget.displayWidth, 30)

Expand Down Expand Up @@ -261,8 +261,8 @@ def testEditFormWithWidget(self):
''')), )

view = component.queryMultiAdapter((ob, request), name='edit.html')
self.assert_(hasattr(view, 'text_widget'))
self.assert_(isinstance(view.text_widget, SomeWidget))
self.assertTrue(hasattr(view, 'text_widget'))
self.assertTrue(isinstance(view.text_widget, SomeWidget))
self.assertEqual(view.text_widget.extra, u'foo')
self.assertEqual(view.text_widget.displayWidth, 30)

Expand Down Expand Up @@ -297,8 +297,8 @@ def testSchemaDisplayWithWidget(self):
''')))

view = component.queryMultiAdapter((ob, request), name='view.html')
self.assert_(hasattr(view, 'text_widget'))
self.assert_(isinstance(view.text_widget, SomeWidget))
self.assertTrue(hasattr(view, 'text_widget'))
self.assertTrue(isinstance(view.text_widget, SomeWidget))
self.assertEqual(view.text_widget.extra, u'foo')
self.assertEqual(view.text_widget.displayWidth, 30)

Expand Down
8 changes: 4 additions & 4 deletions src/zope/app/form/browser/tests/test_editview.py
Expand Up @@ -152,7 +152,7 @@ def test_update_no_update(self):
self.assertEqual(c.a , u'c a')
self.assertEqual(c.b , u'c b')
self.assertEqual(c.getbaz(), u'c baz')
self.failIf(getEvents())
self.assertFalse(getEvents())

def test_update(self):
c = C()
Expand All @@ -165,7 +165,7 @@ def test_update(self):
request.form['field.a'] = u'c a'

message = v.update()
self.failUnless(message.startswith('Updated '), message)
self.assertTrue(message.startswith('Updated '), message)
self.assertEqual(c.foo, u'r foo')
self.assertEqual(c.bar, u'r bar')
self.assertEqual(c.a , u'c a')
Expand Down Expand Up @@ -194,10 +194,10 @@ def test_update_via_adapter(self):
request.form[Update] = ''
request.form['field.bar'] = u'r bar'
message = v.update()
self.failUnless(message.startswith('Updated '), message)
self.assertTrue(message.startswith('Updated '), message)
self.assertEqual(a.bar, u'r bar')
# wrong update
self.failIf(getEvents())
self.assertFalse(getEvents())

def test_setUpWidget_via_conform_adapter(self):

Expand Down
4 changes: 2 additions & 2 deletions src/zope/app/form/browser/tests/test_functional_editview.py
Expand Up @@ -104,8 +104,8 @@ def new_update(self):

# confirm that foo was not modified
foo = traverse(self.getRootFolder(), 'foo')
self.assertEquals(foo.required_text, u'initial required')
self.assertEquals(foo.optional_text, u'initial optional')
self.assertEqual(foo.required_text, u'initial required')
self.assertEqual(foo.optional_text, u'initial optional')


def test_suite():
Expand Down
6 changes: 3 additions & 3 deletions src/zope/app/form/browser/tests/test_widgetdirective.py
Expand Up @@ -72,17 +72,17 @@ def get_widget(self, name, context):

def test_addform_widget_without_class(self):
w = self.get_widget("add.html", Adding())
self.assert_(zope.formlib.interfaces.IInputWidget.providedBy(w))
self.assertTrue(zope.formlib.interfaces.IInputWidget.providedBy(w))
self.assertEqual(w.extraAttr, "42")

def test_editform_widget_without_class(self):
w = self.get_widget("edit.html", Content())
self.assert_(zope.formlib.interfaces.IInputWidget.providedBy(w))
self.assertTrue(zope.formlib.interfaces.IInputWidget.providedBy(w))
self.assertEqual(w.extraAttr, "84")

def test_subeditform_widget_without_class(self):
w = self.get_widget("subedit.html", Content())
self.assert_(zope.formlib.interfaces.IInputWidget.providedBy(w))
self.assertTrue(zope.formlib.interfaces.IInputWidget.providedBy(w))
self.assertEqual(w.extraAttr, "168")


Expand Down
2 changes: 1 addition & 1 deletion src/zope/app/form/tests/test_utility.py
Expand Up @@ -23,7 +23,7 @@
import zope.security.checker
from zope.interface import Interface, implementer
from zope.component import testing
from zope.component.interfaces import ComponentLookupError
from zope.interface.interfaces import ComponentLookupError
from zope.publisher.browser import TestRequest, BrowserView
from zope.security.interfaces import ForbiddenAttribute, Unauthorized
from zope.schema import Field, Int, accessors
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
@@ -1,6 +1,6 @@
[tox]
envlist =
py27, pypy, py34, py35, py36
py27, pypy, py34, py35, py36, py37

[testenv]
commands =
Expand Down

0 comments on commit 9afeb1e

Please sign in to comment.