[Erp5-report] r40319 romain - /erp5/trunk/buildout/tests/assertSoftware.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Nov 17 10:35:38 CET 2010


Author: romain
Date: Wed Nov 17 10:35:38 2010
New Revision: 40319

URL: http://svn.erp5.org?rev=40319&view=rev
Log:
Improve display of error message.

Check subversion and libserf.

Modified:
    erp5/trunk/buildout/tests/assertSoftware.py

Modified: erp5/trunk/buildout/tests/assertSoftware.py
URL: http://svn.erp5.org/erp5/trunk/buildout/tests/assertSoftware.py?rev=40319&r1=40318&r2=40319&view=diff
==============================================================================
--- erp5/trunk/buildout/tests/assertSoftware.py [utf8] (original)
+++ erp5/trunk/buildout/tests/assertSoftware.py [utf8] Wed Nov 17 10:35:38 2010
@@ -60,7 +60,30 @@ def readElfAsDict(f):
     runpath_list=sorted(runpath_list)
   )
 
-class AssertSoftwareRunable(unittest.TestCase):
+class AssertSoftwareMixin(unittest.TestCase):
+  def assertEqual(self, first, second, msg=None):
+    try:
+      return unittest.TestCase.assertEqual(self, first, second, msg=msg)
+    except unittest.TestCase.failureException:
+      if (msg is None) and \
+          isinstance(first, list) and \
+          isinstance(second, list):
+        msg = ''
+        for elt in first:
+          if elt not in second:
+            msg += '- %s\n' % elt
+        for elt in second:
+          if elt not in first:
+            msg += '+ %s\n' % elt
+        if msg == '':
+          raise
+        else:
+          msg = 'Lists are different:\n%s' % msg
+          raise unittest.TestCase.failureException, msg
+      else:
+        raise
+
+class AssertSoftwareRunable(AssertSoftwareMixin):
   def test_HaProxy(self):
     stdout, stderr = subprocess.Popen(["parts/haproxy/sbin/haproxy", "-v"],
         stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
@@ -116,7 +139,7 @@ class AssertSoftwareRunable(unittest.Tes
     self.assertEqual(stderr, '')
     self.assertTrue(stdout.startswith('w3m version w3m/0.5.2'))
 
-class AssertMysql50Tritonn(unittest.TestCase):
+class AssertMysql50Tritonn(AssertSoftwareMixin):
   def test_ld_mysqld(self):
     elf_dict = readElfAsDict('parts/mysql-tritonn-5.0/libexec/mysqld')
     self.assertEqual(sorted(['libc', 'libcrypt', 'libcrypto', 'libdl',
@@ -201,7 +224,7 @@ class AssertMysql50Tritonn(unittest.Test
       'parts', 'mysql-tritonn-5.0', 'lib', 'mysql'))
     self.assertEqual(sorted(expected_rpath_list), elf_dict['runpath_list'])
 
-class AssertMysql51(unittest.TestCase):
+class AssertMysql51(AssertSoftwareMixin):
   def test_ld_mysqld(self):
     elf_dict = readElfAsDict('parts/mysql-5.1/libexec/mysqld')
     self.assertEqual(sorted(['libc', 'libcrypt', 'libdl', 'libgcc_s', 'libm', 'libnsl',
@@ -273,11 +296,11 @@ class AssertMysql51(unittest.TestCase):
       'parts', 'mysql-5.1', 'lib', 'mysql'))
     self.assertEqual(sorted(expected_rpath_list), elf_dict['runpath_list'])
 
-class AssertMemcached(unittest.TestCase):
+class AssertMemcached(AssertSoftwareMixin):
   """Tests for built memcached"""
 
   def test_ld_memcached(self):
-    """Checks proper liunking to libevent from memcached"""
+    """Checks proper linking to libevent from memcached"""
     elf_dict = readElfAsDict('parts/memcached/bin/memcached')
     self.assertEqual(sorted(['libpthread', 'libevent-1.4', 'libc']),
         elf_dict['library_list'])
@@ -286,7 +309,42 @@ class AssertMemcached(unittest.TestCase)
         software in ['libevent']]
     self.assertEqual(sorted(expected_rpath_list), elf_dict['runpath_list'])
 
-class AssertPythonMysql(unittest.TestCase):
+class AssertSubversion(AssertSoftwareMixin):
+  """Tests for built subversion"""
+  def test_ld_svn(self):
+    elf_dict = readElfAsDict('parts/subversion/bin/svn')
+    self.assertEqual(sorted(['libsvn_client-1', 'libsvn_wc-1', 'libsvn_ra-1',
+      'libsvn_diff-1', 'libsvn_ra_local-1', 'libsvn_repos-1', 'libsvn_fs-1',
+      'libsvn_fs_fs-1', 'libsvn_fs_util-1', 'libsvn_ra_svn-1',
+      'libsvn_ra_neon-1', 'libsvn_delta-1', 'libsvn_subr-1', 'libsqlite3',
+      'libaprutil-1', 'libapr-1', 'libuuid', 'librt', 'libneon', 'libexpat',
+      'libz', 'libssl', 'libcrypto', 'libgssapi_krb5', 'libkrb5',
+      'libk5crypto', 'libcom_err', 'libresolv', 'libc', 'libcrypt', 'libdl',
+      'libpthread', 'libm', 'libserf-0', 'libsvn_ra_serf-1',
+      ]),
+        elf_dict['library_list'])
+    soft_dir = os.path.join(os.path.abspath(os.curdir), 'parts')
+    expected_rpath_list = [os.path.join(soft_dir, software, 'lib') for
+        software in ['apache', 'libexpat', 'libxml2', 'neon', 'openssl',
+                     'sqlite3', 'subversion', 'zlib', 'libuuid', 'serf']]
+    self.assertEqual(sorted(expected_rpath_list), elf_dict['runpath_list'])
+
+class AssertSerf(AssertSoftwareMixin):
+  """Tests for built serf"""
+  def test_ld_libserf(self):
+    elf_dict = readElfAsDict('parts/serf/lib/libserf-0.so.0.0.0')
+    self.assertEqual(sorted([
+      'libapr-1', 'libaprutil-1', 'libc', 'libcrypt', 'libcrypto',
+      'libdl', 'libexpat', 'libm', 'libpthread', 'librt',
+      'libssl', 'libuuid', 'libz',
+      ]),
+        elf_dict['library_list'])
+    soft_dir = os.path.join(os.path.abspath(os.curdir), 'parts')
+    expected_rpath_list = [os.path.join(soft_dir, software, 'lib') for
+        software in ['apache', 'openssl', 'libexpat']]
+    self.assertEqual(sorted(expected_rpath_list), elf_dict['runpath_list'])
+
+class AssertPythonMysql(AssertSoftwareMixin):
   def test_ld_mysqlso(self):
     for d in os.listdir('develop-eggs'):
       if d.startswith('MySQL_python'):
@@ -301,7 +359,7 @@ class AssertPythonMysql(unittest.TestCas
         expected_rpath_list.append(os.path.join(os.path.abspath(os.curdir), 'parts', 'mysql-tritonn-5.0', 'lib', 'mysql'))
         self.assertEqual(sorted(expected_rpath_list), elf_dict['runpath_list'])
 
-class AssertApache(unittest.TestCase):
+class AssertApache(AssertSoftwareMixin):
   """Tests for built apache"""
 
   def test_ld_libaprutil1(self):
@@ -982,7 +1040,7 @@ class AssertApache(unittest.TestCase):
         software in ['zlib', 'openssl', 'libuuid', 'libexpat', 'pcre']]
     self.assertEqual(sorted(expected_rpath_list), elf_dict['runpath_list'])
 
-class AssertItools(unittest.TestCase):
+class AssertItools(AssertSoftwareMixin):
   def test_ld_parserso(self):
     elf_dict = readElfAsDict('parts/itools/lib/itools/xml/parser.so')
     self.assertEqual(sorted(['libc', 'libglib-2.0', 'libpthread']),




More information about the Erp5-report mailing list