Author: jorton Date: Thu Jun 19 08:22:56 2025 New Revision: 1926575 URL: http://svn.apache.org/viewvc?rev=1926575&view=rev Log: Fix SWIG test cases for Python 3.14.
The interpreter internally avoids some reference count modifications when loading objects onto the operands stack by borrowing references when possible. This can lead to smaller reference count values compared to previous Python versions. https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-refcount * subversion/bindings/swig/python/tests/repository.py (SubversionRepositoryTestCase.test_replay_batons_refcounts): Fix expected refcounts for Python 3.14. * subversion/bindings/swig/python/tests/mergeinfo.py (SubversionMergeinfoTestCase.test_mergeinfo_leakage__incorrect_range_t_refcounts): Likewise. Submitted by: Yaakov Selkowitz <yselkowitz redhat.com> GitHub: closes #30 Modified: subversion/trunk/subversion/bindings/swig/python/tests/mergeinfo.py subversion/trunk/subversion/bindings/swig/python/tests/repository.py Modified: subversion/trunk/subversion/bindings/swig/python/tests/mergeinfo.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/tests/mergeinfo.py?rev=1926575&r1=1926574&r2=1926575&view=diff ============================================================================== --- subversion/trunk/subversion/bindings/swig/python/tests/mergeinfo.py (original) +++ subversion/trunk/subversion/bindings/swig/python/tests/mergeinfo.py Thu Jun 19 08:22:56 2025 @@ -138,8 +138,8 @@ class SubversionMergeinfoTestCase(unitte # ....and now 3 (incref during iteration of each range object) refcount = sys.getrefcount(r) - # ....and finally, 4 (getrefcount() also increfs) - expected = 4 + # ....and finally, 4 (getrefcount() also increfs, but not as of 3.14) + expected = 3 if sys.version_info >= (3, 14) else 4 # Note: if path and index are not '/trunk' and 0 respectively, then # only some of the range objects are leaking, which is, as far as Modified: subversion/trunk/subversion/bindings/swig/python/tests/repository.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/swig/python/tests/repository.py?rev=1926575&r1=1926574&r2=1926575&view=diff ============================================================================== --- subversion/trunk/subversion/bindings/swig/python/tests/repository.py (original) +++ subversion/trunk/subversion/bindings/swig/python/tests/repository.py Thu Jun 19 08:22:56 2025 @@ -429,13 +429,14 @@ class SubversionRepositoryTestCase(unitt root = fs.revision_root(self.fs, self.rev) editor = BatonCollector(self.fs, root) e_ptr, e_baton = delta.make_editor(editor) + expected = 1 if sys.version_info >= (3, 14) else 2 repos.replay(root, e_ptr, e_baton) for baton in editor.batons: self.assertEqual(sys.getrefcount(baton[2]), 2, "leak on baton %s after replay without errors" % repr(baton)) del e_baton - self.assertEqual(sys.getrefcount(e_ptr), 2, + self.assertEqual(sys.getrefcount(e_ptr), expected, "leak on editor baton after replay without errors") editor = BatonCollectorErrorOnClose(self.fs, root, @@ -451,7 +452,7 @@ class SubversionRepositoryTestCase(unitt self.assertEqual(sys.getrefcount(baton[2]), 2, "leak on baton %s after replay with an error" % repr(baton)) - self.assertEqual(sys.getrefcount(e_ptr), 2, + self.assertEqual(sys.getrefcount(e_ptr), expected, "leak on editor baton after replay with an error") def test_delta_editor_apply_textdelta_handler_refcount(self):
