Index: server/prebuild.py |
diff --git a/server/prebuild.py b/server/prebuild.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4d786050e0128315c6b076926f5fed20c40173ee |
--- /dev/null |
+++ b/server/prebuild.py |
@@ -0,0 +1,64 @@ |
+# Copyright 2010 Google Inc. Released under the GPL v2 |
+# |
+# Eric Li <ericli@google.com> |
+ |
+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) |
+ |