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. Thanks and Regards Noorul