diff -r f4d1d5d9ccbb -r 90f2f20367bc devtools/repotest.py --- a/devtools/repotest.py Tue Jul 27 12:36:03 2010 +0200 +++ b/devtools/repotest.py Wed Nov 03 16:38:28 2010 +0100 @@ -18,8 +18,8 @@ """some utilities to ease repository testing This module contains functions to initialize a new repository. +""" -""" __docformat__ = "restructuredtext en" from pprint import pprint @@ -41,7 +41,7 @@ plan = self._prepare_plan(rql, kwargs) self.planner.build_plan(plan) try: - self.assertEquals(len(plan.steps), len(expected), + self.assertEqual(len(plan.steps), len(expected), 'expected %s steps, got %s' % (len(expected), len(plan.steps))) # step order is important for i, step in enumerate(plan.steps): @@ -52,20 +52,20 @@ def compare_steps(self, step, expected): try: - self.assertEquals(step[0], expected[0], 'expected step type %s, got %s' % (expected[0], step[0])) + self.assertEqual(step[0], expected[0], 'expected step type %s, got %s' % (expected[0], step[0])) if len(step) > 2 and isinstance(step[1], list) and isinstance(expected[1], list): queries, equeries = step[1], expected[1] - self.assertEquals(len(queries), len(equeries), + self.assertEqual(len(queries), len(equeries), 'expected %s queries, got %s' % (len(equeries), len(queries))) for i, (rql, sol) in enumerate(queries): - self.assertEquals(rql, equeries[i][0]) - self.assertEquals(sorted(sol), sorted(equeries[i][1])) + self.assertEqual(rql, equeries[i][0]) + self.assertEqual(sorted(sol), sorted(equeries[i][1])) idx = 2 else: idx = 1 - self.assertEquals(step[idx:-1], expected[idx:-1], + self.assertEqual(step[idx:-1], expected[idx:-1], 'expected step characteristic \n%s\n, got\n%s' % (expected[1:-1], step[1:-1])) - self.assertEquals(len(step[-1]), len(expected[-1]), + self.assertEqual(len(step[-1]), len(expected[-1]), 'got %s child steps, expected %s' % (len(step[-1]), len(expected[-1]))) except AssertionError: print 'error on step ', @@ -134,24 +134,35 @@ schema._eid_index[rdef.eid] = rdef -from logilab.common.testlib import TestCase +from logilab.common.testlib import TestCase, mock_object +from logilab.database import get_db_helper + from rql import RQLHelper + from cubicweb.devtools.fake import FakeRepo, FakeSession from cubicweb.server import set_debug from cubicweb.server.querier import QuerierHelper from cubicweb.server.session import Session -from cubicweb.server.sources.rql2sql import remove_unused_solutions +from cubicweb.server.sources.rql2sql import SQLGenerator, remove_unused_solutions class RQLGeneratorTC(TestCase): - schema = None # set this in concret test + schema = backend = None # set this in concret test def setUp(self): self.repo = FakeRepo(self.schema) + self.repo.system_source = mock_object(dbdriver=self.backend) self.rqlhelper = RQLHelper(self.schema, special_relations={'eid': 'uid', - 'has_text': 'fti'}) + 'has_text': 'fti'}, + backend=self.backend) self.qhelper = QuerierHelper(self.repo, self.schema) ExecutionPlan._check_permissions = _dummy_check_permissions rqlannotation._select_principal = _select_principal + if self.backend is not None: + try: + dbhelper = get_db_helper(self.backend) + except ImportError, ex: + self.skipTest(str(ex)) + self.o = SQLGenerator(self.schema, dbhelper) def tearDown(self): ExecutionPlan._check_permissions = _orig_check_permissions @@ -270,6 +281,7 @@ self.system = self.sources[-1] do_monkey_patch() self._dumb_sessions = [] # by hi-jacked parent setup + self.repo.vreg.rqlhelper.backend = 'postgres' # so FTIRANK is considered def add_source(self, sourcecls, uri): self.sources.append(sourcecls(self.repo, self.o.schema,