devtools/repotest.py
changeset 2144 51c84d585456
parent 2074 9e268cb6202e
child 2172 cf8f9180e63e
equal deleted inserted replaced
2141:0072247db207 2144:51c84d585456
     8 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
     8 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
     9 """
     9 """
    10 __docformat__ = "restructuredtext en"
    10 __docformat__ = "restructuredtext en"
    11 
    11 
    12 from pprint import pprint
    12 from pprint import pprint
       
    13 
       
    14 from logilab.common.decorators import clear_cache
    13 
    15 
    14 def tuplify(list):
    16 def tuplify(list):
    15     for i in range(len(list)):
    17     for i in range(len(list)):
    16         if type(list[i]) is not type(()):
    18         if type(list[i]) is not type(()):
    17             list[i] = tuple(list[i])
    19             list[i] = tuple(list[i])
   113         rqlannotation._select_principal = _select_principal
   115         rqlannotation._select_principal = _select_principal
   114 
   116 
   115     def tearDown(self):
   117     def tearDown(self):
   116         ExecutionPlan._check_permissions = _orig_check_permissions
   118         ExecutionPlan._check_permissions = _orig_check_permissions
   117         rqlannotation._select_principal = _orig_select_principal
   119         rqlannotation._select_principal = _orig_select_principal
       
   120         
       
   121     def set_debug(self, debug):
       
   122         set_debug(debug)
   118 
   123 
   119     def _prepare(self, rql):
   124     def _prepare(self, rql):
   120         #print '******************** prepare', rql
   125         #print '******************** prepare', rql
   121         union = self.rqlhelper.parse(rql)
   126         union = self.rqlhelper.parse(rql)
   122         #print '********* parsed', union.as_string()
   127         #print '********* parsed', union.as_string()
   201         self.session.commit()
   206         self.session.commit()
   202         self.session.set_pool()
   207         self.session.set_pool()
   203 
   208 
   204 
   209 
   205 class BasePlannerTC(BaseQuerierTC):
   210 class BasePlannerTC(BaseQuerierTC):
       
   211     def setup(self):
       
   212         clear_cache(self.repo, 'rel_type_sources')
       
   213         clear_cache(self.repo, 'rel_type_sources')
       
   214         clear_cache(self.repo, 'can_cross_relation')
       
   215         clear_cache(self.repo, 'is_multi_sources_relation')
       
   216         # XXX source_defs
       
   217         self.o = self.repo.querier
       
   218         self.session = self.repo._sessions.values()[0]
       
   219         self.pool = self.session.set_pool()
       
   220         self.schema = self.o.schema
       
   221         self.sources = self.o._repo.sources
       
   222         self.system = self.sources[-1]
       
   223         self.newsources = 0
       
   224         do_monkey_patch()
       
   225 
       
   226     def add_source(self, sourcecls, uri):
       
   227         self.sources.append(sourcecls(self.repo, self.o.schema,
       
   228                                       {'uri': uri}))
       
   229         self.repo.sources_by_uri[uri] = self.sources[-1]
       
   230         setattr(self, uri, self.sources[-1])
       
   231         self.newsources += 1
       
   232 
       
   233     def tearDown(self):
       
   234         while self.newsources:
       
   235             source = self.sources.pop(-1)
       
   236             del self.repo.sources_by_uri[source.uri]
       
   237             self.newsources -= 1
       
   238         undo_monkey_patch()
   206 
   239 
   207     def _prepare_plan(self, rql, kwargs=None):
   240     def _prepare_plan(self, rql, kwargs=None):
   208         rqlst = self.o.parse(rql, annotate=True)
   241         rqlst = self.o.parse(rql, annotate=True)
   209         self.o.solutions(self.session, rqlst, kwargs)
   242         self.o.solutions(self.session, rqlst, kwargs)
   210         if rqlst.TYPE == 'select':
   243         if rqlst.TYPE == 'select':