Vo Minh Thu (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-test-classes-vmt into 
lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-test-classes-vmt/+merge/94926
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-test-classes-vmt/+merge/94926
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-test-classes-vmt.
=== modified file 'openerp/tests/__init__.py'
--- openerp/tests/__init__.py	2012-02-13 16:20:58 +0000
+++ openerp/tests/__init__.py	2012-02-28 09:27:24 +0000
@@ -1,14 +1,32 @@
 # -*- coding: utf-8 -*-
-import unittest2
+"""
+Tests for the OpenERP library.
+
+This module groups a few sub-modules containing unittest2 test cases.
+
+Some of those test sub-modules are explicitely listed in the `fast_suite`
+variable.  Most of the tests should be considered fast enough to be included in
+that `fast_suite` list and only tests that take a long time to run (e.g. more
+than a minute) should not be listed.
+
+Some other test sub-modules are sanity checks explicitely listed in the
+`checks` variable. These test sub-modules are invariants that must be
+full-filled at any time. They are expected to always pass: obviously they must
+pass right after the module is installed, but they must also pass after any
+other module is installed, after a migration, or even after the database was
+put in production for a few months.
+"""
 
 import test_orm
 import test_ir_sequence
 import test_xmlrpc
 
-# Explicit declaration list of test sub-modules.
-suite = [
+fast_suite = [
     test_xmlrpc, # Creates a database
     test_ir_sequence, # Assume an existing database
+    ]
+
+checks = [
     test_orm, # Assume an existing database
     ]
 

=== modified file 'openerp/tests/common.py'
--- openerp/tests/common.py	2012-01-15 21:42:14 +0000
+++ openerp/tests/common.py	2012-02-28 09:27:24 +0000
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 import os
 import time
+import unittest2
 import xmlrpclib
 
 import openerp
@@ -16,15 +17,6 @@
 ADMIN_USER_ID = 1
 ADMIN_PASSWORD = 'admin'
 
-common_proxy_60 = None
-db_proxy_60 = None
-object_proxy_60 = None
-
-common_proxy_61 = None
-db_proxy_61 = None
-model_proxy_61 = None
-model_uri_61 = None
-
 def start_openerp():
     """
     Start the OpenERP server similary to the openerp-server script.
@@ -34,33 +26,52 @@
     # Ugly way to ensure the server is listening.
     time.sleep(2)
 
-def create_xmlrpc_proxies():
-    """
-    setup some xmlrpclib proxies.
-    """
-    global common_proxy_60
-    global db_proxy_60
-    global object_proxy_60
-
-    # Use the old (pre 6.1) API.
-    url = 'http://%s:%d/xmlrpc/' % (HOST, PORT)
-    common_proxy_60 = xmlrpclib.ServerProxy(url + 'common')
-    db_proxy_60 = xmlrpclib.ServerProxy(url + 'db')
-    object_proxy_60 = xmlrpclib.ServerProxy(url + 'object')
-
-    global common_proxy_61
-    global db_proxy_61
-    global model_proxy_61
-    global model_uri_61
-
-    # Use the new (6.1) API.
-    model_uri_61 = 'http://%s:%d/openerp/xmlrpc/1/' % (HOST, PORT)
-    common_proxy_61 = xmlrpclib.ServerProxy(model_uri_61 + 'common')
-    db_proxy_61 = xmlrpclib.ServerProxy(model_uri_61 + 'db')
-    model_proxy_61 = xmlrpclib.ServerProxy(model_uri_61 + 'model/' + DB)
-
-def tearDownModule():
-    """ Shutdown the OpenERP server similarly to a single ctrl-c. """
+def stop_openerp():
+    """
+    Shutdown the OpenERP server similarly to a single ctrl-c.
+    """
     openerp.service.stop_services()
 
+class TransactionCase(unittest2.TestCase):
+    """
+    Subclass of TestCase with a single transaction, rolled-back at the end of
+    the tests.
+    """
+
+    def __init__(self, name):
+        super(TransactionCase, self).__init__(name)
+        self.registry = lambda model: \
+            openerp.modules.registry.RegistryManager.get(DB)[model]
+
+    def setUp(self):
+        self.cr = openerp.modules.registry.RegistryManager.get(DB).db.cursor()
+
+    def tearDown(self):
+        self.cr.rollback()
+        self.cr.close()
+
+class RpcCase(unittest2.TestCase):
+    """
+    Subclass of TestCase with a few XML-RPC proxies.
+    """
+
+    def __init__(self, name):
+        super(RpcCase, self).__init__(name)
+
+        class A(object):
+            pass
+        self.proxy = A()
+
+        # Use the old (pre 6.1) API.
+        self.proxy.url_60 = url_60 = 'http://%s:%d/xmlrpc/' % (HOST, PORT)
+        self.proxy.common_60 = xmlrpclib.ServerProxy(url_60 + 'common')
+        self.proxy.db_60 = xmlrpclib.ServerProxy(url_60 + 'db')
+        self.proxy.object_60 = xmlrpclib.ServerProxy(url_60 + 'object')
+
+        # Use the new (6.1) API.
+        self.proxy.url_61 = url_61 = 'http://%s:%d/openerp/xmlrpc/1/' % (HOST, PORT)
+        self.proxy.common_61 = xmlrpclib.ServerProxy(url_61 + 'common')
+        self.proxy.db_61 = xmlrpclib.ServerProxy(url_61 + 'db')
+        self.proxy.model_61 = xmlrpclib.ServerProxy(url_61 + 'model/' + DB)
+
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'openerp/tests/test_ir_sequence.py'
--- openerp/tests/test_ir_sequence.py	2012-01-15 21:42:14 +0000
+++ openerp/tests/test_ir_sequence.py	2012-02-28 09:27:24 +0000
@@ -16,11 +16,6 @@
 DB = common.DB
 ADMIN_USER_ID = common.ADMIN_USER_ID
 
-def setUpModule():
-    common.create_xmlrpc_proxies()
-
-tearDownModule = common.tearDownModule
-
 def registry(model):
     return openerp.modules.registry.RegistryManager.get(DB)[model]
 

=== modified file 'openerp/tests/test_orm.py'
--- openerp/tests/test_orm.py	2011-12-01 14:00:12 +0000
+++ openerp/tests/test_orm.py	2012-02-28 09:27:24 +0000
@@ -2,9 +2,10 @@
 import unittest2
 
 import openerp
+import common
 
-UID = 1
-DB = openerp.tools.config['db_name']
+UID = common.ADMIN_USER_ID
+DB = common.DB
 
 CREATE = lambda values: (0, False, values)
 UPDATE = lambda id, values: (1, id, values)
@@ -14,16 +15,12 @@
 DELETE_ALL = lambda: (5, False, False)
 REPLACE_WITH = lambda ids: (6, False, ids)
 
-class TestO2MSerialization(unittest2.TestCase):
+class TestO2MSerialization(common.TransactionCase):
 
     def setUp(self):
-        self.cr = openerp.modules.registry.RegistryManager.get(DB).db.cursor()
-        self.partner = openerp.modules.registry.RegistryManager.get(DB)['res.partner']
-        self.address = openerp.modules.registry.RegistryManager.get(DB)['res.partner.address']
-
-    def tearDown(self):
-        self.cr.rollback()
-        self.cr.close()
+        super(TestO2MSerialization, self).setUp()
+        self.partner = self.registry('res.partner')
+        self.address = self.registry('res.partner.address')
 
     def test_no_command(self):
         " empty list of commands yields an empty list of records "

=== modified file 'openerp/tests/test_xmlrpc.py'
--- openerp/tests/test_xmlrpc.py	2012-01-15 21:42:14 +0000
+++ openerp/tests/test_xmlrpc.py	2012-02-28 09:27:24 +0000
@@ -18,46 +18,44 @@
 ADMIN_USER_ID = common.ADMIN_USER_ID
 ADMIN_PASSWORD = common.ADMIN_PASSWORD
 
-def setUpModule():
-  common.start_openerp()
-  common.create_xmlrpc_proxies()
-
-tearDownModule = common.tearDownModule
-
-class test_xmlrpc(unittest2.TestCase):
+setUpModule = common.start_openerp
+
+tearDownModule = common.stop_openerp
+
+class test_xmlrpc(common.RpcCase):
 
     def test_00_xmlrpc_create_database_polling(self):
         """
         Simulate a OpenERP client requesting the creation of a database and
         polling the server until the creation is complete.
         """
-        progress_id = common.db_proxy_60.create(ADMIN_PASSWORD, DB, True,
+        progress_id = self.proxy.db_60.create(ADMIN_PASSWORD, DB, True,
             False, ADMIN_PASSWORD)
         while True:
             time.sleep(1)
-            progress, users = common.db_proxy_60.get_progress(ADMIN_PASSWORD,
+            progress, users = self.proxy.db_60.get_progress(ADMIN_PASSWORD,
                 progress_id)
             if progress == 1.0:
                 break
 
     def test_xmlrpc_login(self):
         """ Try to login on the common service. """
-        uid = common.common_proxy_60.login(DB, ADMIN_USER, ADMIN_PASSWORD)
+        uid = self.proxy.common_60.login(DB, ADMIN_USER, ADMIN_PASSWORD)
         assert uid == ADMIN_USER_ID
 
     def test_xmlrpc_ir_model_search(self):
         """ Try a search on the object service. """
-        ids = common.object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
+        ids = self.proxy.object_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
             'ir.model', 'search', [])
         assert ids
-        ids = common.object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
+        ids = self.proxy.object_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD,
             'ir.model', 'search', [], {})
         assert ids
 
     def test_xmlrpc_61_ir_model_search(self):
         """ Try a search on the object service. """
 
-        proxy = xmlrpclib.ServerProxy(common.model_uri_61 + 'model/' + DB + '/ir.model')
+        proxy = xmlrpclib.ServerProxy(self.proxy.url_61 + 'model/' + DB + '/ir.model')
         ids = proxy.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'search', [])
         assert ids
         ids = proxy.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'search', [], {})

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to