Test on ZODB 4.4

Fixes #169.

We need this version for IMultiCommitStorage and the registerDB fix in
ConflictResolvingStorage. Since these versions run on Python 2.7.8,
there's no motivation for trying to go back farther.
This commit is contained in:
Jason Madden 2017-04-11 08:37:03 -05:00
parent 68c8cf1cb4
commit 3b65f778e6
No known key found for this signature in database
GPG Key ID: 349F84431A08B99E
7 changed files with 39 additions and 15 deletions

View File

@ -30,7 +30,10 @@ matrix:
- python: 3.5 - python: 3.5
env: ENV=mysql env: ENV=mysql
- python: 2.7 - python: 2.7
env: ENV=mysql env:
- ENV=mysql
- OLDZODB=true
- python: pypy-5.4.1 - python: pypy-5.4.1
env: ENV=mysql env: ENV=mysql
@ -82,6 +85,7 @@ install:
- if [[ $TRAVIS_PYTHON_VERSION != pypy* ]]; then pip install -U pylibmc cffi; fi - if [[ $TRAVIS_PYTHON_VERSION != pypy* ]]; then pip install -U pylibmc cffi; fi
- pip install -U -e ".[test]" - pip install -U -e ".[test]"
- .travis/setup-$ENV.sh - .travis/setup-$ENV.sh
- if [[ $OLDZODB == true ]]; then .travis/setup-oldzodb.sh; fi
cache: pip cache: pip

2
.travis/setup-oldzodb.sh Executable file
View File

@ -0,0 +1,2 @@
pip uninstall -y ZODB ZEO transaction
pip install "ZODB[test] == 4.4.3" "ZEO == 4.3.1" "transaction == 1.7.0"

View File

@ -14,11 +14,11 @@ supported platform (OS X, Windows or "manylinx"), you can get a
pre-built binary wheel. If you install from source or on a different pre-built binary wheel. If you install from source or on a different
platform, you will need to have a functioning C compiler. platform, you will need to have a functioning C compiler.
RelStorage requires a modern version of ZODB; it is tested with ZODB RelStorage requires a modern version of ZODB and ZEO; it is tested
4.3 and 5.0 but *might* work with ZODB as old as 3.10. If you need to with ZODB 4.4 and 5.x and ZEO 4.3 and 5.x. If you need to use an older
use an older version of ZODB, install RelStorage 1.6. Likewise, if version of ZODB/ZEO, install RelStorage 1.6. Likewise, if you need
you need Python 2.6 support, install RelStorage 1.6 (note that 1.6 Python 2.6 support, install RelStorage 1.6 (note that 1.6 *does not*
*does not* run on Python 3 or PyPy). run on Python 3 or PyPy).
Database Adapter Database Adapter
================ ================

View File

@ -256,6 +256,8 @@ class GenericRelStorageTests(
finally: finally:
db.close() db.close()
@util.skipOnZODB4("ZODB/tests/StorageTestBase"
"expects different results from handle_all_serials")
def checkResolveConflictBetweenConnections(self): def checkResolveConflictBetweenConnections(self):
# Verify that conflict resolution works between storage instances # Verify that conflict resolution works between storage instances
# bound to connections. # bound to connections.

View File

@ -1,7 +1,7 @@
import os import os
import platform import platform
import unittest import unittest
import pkg_resources
# ZODB >= 3.9. The blob directory can be a private cache. # ZODB >= 3.9. The blob directory can be a private cache.
shared_blob_dir_choices = (False, True) shared_blob_dir_choices = (False, True)
@ -11,6 +11,9 @@ RUNNING_ON_TRAVIS = os.environ.get('TRAVIS')
RUNNING_ON_APPVEYOR = os.environ.get('APPVEYOR') RUNNING_ON_APPVEYOR = os.environ.get('APPVEYOR')
RUNNING_ON_CI = RUNNING_ON_TRAVIS or RUNNING_ON_APPVEYOR RUNNING_ON_CI = RUNNING_ON_TRAVIS or RUNNING_ON_APPVEYOR
# pylint:disable=no-member
RUNNING_ON_ZODB4 = pkg_resources.get_distribution('ZODB').version[0] == '4'
def _do_not_skip(reason): # pylint:disable=unused-argument def _do_not_skip(reason): # pylint:disable=unused-argument
def dec(f): def dec(f):
return f return f
@ -26,6 +29,11 @@ if RUNNING_ON_APPVEYOR:
else: else:
skipOnAppveyor = _do_not_skip skipOnAppveyor = _do_not_skip
if RUNNING_ON_ZODB4:
skipOnZODB4 = unittest.skip
else:
skipOnZODB4 = _do_not_skip
CACHE_SERVERS = None CACHE_SERVERS = None
CACHE_MODULE_NAME = None CACHE_MODULE_NAME = None

View File

@ -125,22 +125,22 @@ setup(
'cx_Oracle>=5.0.0' 'cx_Oracle>=5.0.0'
], ],
":python_full_version >= '2.7.9'": [ ":python_full_version >= '2.7.9'": [
'ZODB >= 4.4.2', 'ZODB >= 4.4.3',
'ZEO >= 4.2.0', 'ZEO >= 4.3.1',
], ],
":python_full_version == '3.6.0rc1'": [ ":python_full_version == '3.6.0rc1'": [
# For some reason ZEO isn't getting installed # For some reason ZEO isn't getting installed
# on 3.6rc1/pip 9.0.1/tox 2.5.1. Looks like the # on 3.6rc1/pip 9.0.1/tox 2.5.1. Looks like the
# version selection <, >= environment markers aren't working. # version selection <, >= environment markers aren't working.
# So we give a full version spec, which seems to work. # So we give a full version spec, which seems to work.
'ZODB >= 4.4.2', 'ZODB >= 4.4.3',
'ZEO >= 4.2.0', 'ZEO >= 4.3.1',
], ],
":python_full_version < '2.7.9'": [ ":python_full_version < '2.7.9'": [
# We must pin old versions prior to 2.7.9 because ZEO # We must pin old versions prior to 2.7.9 because ZEO
# 5 only runs on versions with good SSL support. # 5 only runs on versions with good SSL support.
'ZODB >= 4.4.2, <5.0', 'ZODB >= 4.4.3, <5.0',
'ZEO >= 4.2.0, <5.0' 'ZEO >= 4.3.1, <5.0'
], ],
'test': tests_require, 'test': tests_require,
}, },

12
tox.ini
View File

@ -1,5 +1,5 @@
[tox] [tox]
envlist = py27-mysql,py27-postgres,pypy-mysql,pypy-postgres,py34-mysql,py34-postgres,py36-mysql,py36-postgres envlist = py27-mysql,py27-oldzodb,py27-postgres,pypy-mysql,pypy-postgres,py34-mysql,py34-postgres,py36-mysql,py36-postgres
[testenv] [testenv]
# Our top-level 'relstorage' directory screws up imports. # Our top-level 'relstorage' directory screws up imports.
@ -9,13 +9,21 @@ deps =
coverage coverage
.[test] .[test]
commands = commands =
coverage run -m relstorage.tests.alltests coverage run -m relstorage.tests.alltests -f -v
[testenv:py27-mysql] [testenv:py27-mysql]
deps = deps =
.[mysql] .[mysql]
{[testenv]deps} {[testenv]deps}
[testenv:py27-oldzodb]
deps =
.[postgresql]
{[testenv]deps}
ZODB[test] == 4.4.3
ZEO == 4.3.1
transaction == 1.7.0
[testenv:py27-postgres] [testenv:py27-postgres]
deps = deps =
.[postgresql] .[postgresql]