Hello community, here is the log from the commit of package python-ZODB for openSUSE:Leap:15.2 checked in at 2020-05-06 20:41:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/python-ZODB (Old) and /work/SRC/openSUSE:Leap:15.2/.python-ZODB.new.2738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ZODB" Wed May 6 20:41:17 2020 rev:12 rq:800689 version:5.5.1 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/python-ZODB/python-ZODB.changes 2020-03-09 18:01:56.300715434 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.python-ZODB.new.2738/python-ZODB.changes 2020-05-06 20:41:23.588769757 +0200 @@ -1,0 +2,6 @@ +Mon May 4 10:50:45 UTC 2020 - Tomáš Chvátal <tchva...@suse.com> + +- Add patch to work with transaction 3.x: + * transaction3.patch + +------------------------------------------------------------------- New: ---- transaction3.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-ZODB.spec ++++++ --- /var/tmp/diff_new_pack.Xk8AYh/_old 2020-05-06 20:41:24.220771065 +0200 +++ /var/tmp/diff_new_pack.Xk8AYh/_new 2020-05-06 20:41:24.224771074 +0200 @@ -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 @@ 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 @@ %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 @@ %prep %setup -q -n ZODB-%{version} +%patch0 -p1 # delete backup files find . -name "*~" -print -delete # remove unwanted shebang ++++++ transaction3.patch ++++++ >From 0adcc6877f690186c97cc5da7e13788946d5e0df Mon Sep 17 00:00:00 2001 From: Jason Madden <jamad...@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()