Noorul Islam K M <noo...@collab.net> writes: > Noorul Islam K M <noo...@collab.net> writes: > >> This patch fixes some minor issues with ctypes-python. Now we are >> explicitly clearing the pool. >> >> Log >> [[[ >> >> Fix ctypes-python tests by explicitly clearing pool. >> >> * subversion/bindings/ctypes-python/csvn/wc.py, >> subversion/bindings/ctypes-python/csvn/repos.py >> (WC.clear_pool, LocalRepository.clear_pool, >> RemoteRepository.clear_pool): New method to clear pool. >> >> * subversion/bindings/ctypes-python/test/cw.py, >> subversion/bindings/ctypes-python/test/localrepos.py, >> subversion/bindings/ctypes-python/test/remoterepos.py >> (WCTestCase.setUp, LocalRepositoryTestCase.setUp, >> RemoteRepositoryTestCase.setUp): Initialize instance variable. >> >> (WCTestCase.tearDown, LocalRepositoryTestCase.tearDown, >> RemoteRepositoryTestCase.tearDown): Clear pool. >> >> Patch by: Noorul Islam K M <noorul{_AT_}collab.net> >> ]]] >> >> Index: subversion/bindings/ctypes-python/test/wc.py >> =================================================================== >> --- subversion/bindings/ctypes-python/test/wc.py (revision 1072854) >> +++ subversion/bindings/ctypes-python/test/wc.py (working copy) >> @@ -56,6 +56,8 @@ >> """Test case for Subversion WC layer.""" >> >> def setUp(self): >> + self.repos = None >> + self.wc = None >> dumpfile = open(os.path.join(os.path.split(__file__)[0], >> 'test.dumpfile')) >> >> @@ -63,7 +65,7 @@ >> self.tearDown() >> self.repos = LocalRepository(repos_location, create=True) >> self.repos.load(dumpfile) >> - >> + >> self.wc = WC(wc_location) >> self.wc.checkout(repo_url) >> >> @@ -73,6 +75,10 @@ >> svn_io_remove_dir(wc_location, pool) >> if os.path.exists(repos_location): >> svn_repos_delete(repos_location, pool) >> + if self.repos: >> + self.repos.clear_pool() >> + if self.wc: >> + self.wc.clear_pool() >> self.wc = None >> >> def _info_receiver(self, path, info): >> Index: subversion/bindings/ctypes-python/test/localrepos.py >> =================================================================== >> --- subversion/bindings/ctypes-python/test/localrepos.py (revision >> 1072854) >> +++ subversion/bindings/ctypes-python/test/localrepos.py (working copy) >> @@ -30,6 +30,7 @@ >> class LocalRepositoryTestCase(unittest.TestCase): >> >> def setUp(self): >> + self.repos = None >> dumpfile = open(os.path.join(os.path.split(__file__)[0], >> 'test.dumpfile')) >> >> @@ -41,6 +42,8 @@ >> def tearDown(self): >> if os.path.exists(repos_location): >> svn_repos_delete(repos_location, Pool()) >> + if self.repos: >> + self.repos.clear_pool() >> self.repos = None >> >> def test_local_latest_revnum(self): >> Index: subversion/bindings/ctypes-python/test/remoterepos.py >> =================================================================== >> --- subversion/bindings/ctypes-python/test/remoterepos.py (revision >> 1072854) >> +++ subversion/bindings/ctypes-python/test/remoterepos.py (working copy) >> @@ -43,43 +43,51 @@ >> class RemoteRepositoryTestCase(unittest.TestCase): >> >> def setUp(self): >> + self.local_repo = None >> + self.remote_repo = None >> + >> dumpfile = open(os.path.join(os.path.split(__file__)[0], >> - 'test.dumpfile')) >> + 'test.dumpfile')) >> >> # Just in case a preivous test instance was not properly cleaned up >> self.tearDown() >> - self.repos = LocalRepository(repos_location, create=True) >> - self.repos.load(dumpfile) >> + self.local_repo = LocalRepository(repos_location, create=True) >> + self.local_repo.load(dumpfile) >> >> - self.repos = RemoteRepository(repos_url) >> + self.remote_repo = RemoteRepository(repos_url) >> >> def tearDown(self): >> if os.path.exists(repos_location): >> svn_repos_delete(repos_location, Pool()) >> - self.repos = None >> + if self.remote_repo: >> + self.remote_repo.clear_pool() >> + if self.local_repo: >> + self.local_repo.clear_pool() >> + self.remote_repo = None >> + self.local_repo = None >> >> def test_remote_latest_revnum(self): >> - self.assertEqual(9, self.repos.latest_revnum()) >> + self.assertEqual(9, self.remote_repo.latest_revnum()) >> >> def test_remote_check_path(self): >> self.assertEqual(svn_node_file, >> - self.repos.check_path("trunk/README.txt")) >> + self.remote_repo.check_path("trunk/README.txt")) >> self.assertEqual(svn_node_dir, >> - self.repos.check_path("trunk/dir", 6)) >> + self.remote_repo.check_path("trunk/dir", 6)) >> self.assertEqual(svn_node_none, >> - self.repos.check_path("trunk/dir", 7)) >> + self.remote_repo.check_path("trunk/dir", 7)) >> self.assertEqual(svn_node_none, >> - self.repos.check_path("does_not_compute")) >> + self.remote_repo.check_path("does_not_compute")) >> >> def test_revprop_list(self): >> # Test argument-free case >> - props = self.repos.revprop_list() >> + props = self.remote_repo.revprop_list() >> self.assertEqual(props["svn:log"], >> "Restore information deleted in rev 8\n") >> self.assertEqual(props["svn:author"], "bruce") >> self.assertEqual(props["svn:date"], "2007-08-02T18:24:16.960652Z") >> # Test with revnum argument >> - props = self.repos.revprop_list(4) >> + props = self.remote_repo.revprop_list(4) >> self.assertEqual(props["svn:log"], >> "Add important new file. This marks the 1.0 release.\n\n") >> self.assertEqual(props["svn:author"], "clark") >> @@ -87,10 +95,10 @@ >> >> def test_revprop_get(self): >> # Test without revnum >> - self.assertEqual(self.repos.revprop_get("svn:log"), >> + self.assertEqual(self.remote_repo.revprop_get("svn:log"), >> "Restore information deleted in rev 8\n") >> # With revnum >> - self.assertEqual(self.repos.revprop_get("svn:date", 4), >> + self.assertEqual(self.remote_repo.revprop_get("svn:date", 4), >> "2007-08-02T17:38:08.361367Z") >> >> def test_revprop_set(self): >> @@ -114,14 +122,14 @@ >> ### with a fatal error, so we skip this test for now. >> return >> >> - revnum = self.repos.revprop_set("svn:log", "Changed log") >> + revnum = self.remote_repo.revprop_set("svn:log", "Changed log") >> self.assertEqual(revnum, 9) >> - self.assertEqual(self.repos.revprop_get("svn:log"), "Changed log") >> + self.assertEqual(self.remote_repo.revprop_get("svn:log"), "Changed >> log") >> >> # Test with revnum argument also >> - revnum = self.repos.revprop_set("svn:log", "Another changed log", 4) >> + revnum = self.remote_repo.revprop_set("svn:log", "Another changed >> log", 4) >> self.assertEqual(revnum, 4) >> - self.assertEqual(self.repos.revprop_get("svn:log", 4), >> + self.assertEqual(self.remote_repo.revprop_get("svn:log", 4), >> "Another changed log") >> >> @staticmethod >> @@ -133,7 +141,7 @@ >> f = open(newfile, "w") >> f.write("Some new stuff\n") >> f.close() >> - commit_info = self.repos.svnimport(newfile, "%s/newfile.txt" % >> repos_url, log_func=self._log_func) >> + commit_info = self.remote_repo.svnimport(newfile, "%s/newfile.txt" >> % repos_url, log_func=self._log_func) >> self.assertEqual(commit_info.revision, 10) >> >> def suite(): >> Index: subversion/bindings/ctypes-python/csvn/repos.py >> =================================================================== >> --- subversion/bindings/ctypes-python/csvn/repos.py (revision 1072854) >> +++ subversion/bindings/ctypes-python/csvn/repos.py (working copy) >> @@ -359,6 +359,11 @@ >> commit_info[0].pool = pool >> return commit_info[0] >> >> + def clear_pool(self): >> + "Clear pool" >> + if self.pool: >> + self.pool.clear() >> + >> class LocalRepository(object): >> """A client which accesses the repository directly. This class >> may allow you to perform some administrative actions which >> @@ -525,6 +530,11 @@ >> >> self.iterpool.clear() >> >> + def clear_pool(self): >> + "Clear pool" >> + if self.pool: >> + self.pool.clear() >> + >> class _fs(object): >> """NOTE: This is a private class. Don't use it outside of >> this module. Use the Repos class instead. >> Index: subversion/bindings/ctypes-python/csvn/wc.py >> =================================================================== >> --- subversion/bindings/ctypes-python/csvn/wc.py (revision 1072854) >> +++ subversion/bindings/ctypes-python/csvn/wc.py (working copy) >> @@ -804,3 +804,8 @@ >> merge_options.header, self.client, self.iterpool) >> >> self.iterpool.clear() >> + >> + def clear_pool(self): >> + "Clear pool" >> + if self.pool: >> + self.pool.clear() > > Pinging to get some attention. >
Shall I go ahead and open an issue in the tracker for this? Thanks and Regards Noorul