From 7d8b60f8abee38c93d358170498dc47b7fedff5c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Fri, 26 Feb 2010 10:12:05 +0000
Subject: [PATCH]  - move assertions to python unittest

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@33142 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 buildout/Makefile                |  33 +-------
 buildout/tests/assertSoftware.py | 135 +++++++++++++++++++++++++++++++
 2 files changed, 137 insertions(+), 31 deletions(-)
 create mode 100644 buildout/tests/assertSoftware.py

diff --git a/buildout/Makefile b/buildout/Makefile
index fce534b315..2c84392fba 100644
--- a/buildout/Makefile
+++ b/buildout/Makefile
@@ -7,36 +7,8 @@ bin/buildout:
 	python bootstrap/bootstrap.py
 
 # run make assert to check that all is working
-assert: assert-software
-
-assert-software: assert-python2.4 assert-parts-libs
-
-assert-python2.4: bin/python2.4
-	bin/python2.4 -V 2>&1 | grep 'Python 2.4.6'
-	bin/python2.4 -c 'import ERP5Diff'
-	bin/python2.4 -c 'import MySQLdb'
-	bin/python2.4 -c 'import SOAPpy'
-	bin/python2.4 -c 'import _ssl'
-	bin/python2.4 -c 'import _xmlplus'
-	bin/python2.4 -c 'import bz2'
-	bin/python2.4 -c 'import elementtree'
-	bin/python2.4 -c 'import fpconst'
-	bin/python2.4 -c 'import gdbm'
-	bin/python2.4 -c 'import itools'
-	bin/python2.4 -c 'import ldap'
-	bin/python2.4 -c 'import lxml'
-	bin/python2.4 -c 'import memcache'
-	bin/python2.4 -c 'import numpy'
-	bin/python2.4 -c 'import pytz'
-	bin/python2.4 -c 'import simplejson'
-	bin/python2.4 -c 'import threadframe'
-	bin/python2.4 -c 'import xml.parsers.expat'
-	bin/python2.4 -c 'import zlib'
-
-assert-parts-libs:
-	ldd parts/mysql-tritonn-5.0/libexec/mysqld | grep 'parts/senna/lib/libsenna.so.0'
-	ldd develop-eggs/MySQL_python-1.2.3c1-py2.4-linux-x86_64.egg/_mysql.so | grep 'parts/mysql-tritonn-5.0/lib/mysql/libmysqlclient_r.so'
-	ldd parts/memcached/bin/memcached | grep 'parts/libevent/lib/libevent'
+assert: bin/python2.4
+	bin/python2.4 tests/assertSoftware.py
 
 debian-appliance:
 	svn co https://svn.erp5.org/repos/public/spec/debian-erp5-appliance/ debian-erp5-appliance
@@ -46,4 +18,3 @@ debian-appliance:
 	rm -rf `find . -name *.pyc`
 	cd ../../../../
 	dpkg-deb -b debian-erp5-appliance/ .
-
diff --git a/buildout/tests/assertSoftware.py b/buildout/tests/assertSoftware.py
new file mode 100644
index 0000000000..c6276f0aa6
--- /dev/null
+++ b/buildout/tests/assertSoftware.py
@@ -0,0 +1,135 @@
+import unittest
+import sys, os
+
+def createCleanList(s):
+  return sorted([q.strip() for q in s.split() if len(q.strip()) > 0])
+
+class AssertPythonSoftware(unittest.TestCase):
+  def test_python_version(self):
+    self.assertEqual((2,4), sys.version_info[:2])
+
+  def test_required_libraries(self):
+    required_library_list = createCleanList("""
+      ERP5Diff
+      MySQLdb
+      SOAPpy
+      _ssl
+      _xmlplus
+      bz2
+      elementtree
+      fpconst
+      gdbm
+      itools
+      ldap
+      lxml
+      memcache
+      numpy
+      pytz
+      simplejson
+      threadframe
+      xml.parsers.expat
+      zlib
+      """)
+    failed_library_list = []
+    for lib in required_library_list:
+      try:
+        __import__(lib)
+      except ImportError:
+        failed_library_list.append(lib)
+    self.assertEqual([], failed_library_list,
+        'Python libraries not found:\n'+'\n\t'.join(failed_library_list))
+
+class AssertLddLibs(unittest.TestCase):
+  def test_tritonn_senna(self):
+    result = os.system("ldd parts/mysql-tritonn-5.0/libexec/mysqld | grep -q "
+        "'parts/senna/lib/libsenna.so.0'")
+    self.assertEqual(result, 0)
+
+  def test_MySQLdb(self):
+    result = os.system("ldd develop-eggs/MySQL_python-1.2.3c1-py2.4-linux-x86"
+       "_64.egg/_mysql.so | grep -q 'parts/mysql-tritonn-5.0/lib/mysql/libmys"
+       "qlclient_r.so'")
+    self.assertEqual(result, 0)
+
+  def test_memcached_libevent(self):
+    result = os.system("ldd parts/memcached/bin/memcached | grep -q 'parts/li"
+        "bevent/lib/libevent'")
+
+class AssertApache(unittest.TestCase):
+  def test_modules(self):
+    required_module_list = createCleanList("""
+      mod_authn_default.so
+      mod_log_config.so
+      mod_proxy_http.so
+      mod_authn_alias.so
+      mod_authz_dbm.so
+      mod_case_filter_in.so
+      mod_imagemap.so
+      mod_setenvif.so
+      mod_include.so
+      mod_charset_lite.so
+      mod_info.so
+      mod_cache.so
+      mod_actions.so
+      mod_proxy_connect.so
+      mod_auth_digest.so
+      mod_unique_id.so
+      mod_mime_magic.so
+      mod_disk_cache.so
+      mod_mime.so
+      mod_usertrack.so
+      mod_asis.so
+      mod_optional_hook_import.so
+      mod_negotiation.so
+      mod_proxy.so
+      mod_authz_default.so
+      mod_ext_filter.so
+      mod_auth_basic.so
+      mod_authz_owner.so
+      mod_authn_anon.so
+      mod_rewrite.so
+      mod_proxy_balancer.so
+      mod_substitute.so
+      mod_filter.so
+      mod_expires.so
+      mod_autoindex.so
+      mod_status.so
+      mod_cgid.so
+      mod_version.so
+      mod_echo.so
+      mod_optional_fn_export.so
+      mod_optional_fn_import.so
+      mod_ident.so
+      mod_cgi.so
+      mod_bucketeer.so
+      mod_optional_hook_export.so
+      mod_vhost_alias.so
+      mod_ssl.so
+      mod_authz_user.so
+      mod_env.so
+      mod_logio.so
+      mod_proxy_ftp.so
+      mod_example.so
+      mod_cern_meta.so
+      mod_authz_groupfile.so
+      mod_dir.so
+      mod_log_forensic.so
+      mod_alias.so
+      mod_deflate.so
+      mod_authn_dbm.so
+      mod_case_filter.so
+      mod_authz_host.so
+      mod_headers.so
+      mod_dumpio.so
+      mod_speling.so
+      mod_authn_file.so
+    """)
+    failed_module_list = []
+    for module in required_module_list:
+      if not os.path.exists('parts/apache/modules/%s' % module):
+        failed_module_list.append(module)
+    self.assertEqual([], failed_module_list,
+        'Apache modules not found:\n'+'\n\t'.join(failed_module_list))
+
+if __name__ == '__main__':
+  unittest.main()
-- 
2.30.9