Move entity cache from web.request.ConnectionCubicWebRequestBase to repoapi.ClientConnection
ResultSet._build_entity relies on an entity cache to avoid going round in
circles (stack overflow due to infinite recursion) e.g. in a postcreate script.
Clear the cache at commit/rollback time to avoid unexpected side
effects; and explicitly clear the cache in a few tests where we mix ORM
and RQL using the same connection.
# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr## This file is part of CubicWeb.## CubicWeb is free software: you can redistribute it and/or modify it under the# terms of the GNU Lesser General Public License as published by the Free# Software Foundation, either version 2.1 of the License, or (at your option)# any later version.## CubicWeb is distributed in the hope that it will be useful, but WITHOUT# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more# details.## You should have received a copy of the GNU Lesser General Public License along# with CubicWeb. If not, see <http://www.gnu.org/licenses/>.fromlogilab.common.testlibimportunittest_mainfromcubicweb.devtools.testlibimportCubicWebTCclassBookmarkHooksTC(CubicWebTC):deftest_auto_delete_bookmarks(self):beid=self.execute('INSERT Bookmark X: X title "hop", X path "view", X bookmarked_by U ''WHERE U login "admin"')[0][0]self.execute('SET X bookmarked_by U WHERE U login "anon"')self.commit()self.execute('DELETE X bookmarked_by U WHERE U login "admin"')self.commit()self.assertTrue(self.execute('Any X WHERE X eid %(x)s',{'x':beid}))self.execute('DELETE X bookmarked_by U WHERE U login "anon"')self.commit()self.assertFalse(self.execute('Any X WHERE X eid %(x)s',{'x':beid}))if__name__=='__main__':unittest_main()