15
0
forked from pool/python-ZODB

Accepting request 800021 from devel:languages:python

- Add patch to work with transaction 3.x:
  * transaction3.patch

OBS-URL: https://build.opensuse.org/request/show/800021
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ZODB?expand=0&rev=8
This commit is contained in:
2020-05-04 16:41:55 +00:00
committed by Git OBS Bridge
3 changed files with 294 additions and 3 deletions

View File

@@ -1,3 +1,9 @@
-------------------------------------------------------------------
Mon May 4 10:50:45 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- Add patch to work with transaction 3.x:
* transaction3.patch
-------------------------------------------------------------------
Mon Mar 4 14:15:53 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>

View File

@@ -1,7 +1,7 @@
#
# spec file for package python-ZODB
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2013 LISA GmbH, Bingen, Germany.
#
# All modifications and additions to the file contributed by third parties
@@ -23,9 +23,9 @@ Version: 5.5.1
Release: 0
Summary: Zope Object Database: object database and persistence
License: ZPL-2.1
Group: Development/Libraries/Python
URL: https://github.com/zopefoundation/ZODB
Source: https://files.pythonhosted.org/packages/source/Z/ZODB/ZODB-%{version}.tar.gz
Patch0: transaction3.patch
BuildRequires: %{python_module BTrees >= 4.2.0}
BuildRequires: %{python_module ZConfig}
BuildRequires: %{python_module manuel}
@@ -63,7 +63,6 @@ support, and undo.
%package -n %{name}-doc
Summary: Zope Object Database: object database and persistence
Group: Development/Libraries/Python
Provides: %{python_module ZODB-doc = %{version}}
%description -n %{name}-doc
@@ -71,6 +70,7 @@ This package contains documentation files for %{name}.
%prep
%setup -q -n ZODB-%{version}
%patch0 -p1
# delete backup files
find . -name "*~" -print -delete
# remove unwanted shebang

285
transaction3.patch Normal file
View File

@@ -0,0 +1,285 @@
From 0adcc6877f690186c97cc5da7e13788946d5e0df Mon Sep 17 00:00:00 2001
From: Jason Madden <jamadden@gmail.com>
Date: Wed, 11 Dec 2019 10:24:00 -0600
Subject: [PATCH] Fix tests with transaction 3.0.
Only test changes were required, no production code changes.
---
src/ZODB/tests/testZODB.py | 7 +-
src/ZODB/tests/test_datamanageradapter.py | 242 ----------------------
3 files changed, 6 insertions(+), 245 deletions(-)
delete mode 100644 src/ZODB/tests/test_datamanageradapter.py
diff --git a/src/ZODB/tests/testZODB.py b/src/ZODB/tests/testZODB.py
index c5f7949e9..2ec6c5af7 100644
--- a/src/ZODB/tests/testZODB.py
+++ b/src/ZODB/tests/testZODB.py
@@ -290,8 +290,9 @@ def checkFailingCommitSticks(self):
rt['a'] = 1
# Arrange for commit to fail during tpc_vote.
- poisoned = PoisonedObject(PoisonedJar(break_tpc_vote=True))
- transaction.get().register(poisoned)
+ poisoned_jar = PoisonedJar(break_tpc_vote=True)
+ poisoned = PoisonedObject(poisoned_jar)
+ transaction.get().join(poisoned_jar)
self.assertRaises(PoisonedError, transaction.get().commit)
# Trying to commit again fails too.
@@ -314,7 +315,7 @@ def checkFailingCommitSticks(self):
# Cleaning up via begin() should also work.
rt['a'] = 2
- transaction.get().register(poisoned)
+ transaction.get().join(poisoned_jar)
self.assertRaises(PoisonedError, transaction.commit)
self.assertRaises(TransactionFailedError, transaction.commit)
# The change to rt['a'] is lost.
diff --git a/src/ZODB/tests/test_datamanageradapter.py b/src/ZODB/tests/test_datamanageradapter.py
deleted file mode 100644
index cfeb40bf3..000000000
--- a/src/ZODB/tests/test_datamanageradapter.py
+++ /dev/null
@@ -1,242 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2003 Zope Foundation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-import unittest
-from doctest import DocTestSuite
-from transaction._transaction import DataManagerAdapter
-from ZODB.tests.sampledm import DataManager
-
-def test_normal_commit():
- """
- So, we have a data manager:
-
- >>> dm = DataManager()
-
- and we do some work that modifies uncommited state:
-
- >>> dm.inc()
- >>> dm.state, dm.delta
- (0, 1)
-
- Now we'll commit the changes. When the data manager joins a transaction,
- the transaction will create an adapter.
-
- >>> dma = DataManagerAdapter(dm)
-
- and register it as a modified object. At commit time, the
- transaction will get the "jar" like this:
-
- >>> jar = getattr(dma, '_p_jar', dma)
-
- and, of course, the jar and the adapter will be the same:
-
- >>> jar is dma
- True
-
- The transaction will call tpc_begin:
-
- >>> t1 = '1'
- >>> jar.tpc_begin(t1)
-
- Then the transaction will call commit on the jar:
-
- >>> jar.commit(t1)
-
- This doesn't actually do anything. :)
-
- >>> dm.state, dm.delta
- (0, 1)
-
- The transaction will then call tpc_vote:
-
- >>> jar.tpc_vote(t1)
-
- This prepares the data manager:
-
- >>> dm.state, dm.delta
- (1, 1)
- >>> dm.prepared
- True
-
- Finally, tpc_finish is called:
-
- >>> jar.tpc_finish(t1)
-
- and the data manager finishes the two-phase commit:
-
- >>> dm.state, dm.delta
- (1, 0)
- >>> dm.prepared
- False
- """
-
-def test_abort():
- """
- So, we have a data manager:
-
- >>> dm = DataManager()
-
- and we do some work that modifies uncommited state:
-
- >>> dm.inc()
- >>> dm.state, dm.delta
- (0, 1)
-
- When the data manager joins a transaction,
- the transaction will create an adapter.
-
- >>> dma = DataManagerAdapter(dm)
-
- and register it as a modified object.
-
- Now we'll abort the transaction. The transaction will get the
- "jar" like this:
-
- >>> jar = getattr(dma, '_p_jar', dma)
-
- and, of course, the jar and the adapter will be the same:
-
- >>> jar is dma
- True
-
- Then the transaction will call abort on the jar:
-
- >>> t1 = '1'
- >>> jar.abort(t1)
-
- Which aborts the changes in the data manager:
-
- >>> dm.state, dm.delta
- (0, 0)
- """
-
-def test_tpc_abort_phase1():
- """
- So, we have a data manager:
-
- >>> dm = DataManager()
-
- and we do some work that modifies uncommited state:
-
- >>> dm.inc()
- >>> dm.state, dm.delta
- (0, 1)
-
- Now we'll commit the changes. When the data manager joins a transaction,
- the transaction will create an adapter.
-
- >>> dma = DataManagerAdapter(dm)
-
- and register it as a modified object. At commit time, the
- transaction will get the "jar" like this:
-
- >>> jar = getattr(dma, '_p_jar', dma)
-
- and, of course, the jar and the adapter will be the same:
-
- >>> jar is dma
- True
-
- The transaction will call tpc_begin:
-
- >>> t1 = '1'
- >>> jar.tpc_begin(t1)
-
- Then the transaction will call commit on the jar:
-
- >>> jar.commit(t1)
-
- This doesn't actually do anything. :)
-
- >>> dm.state, dm.delta
- (0, 1)
-
- At this point, the transaction decides to abort. It calls tpc_abort:
-
- >>> jar.tpc_abort(t1)
-
- Which causes the state of the data manager to be restored:
-
- >>> dm.state, dm.delta
- (0, 0)
- """
-
-def test_tpc_abort_phase2():
- """
- So, we have a data manager:
-
- >>> dm = DataManager()
-
- and we do some work that modifies uncommited state:
-
- >>> dm.inc()
- >>> dm.state, dm.delta
- (0, 1)
-
- Now we'll commit the changes. When the data manager joins a transaction,
- the transaction will create an adapter.
-
- >>> dma = DataManagerAdapter(dm)
-
- and register it as a modified object. At commit time, the
- transaction will get the "jar" like this:
-
- >>> jar = getattr(dma, '_p_jar', dma)
-
- and, of course, the jar and the adapter will be the same:
-
- >>> jar is dma
- True
-
- The transaction will call tpc_begin:
-
- >>> t1 = '1'
- >>> jar.tpc_begin(t1)
-
- Then the transaction will call commit on the jar:
-
- >>> jar.commit(t1)
-
- This doesn't actually do anything. :)
-
- >>> dm.state, dm.delta
- (0, 1)
-
- The transaction calls vote:
-
- >>> jar.tpc_vote(t1)
-
- This prepares the data manager:
-
- >>> dm.state, dm.delta
- (1, 1)
- >>> dm.prepared
- True
-
- At this point, the transaction decides to abort. It calls tpc_abort:
-
- >>> jar.tpc_abort(t1)
-
- Which causes the state of the data manager to be restored:
-
- >>> dm.state, dm.delta
- (0, 0)
- >>> dm.prepared
- False
- """
-
-def test_suite():
- return DocTestSuite()
-
-if __name__ == '__main__':
- unittest.main()