See my reasoning on previous messages as to why I am NACKing this patch.

On Tue, Oct 29, 2013 at 11:23 AM, Rajeev S <[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]
> https://www.redhat.com/mailman/listinfo/autotest-kernel
>



-- 
Lucas
_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel

Reply via email to