On 10/30/2013 02:52 PM, Lucas Meneghel Rodrigues wrote:
See my reasoning on previous messages as to why I am NACKing this patch.

OK, seems I misunderstood why this patch was implemented. OK, I'll read and process this patch shortly.


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


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

Reply via email to