Author: jun66j5
Date: Tue Jan 25 08:30:52 2022
New Revision: 1897441
URL: http://svn.apache.org/viewvc?rev=1897441&view=rev
Log:
swig-py: Fix cleanup failing in teardown with Python 3 on Windows because the
repostiory is still open due to circular reference of the raised exception.
* subversion/bindings/swig/python/tests/fs.py
(SubversionFSTestCase.check_commit_txn): avoid circular reference of the
raised exception.
Modified:
subversion/trunk/subversion/bindings/swig/python/tests/fs.py
Modified: subversion/trunk/subversion/bindings/swig/python/tests/fs.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/tests/fs.py?rev=1897441&r1=1897440&r2=1897441&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/swig/python/tests/fs.py (original)
+++ subversion/trunk/subversion/bindings/swig/python/tests/fs.py Tue Jan 25
08:30:52 2022
@@ -346,13 +346,12 @@ class SubversionFSTestCase(unittest.Test
if (isinstance(expected_conflict, bytes)
and not isinstance(expected_conflict, str)):
expected_conflict = expected_conflict.decode('utf-8')
- err = None
+
new_rev = None
conflict = None
try:
conflict, new_rev = fs.commit_txn(txn, pool)
except core.SubversionException as e:
- err = e
self.assertTrue(hasattr(e, 'conflict_p'))
conflict = e.conflict_p
if isinstance(conflict, bytes) and not isinstance(conflict, str):
@@ -360,41 +359,42 @@ class SubversionFSTestCase(unittest.Test
self.assertTrue(hasattr(e, 'new_rev'))
new_rev = e.new_rev
- if err and err.apr_err == core.SVN_ERR_FS_CONFLICT:
- self.assertIsNotNone(expected_conflict,
- "commit conflicted at '%s', but no conflict expected"
- % conflict if conflict else '(missing conflict info!)')
- self.assertIsNotNone(conflict,
- "commit conflicted as expected, "
- "but no conflict path was returned ('%s' expected)"
- % expected_conflict)
- if expected_conflict:
- self.assertEqual(conflict, expected_conflict,
- "commit conflicted at '%s', but expected conflict at '%s'"
- % (conflict, expected_conflict))
-
- # The svn_fs_commit_txn() API promises to set *NEW_REV to an
- # invalid revision number in the case of a conflict.
- self.assertEqual(new_rev, core.SVN_INVALID_REVNUM,
- "conflicting commit returned valid new revision")
-
- elif err:
- # commit may have succeeded, but always report an error
- if new_rev != core.SVN_INVALID_REVNUM:
- raise core.SubversionException(
- "commit succeeded but something else failed",
- err.apr_err, err)
+ if e.apr_err == core.SVN_ERR_FS_CONFLICT:
+ self.assertIsNotNone(expected_conflict,
+ "commit conflicted at '%s', but no conflict expected"
+ % conflict if conflict else '(missing conflict info!)')
+ self.assertIsNotNone(conflict,
+ "commit conflicted as expected, "
+ "but no conflict path was returned ('%s' expected)"
+ % expected_conflict)
+ if expected_conflict:
+ self.assertEqual(conflict, expected_conflict,
+ "commit conflicted at '%s', but expected conflict at '%s'"
+ % (conflict, expected_conflict))
+
+ # The svn_fs_commit_txn() API promises to set *NEW_REV to an
+ # invalid revision number in the case of a conflict.
+ self.assertEqual(new_rev, core.SVN_INVALID_REVNUM,
+ "conflicting commit returned valid new revision")
+
else:
- raise core.SubversionException(
- "commit failed due to something other than conflict",
- err.apr_err, err)
+ # commit may have succeeded, but always report an error
+ if new_rev != core.SVN_INVALID_REVNUM:
+ raise core.SubversionException(
+ "commit succeeded but something else failed",
+ e.apr_err, e)
+ else:
+ raise core.SubversionException(
+ "commit failed due to something other than conflict",
+ e.apr_err, e)
else:
- # err == None, commit should have succeeded
+ # commit should have succeeded
self.assertNotEqual(new_rev, core.SVN_INVALID_REVNUM,
"commit failed but no error was returned")
self.assertIsNone(expected_conflict,
"commit succeeded that was expected to fail at '%s'"
% expected_conflict)
+
return new_rev