--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/scripts/tests/export_standalone/export_standalone.py Thu Mar 11 17:04:37 2010 +0200
@@ -0,0 +1,132 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+import sys, os, shutil, imp
+from optparse import OptionParser
+
+ROOT_PATH = os.path.abspath(os.path.dirname(__file__))
+SOURCE_ROOT = os.path.normpath(os.path.join(ROOT_PATH, '../../..'))
+PLUGIN_SOURCE_ROOT = os.path.normpath(os.path.join(SOURCE_ROOT, 'plugins'))
+assert os.path.split(SOURCE_ROOT)[1] == 'source'
+assert os.path.split(PLUGIN_SOURCE_ROOT)[1] == 'plugins'
+
+sys.path.append(os.path.normpath(os.path.join(SOURCE_ROOT, 'testautomation')))
+import testautomation
+from testautomation.copy_dir import copy_dir
+
+def build_egg(dir, target_dir):
+ orig_workdir = os.getcwd()
+ os.chdir(dir)
+ try:
+ os.system('python setup.py bdist_egg --dist-dir "%s"' % target_dir)
+ finally:
+ os.chdir(orig_workdir)
+
+def read_export_function_from_file(file_path):
+ if not os.path.exists(file_path):
+ return None
+
+ m = imp.load_source(
+ file_path.replace('\\', '__')
+ .replace('/', '__')
+ .replace(':', '_')
+ .replace('.', '_')
+ .replace(' ', '_'),
+ file_path)
+
+ try:
+ return m.export_standalone
+ except AttributeError:
+ return None
+
+def main(argv):
+ # Parse args
+ parser = OptionParser()
+ parser.add_option("--target-dir",
+ help="The directory where the test are to be exported.",
+ metavar="COMMAND")
+ parser.add_option("--plugin-subpackage",\
+ help="The plug-in package for exporting plug-in integration tests.",\
+ default=None,\
+ metavar="SUBPACKAGE")
+ (options, args) = parser.parse_args()
+ if options.target_dir is None:
+ parser.error("Target directory must be given")
+ if options.plugin_subpackage is None:
+ parser.error("Plug-in sub-package name must be given")
+
+ TARGET_PATH = options.target_dir
+ PLUGIN_PACKAGES = ['common']
+ if options.plugin_subpackage.lower() not in ('', 'common'):
+ PLUGIN_PACKAGES.append(options.plugin_subpackage)
+
+ print "(Re)creating dir '%s'..." % TARGET_PATH
+ if os.path.exists(TARGET_PATH):
+ shutil.rmtree(TARGET_PATH)
+ os.makedirs(TARGET_PATH)
+
+
+ print "Copying script test files..."
+ copy_dir(source_dir = os.path.join(ROOT_PATH, '..'),
+ target_dir = os.path.join(TARGET_PATH, 'tests'),
+ dir_ignore_functions = [lambda d: d in ('.svn', 'temp', 'export_standalone')],
+ file_ignore_functions = [lambda f: f == 'cone.log' or f.endswith('.pyc')])
+
+ print "Copying plug-in integration test files..."
+ for name in PLUGIN_PACKAGES:
+ print " Processing plug-in package '%s'..." % name
+
+ package_path = os.path.join(PLUGIN_SOURCE_ROOT, name)
+ if not os.path.isdir(package_path):
+ print " '%s' does not exist or is not a directory!" % package_path
+ return 1
+
+ tests_path = os.path.join(package_path, 'integration-test')
+ if not os.path.isdir(tests_path):
+ print " No 'integration-test' directory, skipping"
+ continue
+
+ print " Copying test files..."
+ target_path = os.path.join(TARGET_PATH, 'plugin-tests', name + '_tests')
+ copy_dir(source_dir = tests_path,
+ target_dir = target_path,
+ dir_ignore_functions = [lambda d: d in ('.svn', 'temp')],
+ file_ignore_functions = [lambda f: f in ('cone.log', 'export_standalone.py') or f.endswith('.pyc')])
+
+ print " Overwriting __init__.py..."
+ f = open(os.path.join(target_path, '__init__.py'), 'wb')
+ f.close()
+
+ print " Exporting extra data..."
+ func = read_export_function_from_file(os.path.join(tests_path, 'export_standalone.py'))
+ if func:
+ print " Executing export function..."
+ func(target_path)
+
+ print "Copying overlay files..."
+ copy_dir(source_dir = os.path.join(ROOT_PATH, "overlay"),
+ target_dir = TARGET_PATH,
+ dir_ignore_functions = [lambda d: d == '.svn'])
+
+
+ print "Building eggs..."
+ eggs_dir = os.path.join(TARGET_PATH, 'eggs')
+ build_egg(os.path.join(SOURCE_ROOT), eggs_dir)
+ build_egg(os.path.join(SOURCE_ROOT, 'testautomation'), eggs_dir)
+ return 0
+
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))