devtools/repotest.py
brancholdstable
changeset 6665 90f2f20367bc
parent 6414 6003dc203567
child 6427 c8a5ac2d1eaa
--- 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,