diff -r 000000000000 -r 2e8eeb919028 configurationengine/source/scripts/tests/export_standalone/export_standalone.py --- /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))