On Tue, Oct 29, 2013 at 11:23 AM, Rajeev S <[email protected]
<mailto:[email protected]>> wrote:
Patch to specify the location of the test directory via an
extra command line option.
Usage:./autotest -d /path/to/dir path/to/control
---
client/autotest_local.py | 6 ++++++
client/cmdparser.py | 11 ++++++++++-
client/optparser.py | 3 +++
client/setup_job.py | 8 ++++++++
client/shared/base_job.py | 6 ++++++
client/shared/base_job_unittest.py | 2 +-
client/shared/test.py | 2 +-
7 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/client/autotest_local.py b/client/autotest_local.py
index ab5dbd6..276fe16 100644
--- a/client/autotest_local.py
+++ b/client/autotest_local.py
@@ -46,6 +46,12 @@ class AutotestLocalApp:
self.options, args = self.opt_parser.parse_args()
self.args = self.cmd_parser.parse_args(args)
+ if self.options.test_directory is not None:
+ if os.path.isdir(self.options.test_directory):
+ os.environ['CUSTOM_DIR'] = self.options.test_directory
+ else:
+ print "The custom directory specifed does not
exist,Hence Ignoring."
+
# Check for a control file if not in prebuild mode.
if len(args) != 1 and self.options.client_test_setup is None:
print "Missing control file!"
diff --git a/client/cmdparser.py b/client/cmdparser.py
index 5683835..ccef3ed 100644
--- a/client/cmdparser.py
+++ b/client/cmdparser.py
@@ -173,6 +173,13 @@ class CommandParser(object):
cls._print_control_list(pipe, dirtest)
pipe.write("\n")
+ # Walk customtest directory
+ if 'CUSTOM_DIR' in os.environ:
+ dirtest = os.environ['CUSTOM_DIR']
+ pipe.write("Custom Test Directory (%s)\n" % dirtest)
+ cls._print_control_list(pipe, dirtest)
+ pipe.write("\n")
+
# Walk autodirtest directory
dirtest = os.environ['AUTODIRTEST']
pipe.write("Autotest prepackaged tests (%s)\n" % dirtest)
@@ -232,8 +239,10 @@ class CommandParser(object):
fetchdir = FETCHDIRTEST
globaldir = GLOBALDIRTEST
autodir = os.environ['AUTODIRTEST']
+ if 'CUSTOM_DIR' in os.environ:
+ customtestdir = os.environ['CUSTOM_DIR']
- for dirtest in [localdir, fetchdir, globaldir, autodir]:
+ for dirtest in [localdir, fetchdir, globaldir, autodir,
customtestdir]:
d = os.path.join(dirtest, test)
if os.path.isfile(d):
args.insert(0, d)
diff --git a/client/optparser.py b/client/optparser.py
index 717ba92..f5a5496 100644
--- a/client/optparser.py
+++ b/client/optparser.py
@@ -53,6 +53,9 @@ class
AutotestLocalOptionParser(optparse.OptionParser):
help=('a comma seperated list of client
tests to '
'prebuild on the server. Use all
to prebuild '
'all of them.'))
+ general.add_option("-d",'--test_directory',
dest='test_directory',
+ type='string', default=None, action='store',
+ help=('Specify a custom test directory '))
self.add_option_group(general)
job_id = optparse.OptionGroup(self, 'JOB IDENTIFICATION')
diff --git a/client/setup_job.py b/client/setup_job.py
index a6547f2..9465d46 100644
--- a/client/setup_job.py
+++ b/client/setup_job.py
@@ -112,6 +112,14 @@ def load_all_client_tests(options):
all_tests.append(client_test)
else:
broken_tests.append(test_name)
+ if 'CUSTOM_DIR' in os.environ:
+ testdir = os.environ['CUSTOM_DIR']
+ for test_name in os.listdir(testdir):
+ client_test = init_test(options, os.path.join(testdir,
test_name))
+ if client_test:
+ all_tests.append(client_test)
+ else:
+ broken_tests.append(test_name)
return all_tests, broken_tests
diff --git a/client/shared/base_job.py b/client/shared/base_job.py
index aff1ca7..15932e4 100644
--- a/client/shared/base_job.py
+++ b/client/shared/base_job.py
@@ -866,6 +866,7 @@ class base_job(object):
@property pkgdir: The job packages directory. [WRITABLE]
@property tmpdir: The job temporary directory. [WRITABLE]
@property testdir: The job test directory. [WRITABLE]
+ @property customtestdir: The custom test directory. [WRITABLE]
@property site_testdir: The job site test directory. [WRITABLE]
@property bindir: The client bin/ directory.
@@ -947,6 +948,7 @@ class base_job(object):
pkgdir = _job_directory.property_factory('pkgdir')
tmpdir = _job_directory.property_factory('tmpdir')
testdir = _job_directory.property_factory('testdir')
+ customtestdir = _job_directory.property_factory('customtestdir')
site_testdir = _job_directory.property_factory('site_testdir')
bindir = _job_directory.property_factory('bindir')
configdir = _job_directory.property_factory('configdir')
@@ -1057,6 +1059,10 @@ class base_job(object):
# Now tests are read-only modules
self._testdir = readonly_dir(test_dir)
+ if 'CUSTOM_DIR' in os.environ:
+ self._customtestdir =
readonly_dir(os.environ['CUSTOM_DIR'])
+ else:
+ self._customtestdir = readonly_dir(test_dir)
self._site_testdir = readwrite_dir(test_out_dir, 'site_tests')
# various server-specific directories
diff --git a/client/shared/base_job_unittest.py
b/client/shared/base_job_unittest.py
index 210c069..2678e37 100755
--- a/client/shared/base_job_unittest.py
+++ b/client/shared/base_job_unittest.py
@@ -77,7 +77,7 @@ class test_init(unittest.TestCase):
# standard directories
'autodir', 'clientdir', 'serverdir', 'resultdir',
'pkgdir',
'tmpdir', 'testdir', 'site_testdir', 'bindir',
- 'configdir', 'profdir', 'toolsdir', 'conmuxdir',
+ 'configdir', 'profdir', 'toolsdir', 'conmuxdir',
'customtestdir',
# other special attributes
'args', 'automatic_test_tag', 'bootloader', 'control',
diff --git a/client/shared/test.py b/client/shared/test.py
index 9e0d6fe..0166e14 100644
--- a/client/shared/test.py
+++ b/client/shared/test.py
@@ -885,7 +885,7 @@ def runtest(job, url, tag, args, dargs,
# already exists on the machine
pass
- testdir_list = [job.testdir, getattr(job, 'site_testdir',
None)]
+ testdir_list = [job.testdir, getattr(job, 'site_testdir',
None), job.customtestdir]
bindir_config = settings.get_value('COMMON', 'test_dir',
default="")
if bindir_config:
testdir_list.extend(bindir_config.strip().split(','))
_______________________________________________
Autotest-kernel mailing list
[email protected] <mailto:[email protected]>
https://www.redhat.com/mailman/listinfo/autotest-kernel
--
Lucas
_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel