Commit 7a0a8183 authored by Vincent Pelletier's avatar Vincent Pelletier

Add support for simultaneously providing --save and --load to runUnitTest.py.

Add --update_business_templates support. This, used in conjunction of --load will force all business templates to be updated with filesystem-available versions. Also invoking with --save will cause updated site to be saved for future use.
Do not use objectIds to get the list of installed business template, but getInstalledBusinessTemplateList.
This allows to not specify the business template id at installation.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@19331 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 99f3e6bb
...@@ -301,8 +301,16 @@ class ERP5TypeTestCase(PortalTestCase): ...@@ -301,8 +301,16 @@ class ERP5TypeTestCase(PortalTestCase):
INSTANCE_HOME = os.environ['INSTANCE_HOME'] INSTANCE_HOME = os.environ['INSTANCE_HOME']
bt5_path = os.environ.get('erp5_tests_bt5_path', bt5_path = os.environ.get('erp5_tests_bt5_path',
os.path.join(INSTANCE_HOME, 'bt5')) os.path.join(INSTANCE_HOME, 'bt5'))
bootstrap_path = os.environ.get('erp5_tests_bootstrap_path',
os.path.join(INSTANCE_HOME, 'Products/ERP5/bootstrap'))
template_list = self.getBusinessTemplateList() template_list = self.getBusinessTemplateList()
erp5_catalog_storage = os.environ.get('erp5_catalog_storage',
'erp5_mysql_innodb_catalog')
update_business_templates = os.environ.get('update_business_templates') is not None
erp5_load_data_fs = os.environ.get('erp5_load_data_fs') is not None
if update_business_templates and erp5_load_data_fs:
template_list = ('erp5_core', 'erp5_xhtml_style', erp5_catalog_storage) + tuple(template_list)
new_template_list = [] new_template_list = []
for template in template_list: for template in template_list:
id = template.split('/')[-1] id = template.split('/')[-1]
...@@ -311,8 +319,11 @@ class ERP5TypeTestCase(PortalTestCase): ...@@ -311,8 +319,11 @@ class ERP5TypeTestCase(PortalTestCase):
except IOError : except IOError :
# First, try the bt5 directory itself. # First, try the bt5 directory itself.
path = os.path.join(bt5_path, template) path = os.path.join(bt5_path, template)
alternate_path = os.path.join(bootstrap_path, template)
if os.path.exists(path): if os.path.exists(path):
template = path template = path
elif os.path.exists(alternate_path):
template = alternate_path
else: else:
path = '%s.bt5' % path path = '%s.bt5' % path
if os.path.exists(path): if os.path.exists(path):
...@@ -340,8 +351,6 @@ class ERP5TypeTestCase(PortalTestCase): ...@@ -340,8 +351,6 @@ class ERP5TypeTestCase(PortalTestCase):
light_install = self.enableLightInstall() light_install = self.enableLightInstall()
create_activities = self.enableActivityTool() create_activities = self.enableActivityTool()
hot_reindexing = self.enableHotReindexing() hot_reindexing = self.enableHotReindexing()
erp5_catalog_storage = os.environ.get('erp5_catalog_storage',
'erp5_mysql_innodb_catalog')
setupERP5Site(business_template_list=new_template_list, setupERP5Site(business_template_list=new_template_list,
light_install=light_install, light_install=light_install,
portal_name=self.getPortalName(), portal_name=self.getPortalName(),
...@@ -635,16 +644,23 @@ def setupERP5Site( business_template_list=(), ...@@ -635,16 +644,23 @@ def setupERP5Site( business_template_list=(),
for id_ in getLocalConstraintList(): for id_ in getLocalConstraintList():
removeLocalConstraint(id_) removeLocalConstraint(id_)
update_business_templates = os.environ.get('update_business_templates') is not None
# Disable reindexing before adding templates # Disable reindexing before adding templates
# VERY IMPORTANT: Add some business templates # VERY IMPORTANT: Add some business templates
for url, id_ in business_template_list: for url, title in business_template_list:
start = time.time() start = time.time()
if id_ in portal.portal_templates.objectIds(): if title in [x.getTitle() for x in portal.portal_templates.getInstalledBusinessTemplateList()]:
if update_business_templates:
if not quiet:
ZopeTestCase._print('Updating %s business template ... ' % title)
else:
continue continue
else:
if not quiet: if not quiet:
ZopeTestCase._print('Adding %s business template ... ' % id_) ZopeTestCase._print('Adding %s business template ... ' % title)
portal.portal_templates.download(url, id=id_) bt = portal.portal_templates.download(url)
portal.portal_templates[id_].install(light_install=light_install) bt.install(light_install=light_install)
# Release locks # Release locks
get_transaction().commit() get_transaction().commit()
if not quiet: if not quiet:
......
...@@ -8,11 +8,7 @@ instance_home = os.environ.get('INSTANCE_HOME') ...@@ -8,11 +8,7 @@ instance_home = os.environ.get('INSTANCE_HOME')
data_fs_path = os.environ.get('erp5_tests_data_fs_path') data_fs_path = os.environ.get('erp5_tests_data_fs_path')
new_data_fs_path = os.path.join(instance_home, 'Data.fs') new_data_fs_path = os.path.join(instance_home, 'Data.fs')
if os.environ.get('erp5_save_data_fs'): if os.environ.get('erp5_load_data_fs'):
if os.path.exists(new_data_fs_path):
os.remove(new_data_fs_path)
Storage = FileStorage(new_data_fs_path)
elif os.environ.get('erp5_load_data_fs'):
if os.environ.get('erp5_force_data_fs'): if os.environ.get('erp5_force_data_fs'):
Storage = FileStorage(new_data_fs_path) Storage = FileStorage(new_data_fs_path)
else: else:
...@@ -24,6 +20,10 @@ elif os.environ.get('erp5_load_data_fs'): ...@@ -24,6 +20,10 @@ elif os.environ.get('erp5_load_data_fs'):
if os.path.exists('%s/%s.bak' % (instance_home, dir)): if os.path.exists('%s/%s.bak' % (instance_home, dir)):
os.system('rm -rf %s/%s' % (instance_home, dir)) os.system('rm -rf %s/%s' % (instance_home, dir))
os.system('cp -ar %s/%s.bak %s/%s' % (instance_home, dir, instance_home, dir)) os.system('cp -ar %s/%s.bak %s/%s' % (instance_home, dir, instance_home, dir))
elif os.environ.get('erp5_save_data_fs'):
if os.path.exists(new_data_fs_path):
os.remove(new_data_fs_path)
Storage = FileStorage(new_data_fs_path)
elif data_fs_path: elif data_fs_path:
Storage = DemoStorage(base=FileStorage(data_fs_path), quota=(1<<20)) Storage = DemoStorage(base=FileStorage(data_fs_path), quota=(1<<20))
else: else:
......
...@@ -60,6 +60,10 @@ Options: ...@@ -60,6 +60,10 @@ Options:
expressions. expressions.
-D -D
Invoke debugger on errors / failures. Invoke debugger on errors / failures.
--update_business_templates
Update all business templates prior to runing
tests. This only has a meaning when doing
upgratability checks, in conjunction with --load.
""" """
def getUnitTestFile(): def getUnitTestFile():
...@@ -129,6 +133,8 @@ elif os.path.isdir('/usr/lib/erp5/lib/python'): ...@@ -129,6 +133,8 @@ elif os.path.isdir('/usr/lib/erp5/lib/python'):
else: else:
software_home = '/usr/lib/zope/lib/python' software_home = '/usr/lib/zope/lib/python'
zope_home = '/usr/lib/zope' zope_home = '/usr/lib/zope'
zope_home = '/home/vincent/bin/zope2.8'
software_home = '%s/lib/python' % (zope_home, )
# handle 'system global' instance and windows # handle 'system global' instance and windows
if WIN: if WIN:
real_instance_home = os.path.join(erp5_home, 'ERP5Instance') real_instance_home = os.path.join(erp5_home, 'ERP5Instance')
...@@ -337,7 +343,8 @@ def main(): ...@@ -337,7 +343,8 @@ def main():
"save", "save",
"load", "load",
"email_from_address=", "email_from_address=",
"run_only="] ) "run_only=",
"update_business_templates"] )
except getopt.GetoptError, msg: except getopt.GetoptError, msg:
usage(sys.stderr, msg) usage(sys.stderr, msg)
sys.exit(2) sys.exit(2)
...@@ -348,6 +355,8 @@ def main(): ...@@ -348,6 +355,8 @@ def main():
os.environ["erp5_tests_recreate_catalog"] = "0" os.environ["erp5_tests_recreate_catalog"] = "0"
verbosity = 1 verbosity = 1
debug = 0 debug = 0
load = False
save = False
for opt, arg in opts: for opt, arg in opts:
if opt in ("-v", "--verbose"): if opt in ("-v", "--verbose"):
...@@ -385,12 +394,19 @@ def main(): ...@@ -385,12 +394,19 @@ def main():
os.environ["email_from_address"] = arg os.environ["email_from_address"] = arg
elif opt == "--save": elif opt == "--save":
os.environ["erp5_save_data_fs"] = "1" os.environ["erp5_save_data_fs"] = "1"
save = True
elif opt == "--load": elif opt == "--load":
os.environ["erp5_load_data_fs"] = "1" os.environ["erp5_load_data_fs"] = "1"
load = True
elif opt == "--erp5_catalog_storage": elif opt == "--erp5_catalog_storage":
os.environ["erp5_catalog_storage"] = arg os.environ["erp5_catalog_storage"] = arg
elif opt == "--run_only": elif opt == "--run_only":
os.environ["run_only"] = arg os.environ["run_only"] = arg
elif opt == "--update_business_templates":
os.environ["update_business_templates"] = "1"
if load and save:
os.environ["erp5_force_data_fs"] = "1"
test_list = args test_list = args
if not test_list: if not test_list:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment