# Copyright 2010 Google Inc. Released under the GPL v2 # # Eric Li import logging, os, pickle, re, sys import common from autotest_lib.client.bin import setup_job as client_setup_job def touch_init(parent_dir, child_dir): """ Touch __init__.py file all alone through from dir_patent to child_dir. So client tests could be loaded as Python modules. Assume child_dir is a subdirectory of parent_dir. """ if not child_dir.startswith(parent_dir): logging.error('%s is not a subdirectory of %s' % (child_dir, parent_dir)) return sub_parent_dirs = parent_dir.split(os.path.sep) sub_child_dirs = child_dir.split(os.path.sep) for sub_dir in sub_child_dirs[len(sub_parent_dirs):]: sub_parent_dirs.append(sub_dir) path = os.path.sep.join(sub_parent_dirs) init_py = os.path.join(path, '__init__.py') open(init_py, 'a').close() def init_test(testdir): """ Instantiate a client test object from a given test directory. @param testdir The test directory. @returns A test object or None if failed to instantiate. """ class options: tag = '' verbose = None cont = False harness = 'autoserv' hostname = None user = None log = True return client_setup_job.init_test(options, testdir) def setup(autotest_client_dir, client_test_dir): """ Setup prebuild of a client test. @param autotest_client_dir: The autotest/client base directory. @param client_test_dir: The actual test directory under client. """ os.environ['AUTODIR'] = autotest_client_dir touch_init(autotest_client_dir, client_test_dir) # instantiate a client_test instance. client_test = init_test(client_test_dir) client_setup_job.setup_test(client_test)