Author: futatuki Date: Sun Sep 24 06:45:47 2023 New Revision: 1912502 URL: http://svn.apache.org/viewvc?rev=1912502&view=rev Log: swig-py: Add test for repos.ParseFns3._close_dumpstream
* subversion/bindings/swig/python/tests/repository.py (DumpStreamParser.__init__): Add optional parameter stream (DumpStreamParser._close_dumpstream): New (DumpStreamParser.test_parse_fns3): Check if DumpStreamParser._close_dumpstream is invoked. Patch by: jun66j5 Modified: subversion/trunk/subversion/bindings/swig/python/tests/repository.py 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=1912502&r1=1912501&r2=1912502&view=diff ============================================================================== --- subversion/trunk/subversion/bindings/swig/python/tests/repository.py (original) +++ subversion/trunk/subversion/bindings/swig/python/tests/repository.py Sun Sep 24 06:45:47 2023 @@ -22,7 +22,7 @@ import unittest, setup_path, os, sys from sys import version_info # For Python version check from io import BytesIO from svn import core, repos, fs, delta -from svn.core import SubversionException +from svn.core import SubversionException, Pool import utils class ChangeReceiver(delta.Editor): @@ -40,9 +40,14 @@ class ChangeReceiver(delta.Editor): return textdelta_handler class DumpStreamParser(repos.ParseFns3): - def __init__(self): + def __init__(self, stream=None): repos.ParseFns3.__init__(self) + self.stream = stream self.ops = [] + def _close_dumpstream(self): + if self.stream: + self.stream.close() + self.stream = None def magic_header_record(self, version, pool=None): self.ops.append((b"magic-header", version)) def uuid_record(self, uuid, pool=None): @@ -175,13 +180,14 @@ class SubversionRepositoryTestCase(unitt def is_cancelled(): self.cancel_calls += 1 return None + pool = Pool() + subpool = Pool(pool) dump_path = os.path.join(os.path.dirname(sys.argv[0]), "trac/versioncontrol/tests/svnrepos.dump") stream = open(dump_path, 'rb') - dsp = DumpStreamParser() - ptr, baton = repos.make_parse_fns3(dsp) + dsp = DumpStreamParser(stream) + ptr, baton = repos.make_parse_fns3(dsp, subpool) repos.parse_dumpstream3(stream, ptr, baton, False, is_cancelled) - stream.close() self.assertEqual(self.cancel_calls, 76) expected_list = [ (b"magic-header", 2), @@ -226,6 +232,11 @@ class SubversionRepositoryTestCase(unitt # the comparison list gets too long. self.assertEqual(dsp.ops[:len(expected_list)], expected_list) + # _close_dumpstream should be invoked after 'subpool' is destroyed + self.assertEqual(False, stream.closed) + del ptr, baton, subpool + self.assertEqual(True, stream.closed) + def test_parse_fns3_invalid_set_fulltext(self): class DumpStreamParserSubclass(DumpStreamParser): def set_fulltext(self, node_baton):