diff -r 17abdb7af3e6 -r 1485aab7ece6 devtools/repotest.py --- a/devtools/repotest.py Tue Jun 10 14:25:20 2014 +0200 +++ b/devtools/repotest.py Mon Jun 02 16:10:16 2014 +0200 @@ -1,4 +1,4 @@ -# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +# copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr # # This file is part of CubicWeb. @@ -22,10 +22,8 @@ __docformat__ = "restructuredtext en" -from copy import deepcopy from pprint import pprint -from logilab.common.decorators import clear_cache from logilab.common.testlib import SkipTest def tuplify(list): @@ -204,27 +202,22 @@ self.ueid = self.session.user.eid assert self.ueid != -1 self.repo._type_source_cache = {} # clear cache - self.cnxset = self.session.set_cnxset() self.maxeid = self.get_max_eid() do_monkey_patch() self._dumb_sessions = [] def get_max_eid(self): - return self.session.execute('Any MAX(X)')[0][0] + with self.session.new_cnx() as cnx: + return cnx.execute('Any MAX(X)')[0][0] + def cleanup(self): - self.session.set_cnxset() - self.session.execute('DELETE Any X WHERE X eid > %s' % self.maxeid) + with self.session.new_cnx() as cnx: + cnx.execute('DELETE Any X WHERE X eid > %s' % self.maxeid) + cnx.commit() def tearDown(self): undo_monkey_patch() - self.session.rollback() self.cleanup() - self.commit() - # properly close dumb sessions - for session in self._dumb_sessions: - session.rollback() - session.close() - self.repo._free_cnxset(self.cnxset) assert self.session.user.eid != -1 def set_debug(self, debug): @@ -259,21 +252,11 @@ def user_groups_session(self, *groups): """lightweight session using the current user with hi-jacked groups""" # use self.session.user.eid to get correct owned_by relation, unless explicit eid - u = self.repo._build_user(self.session, self.session.user.eid) - u._groups = set(groups) - s = Session(u, self.repo) - s._cnx.cnxset = self.cnxset - s._cnx.ctx_count = 1 - # register session to ensure it gets closed - self._dumb_sessions.append(s) - return s - - def execute(self, rql, args=None, build_descr=True): - return self.o.execute(self.session, rql, args, build_descr) - - def commit(self): - self.session.commit() - self.session.set_cnxset() + with self.session.new_cnx() as cnx: + u = self.repo._build_user(cnx, self.session.user.eid) + u._groups = set(groups) + s = Session(u, self.repo) + return s def qexecute(self, rql, args=None, build_descr=True): with self.session.new_cnx() as cnx: @@ -291,19 +274,13 @@ # XXX source_defs self.o = self.repo.querier self.session = self.repo._sessions.values()[0] - self.cnxset = self.session.set_cnxset() self.schema = self.o.schema self.system = self.repo.system_source do_monkey_patch() - self._dumb_sessions = [] # by hi-jacked parent setup self.repo.vreg.rqlhelper.backend = 'postgres' # so FTIRANK is considered def tearDown(self): undo_monkey_patch() - for session in self._dumb_sessions: - if session._cnx.cnxset is not None: - session._cnx.cnxset = None - session.close() def _prepare_plan(self, rql, kwargs=None): rqlst = self.o.parse(rql, annotate=True) @@ -363,24 +340,6 @@ _sort=lambda rels: sorted(rels, key=sort_key)) -def _merge_input_maps(*args, **kwargs): - return sorted(_orig_merge_input_maps(*args, **kwargs)) - -def _choose_term(self, source, sourceterms): - # predictable order for test purpose - def get_key(x): - try: - # variable - return x.name - except AttributeError: - try: - # relation - return x.r_type - except AttributeError: - # const - return x.value - return _orig_choose_term(self, source, DumbOrderedDict2(sourceterms, get_key)) - def _ordered_iter_relations(stinfo): return sorted(_orig_iter_relations(stinfo), key=lambda x:x.r_type)