Add unittest2 dependency for tests and use it if Python version is not in
['2.7', '3.x'].

Also update some of the affected tests to use unittest2.


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/8dda6710
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/8dda6710
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/8dda6710

Branch: refs/heads/0.12.x
Commit: 8dda67103c0bb26548c0fea9519f6316b4062d51
Parents: 2c815ac
Author: Tomaz Muraus <[email protected]>
Authored: Sun Jun 23 09:08:56 2013 +0200
Committer: Tomaz Muraus <[email protected]>
Committed: Sun Jun 23 19:00:12 2013 +0200

----------------------------------------------------------------------
 libcloud/test/__init__.py                    |  7 ++++++-
 libcloud/test/loadbalancer/test_rackspace.py | 16 ++++++++--------
 libcloud/utils/py3.py                        |  6 ++++++
 setup.py                                     | 12 ++++++++++++
 tox.ini                                      |  2 ++
 5 files changed, 34 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/8dda6710/libcloud/test/__init__.py
----------------------------------------------------------------------
diff --git a/libcloud/test/__init__.py b/libcloud/test/__init__.py
index 5351992..86fcc47 100644
--- a/libcloud/test/__init__.py
+++ b/libcloud/test/__init__.py
@@ -15,13 +15,18 @@
 
 import sys
 import random
-import unittest
 
 from libcloud.utils.py3 import httplib
 from libcloud.utils.py3 import StringIO
 from libcloud.utils.py3 import urlparse
 from libcloud.utils.py3 import parse_qs
 from libcloud.utils.py3 import u
+from libcloud.utils.py3 import unittest2_required
+
+if unittest2_required:
+    import unittest2 as unittest
+else:
+    import unittest
 
 
 XML_HEADERS = {'content-type': 'application/xml'}

http://git-wip-us.apache.org/repos/asf/libcloud/blob/8dda6710/libcloud/test/loadbalancer/test_rackspace.py
----------------------------------------------------------------------
diff --git a/libcloud/test/loadbalancer/test_rackspace.py 
b/libcloud/test/loadbalancer/test_rackspace.py
index 71de39a..9e8ab68 100644
--- a/libcloud/test/loadbalancer/test_rackspace.py
+++ b/libcloud/test/loadbalancer/test_rackspace.py
@@ -15,7 +15,6 @@
 
 import sys
 import datetime
-import unittest
 
 try:
     import simplejson as json
@@ -32,6 +31,7 @@ from libcloud.loadbalancer.drivers.rackspace import 
RackspaceUKLBDriver
 from libcloud.loadbalancer.drivers.rackspace import RackspaceAccessRuleType
 from libcloud.common.types import LibcloudError
 
+from libcloud.test import unittest
 from libcloud.test import MockHttpTestCase
 from libcloud.test.file_fixtures import LoadBalancerFileFixtures, 
OpenStackFixtures
 
@@ -1326,7 +1326,7 @@ class RackspaceLBMockHttp(MockHttpTestCase):
     def _v1_0_slug_loadbalancers_3130(self, method, url, body, headers):
         """ update_balancer(b, protocol='HTTPS'), then get_balancer('3130') """
         if method == "PUT":
-            self.assertEqual(json.loads(body), {'protocol': 'HTTPS'})
+            self.assertDictEqual(json.loads(body), {'protocol': 'HTTPS'})
             return (httplib.ACCEPTED, "", {}, 
httplib.responses[httplib.ACCEPTED])
         elif method == "GET":
             response_body = 
json.loads(self.fixtures.load("v1_slug_loadbalancers_3xxx.json"))
@@ -1338,7 +1338,7 @@ class RackspaceLBMockHttp(MockHttpTestCase):
     def _v1_0_slug_loadbalancers_3131(self, method, url, body, headers):
         """ update_balancer(b, port=443), then get_balancer('3131') """
         if method == "PUT":
-            self.assertEqual(json.loads(body), {'port': 1337})
+            self.assertDictEqual(json.loads(body), {'port': 1337})
             return (httplib.ACCEPTED, "", {}, 
httplib.responses[httplib.ACCEPTED])
         elif method == "GET":
             response_body = 
json.loads(self.fixtures.load("v1_slug_loadbalancers_3xxx.json"))
@@ -1350,7 +1350,7 @@ class RackspaceLBMockHttp(MockHttpTestCase):
     def _v1_0_slug_loadbalancers_3132(self, method, url, body, headers):
         """ update_balancer(b, name='new_lb_name'), then get_balancer('3132') 
"""
         if method == "PUT":
-            self.assertEqual(json.loads(body), {'name': 'new_lb_name'})
+            self.assertDictEqual(json.loads(body), {'name': 'new_lb_name'})
             return (httplib.ACCEPTED, "", {}, 
httplib.responses[httplib.ACCEPTED])
         elif method == "GET":
             response_body = 
json.loads(self.fixtures.load("v1_slug_loadbalancers_3xxx.json"))
@@ -1362,7 +1362,7 @@ class RackspaceLBMockHttp(MockHttpTestCase):
     def _v1_0_slug_loadbalancers_3133(self, method, url, body, headers):
         """ update_balancer(b, algorithm='ROUND_ROBIN'), then 
get_balancer('3133') """
         if method == "PUT":
-            self.assertEqual(json.loads(body), {'algorithm': 'ROUND_ROBIN'})
+            self.assertDictEqual(json.loads(body), {'algorithm': 
'ROUND_ROBIN'})
             return (httplib.ACCEPTED, "", {}, 
httplib.responses[httplib.ACCEPTED])
         elif method == "GET":
             response_body = 
json.loads(self.fixtures.load("v1_slug_loadbalancers_3xxx.json"))
@@ -1380,7 +1380,7 @@ class RackspaceLBMockHttp(MockHttpTestCase):
     def _v1_0_slug_loadbalancers_3135(self, method, url, body, headers):
         """ update_balancer(b, protocol='IMAPv3'), then get_balancer('3135') 
"""
         if method == "PUT":
-            self.assertEqual(json.loads(body), {'protocol': 'IMAPv2'})
+            self.assertDictEqual(json.loads(body), {'protocol': 'IMAPv2'})
             return (httplib.ACCEPTED, "", {}, 
httplib.responses[httplib.ACCEPTED])
         elif method == "GET":
             response_body = 
json.loads(self.fixtures.load("v1_slug_loadbalancers_3xxx.json"))
@@ -1392,7 +1392,7 @@ class RackspaceLBMockHttp(MockHttpTestCase):
     def _v1_0_slug_loadbalancers_3136(self, method, url, body, headers):
         """ update_balancer(b, protocol='IMAPv3'), then get_balancer('3136') 
"""
         if method == "PUT":
-            self.assertEqual(json.loads(body), {'protocol': 'IMAPv3'})
+            self.assertDictEqual(json.loads(body), {'protocol': 'IMAPv3'})
             return (httplib.ACCEPTED, "", {}, 
httplib.responses[httplib.ACCEPTED])
         elif method == "GET":
             response_body = 
json.loads(self.fixtures.load("v1_slug_loadbalancers_3xxx.json"))
@@ -1404,7 +1404,7 @@ class RackspaceLBMockHttp(MockHttpTestCase):
     def _v1_0_slug_loadbalancers_3137(self, method, url, body, headers):
         """ update_balancer(b, protocol='IMAPv3'), then get_balancer('3137') 
"""
         if method == "PUT":
-            self.assertEqual(json.loads(body), {'protocol': 'IMAPv4'})
+            self.assertDictEqual(json.loads(body), {'protocol': 'IMAPv4'})
             return (httplib.ACCEPTED, "", {}, 
httplib.responses[httplib.ACCEPTED])
         elif method == "GET":
             response_body = 
json.loads(self.fixtures.load("v1_slug_loadbalancers_3xxx.json"))

http://git-wip-us.apache.org/repos/asf/libcloud/blob/8dda6710/libcloud/utils/py3.py
----------------------------------------------------------------------
diff --git a/libcloud/utils/py3.py b/libcloud/utils/py3.py
index 18055f0..0d6987d 100644
--- a/libcloud/utils/py3.py
+++ b/libcloud/utils/py3.py
@@ -26,6 +26,7 @@ from xml.etree import ElementTree as ET
 
 PY2 = False
 PY25 = False
+PY27 = False
 PY3 = False
 PY32 = False
 
@@ -35,6 +36,9 @@ if sys.version_info >= (2, 0) and sys.version_info < (3, 0):
 if sys.version_info >= (2, 5) and sys.version_info <= (2, 6):
     PY25 = True
 
+if sys.version_info >= (2, 7) and sys.version_info <= (2, 8):
+    PY27 = True
+
 if sys.version_info >= (3, 0):
     PY3 = True
 
@@ -141,3 +145,5 @@ if PY25:
         if not rel_list:
             return posixpath.curdir
         return posixpath.join(*rel_list)
+
+unittest2_required = not (PY27 or PY3)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/8dda6710/setup.py
----------------------------------------------------------------------
diff --git a/setup.py b/setup.py
index 61629f2..1adee5d 100644
--- a/setup.py
+++ b/setup.py
@@ -31,6 +31,8 @@ except ImportError:
 
 import libcloud.utils.misc
 from libcloud.utils.dist import get_packages, get_data_files
+from libcloud.utils.py3 import unittest2_required
+
 libcloud.utils.misc.SHOW_DEPRECATION_WARNING = False
 
 
@@ -88,6 +90,16 @@ class TestCommand(Command):
                   'pip install mock')
             sys.exit(1)
 
+        if unittest2_required:
+            try:
+                import unittest2
+                unittest2
+            except ImportError:
+                print('Missing "unittest2" library. unittest2 is library is 
needed '
+                      'to run the tests. You can install it using pip: '
+                      'pip install unittest2')
+                sys.exit(1)
+
         status = self._run_tests()
         sys.exit(status)
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/8dda6710/tox.ini
----------------------------------------------------------------------
diff --git a/tox.ini b/tox.ini
index b6d070b..7212a7e 100644
--- a/tox.ini
+++ b/tox.ini
@@ -5,12 +5,14 @@ setenv =
 
 [testenv]
 deps = mock
+       unittest2
        lockfile
        paramiko
 commands = python setup.py test
 
 [testenv:py25]
 deps = mock
+       unittest2
        lockfile
        ssl
        simplejson

Reply via email to