Example #1
0
    def configure(self, parser):
        super(RunnerCLI, self).configure(parser)
        parser = parser.subcommands.choices.get('run', None)
        if parser is None:
            return

        parser = parser.add_argument_group('nrunner specific options')
        settings.add_argparser_to_option(namespace='nrunner.shuffle',
                                         parser=parser,
                                         long_arg='--nrunner-shuffle',
                                         action='store_true')

        settings.add_argparser_to_option(
            namespace='nrunner.status_server_listen',
            parser=parser,
            long_arg='--nrunner-status-server-listen',
            metavar='HOST_PORT')

        settings.add_argparser_to_option(
            namespace='nrunner.status_server_uri',
            parser=parser,
            long_arg='--nrunner-status-server-uri',
            metavar='HOST_PORT')

        settings.add_argparser_to_option(
            namespace='nrunner.max_parallel_tasks',
            parser=parser,
            long_arg='--nrunner-max-parallel-tasks',
            metavar='NUMBER_OF_TASKS')

        settings.add_argparser_to_option(namespace='nrunner.spawner',
                                         parser=parser,
                                         long_arg='--nrunner-spawner',
                                         metavar='SPAWNER')
Example #2
0
 def add_option(parser, arg, **kwargs):
     """Add a command-line argument parser to an existing option."""
     settings.add_argparser_to_option(namespace=kwargs.get('dest'),
                                      action=kwargs.get('action', 'store'),
                                      parser=parser,
                                      allow_multiple=True,
                                      long_arg=arg)
Example #3
0
    def configure(self, parser):
        """
        Add the subparser for the list action.

        :param parser: The Avocado command line application parser
        :type parser: :class:`avocado.core.parser.ArgumentParser`
        """
        parser = super().configure(parser)
        settings.add_argparser_to_option(namespace='resolver.references',
                                         nargs='*',
                                         metavar='TEST_REFERENCE',
                                         parser=parser,
                                         positional_arg=True,
                                         long_arg=None,
                                         allow_multiple=True)

        help_msg = ('Writes runnable recipe files to a directory.')
        settings.register_option(section='list.recipes',
                                 key='write_to_directory',
                                 default=None,
                                 metavar='DIRECTORY',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--write-recipes-to-directory')

        help_msg = 'Writes output to a json file.'
        settings.register_option(section='list',
                                 key='write_to_json_file',
                                 default=None,
                                 metavar='JSON_FILE',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--json')

        parser_common_args.add_tag_filter_args(parser)
Example #4
0
    def configure(self, parser):
        """
        Configures "run" and "variants" subparsers
        """
        for name in ("run", "multiplex", "variants"):
            subparser = parser.subcommands.choices.get(name, None)
            if subparser is None:
                continue
            agroup = subparser.add_argument_group("yaml to mux options")
            settings.add_argparser_to_option(
                namespace=f"{self.name}.{'files'}",
                parser=agroup,
                long_arg="--mux-yaml",
                short_arg="-m",
                metavar="FILE",
                nargs="+",
                allow_multiple=True,
            )

            settings.add_argparser_to_option(
                namespace=f"{self.name}.{'filter_only'}",
                parser=agroup,
                long_arg="--mux-filter-only",
                nargs="+",
                allow_multiple=True,
                metavar="FILTER",
            )

            settings.add_argparser_to_option(
                namespace=f"{self.name}.{'filter_out'}",
                parser=agroup,
                long_arg="--mux-filter-out",
                nargs="+",
                allow_multiple=True,
                metavar="FILTER",
            )

            settings.add_argparser_to_option(
                namespace=f"{self.name}.{'parameter_paths'}",
                parser=agroup,
                long_arg="--mux-path",
                nargs="+",
                allow_multiple=True,
                metavar="PATH",
            )

            settings.add_argparser_to_option(
                namespace=f"{self.name}.{'inject'}",
                parser=agroup,
                long_arg="--mux-inject",
                nargs="+",
                allow_multiple=True,
                metavar="PATH_KEY_NODE",
            )
 def configure(self, parser):
     for name in ("run", "variants"):  # intentionally omitting "multiplex"
         subparser = parser.subcommands.choices.get(name, None)
         if subparser is None:
             continue
         sparser = subparser.add_argument_group('JSON serialized based '
                                                'varianter options')
         settings.add_argparser_to_option(namespace='json.variants.load',
                                          parser=sparser,
                                          long_arg='--json-variants-load',
                                          allow_multiple=True,
                                          metavar='FILE')
Example #6
0
    def configure(self, parser):
        warning_msg = ("--xunit-job-result as string will be deprecated soon. "
                       "This will be a bool option. On, Off will not be "
                       "necessary in future releases")
        warnings.warn(warning_msg)

        run_subcommand_parser = parser.subcommands.choices.get('run', None)
        if run_subcommand_parser is None:
            return
        settings.add_argparser_to_option(
            namespace='job.run.result.xunit.output',
            metavar='FILE',
            action=FileOrStdoutAction,
            parser=run_subcommand_parser.output,
            long_arg='--xunit')

        settings.add_argparser_to_option(
            namespace='job.run.result.xunit.enabled',
            choices=('on', 'off'),
            parser=run_subcommand_parser.output,
            long_arg='--xunit-job-result')

        settings.add_argparser_to_option(
            namespace='job.run.result.xunit.job_name',
            parser=run_subcommand_parser.output,
            long_arg='--xunit-job-name')

        settings.add_argparser_to_option(
            namespace='job.run.result.xunit.max_test_log_chars',
            metavar='SIZE',
            parser=run_subcommand_parser.output,
            long_arg='--xunit-max-test-log-chars')
Example #7
0
    def configure(self, parser):
        super(PodmanCLI, self).configure(parser)
        parser = parser.subcommands.choices.get('run', None)
        if parser is None:
            return

        parser = parser.add_argument_group('podman spawner specific options')
        settings.add_argparser_to_option(namespace='spawner.podman.bin',
                                         parser=parser,
                                         long_arg='--spawner-podman-bin')

        settings.add_argparser_to_option(namespace='spawner.podman.image',
                                         parser=parser,
                                         long_arg='--spawner-podman-image')
Example #8
0
    def configure(self, parser):
        run_subcommand_parser = parser.subcommands.choices.get('run', None)
        if run_subcommand_parser is None:
            return
        settings.add_argparser_to_option(
            namespace='job.run.result.xunit.output',
            metavar='FILE',
            action=FileOrStdoutAction,
            parser=run_subcommand_parser.output,
            long_arg='--xunit')

        settings.add_argparser_to_option(
            namespace='job.run.result.xunit.enabled',
            parser=run_subcommand_parser.output,
            long_arg='--disable-xunit-job-result')

        settings.add_argparser_to_option(
            namespace='job.run.result.xunit.job_name',
            parser=run_subcommand_parser.output,
            long_arg='--xunit-job-name',
            metavar='XUNIT_JOB_NAME')

        settings.add_argparser_to_option(
            namespace='job.run.result.xunit.max_test_log_chars',
            metavar='SIZE',
            parser=run_subcommand_parser.output,
            long_arg='--xunit-max-test-log-chars')
Example #9
0
    def configure(self, parser):
        run_subcommand_parser = parser.subcommands.choices.get("run", None)
        if run_subcommand_parser is None:
            return
        settings.add_argparser_to_option(
            namespace="job.run.result.xunit.output",
            metavar="FILE",
            action=FileOrStdoutAction,
            parser=run_subcommand_parser.output,
            long_arg="--xunit",
        )

        settings.add_argparser_to_option(
            namespace="job.run.result.xunit.enabled",
            parser=run_subcommand_parser.output,
            long_arg="--disable-xunit-job-result",
        )

        settings.add_argparser_to_option(
            namespace="job.run.result.xunit.job_name",
            parser=run_subcommand_parser.output,
            long_arg="--xunit-job-name",
            metavar="XUNIT_JOB_NAME",
        )

        settings.add_argparser_to_option(
            namespace="job.run.result.xunit.max_test_log_chars",
            metavar="SIZE",
            parser=run_subcommand_parser.output,
            long_arg="--xunit-max-test-log-chars",
        )
Example #10
0
    def configure(self, parser):
        """
        Configures "run" and "variants" subparsers
        """
        for name in ("run", "multiplex", "variants"):
            subparser = parser.subcommands.choices.get(name, None)
            if subparser is None:
                continue
            agroup = subparser.add_argument_group("yaml to mux options")
            settings.add_argparser_to_option(namespace="%s.%s" %
                                             (self.name, 'files'),
                                             parser=agroup,
                                             long_arg='--mux-yaml',
                                             short_arg='-m',
                                             metavar='FILE',
                                             nargs='+',
                                             allow_multiple=True)

            settings.add_argparser_to_option(namespace="%s.%s" %
                                             (self.name, 'filter_only'),
                                             parser=agroup,
                                             long_arg='--mux-filter-only',
                                             nargs='+',
                                             allow_multiple=True,
                                             metavar='FILTER')

            settings.add_argparser_to_option(namespace="%s.%s" %
                                             (self.name, 'filter_out'),
                                             parser=agroup,
                                             long_arg='--mux-filter-out',
                                             nargs='+',
                                             allow_multiple=True,
                                             metavar='FILTER')

            settings.add_argparser_to_option(namespace="%s.%s" %
                                             (self.name, 'parameter_paths'),
                                             parser=agroup,
                                             long_arg='--mux-path',
                                             nargs='+',
                                             allow_multiple=True,
                                             metavar='PATH')

            settings.add_argparser_to_option(namespace="%s.%s" %
                                             (self.name, 'inject'),
                                             parser=agroup,
                                             long_arg='--mux-inject',
                                             nargs='+',
                                             allow_multiple=True,
                                             metavar='PATH_KEY_NODE')
Example #11
0
    def __init__(self):
        self.args = argparse.Namespace()
        self.config = {}
        self.subcommands = None
        self.application = ArgumentParser(
            prog=PROG,
            add_help=False,
            description=DESCRIPTION  # see parent parsing
        )
        self.application.add_argument("-v",
                                      "--version",
                                      action="version",
                                      version=f"Avocado {VERSION}")
        self.application.add_argument(
            "--config",
            metavar="CONFIG_FILE",
            nargs="?",
            help="Use custom configuration from a file",
        )

        help_msg = "Turn the paginator on. Useful when output is too long."
        settings.register_option(
            section="core",
            key="paginator",
            help_msg=help_msg,
            key_type=bool,
            default=False,
            action="store_true",
            parser=self.application,
            long_arg="--enable-paginator",
        )

        help_msg = ("Some commands can produce more information. This option "
                    "will enable the verbosity when applicable.")
        settings.register_option(
            section="core",
            key="verbose",
            help_msg=help_msg,
            default=False,
            key_type=bool,
            parser=self.application,
            long_arg="--verbose",
            short_arg="-V",
        )

        settings.add_argparser_to_option(namespace="core.show",
                                         parser=self.application,
                                         long_arg="--show")
Example #12
0
    def configure(self, parser):
        run_subcommand_parser = parser.subcommands.choices.get('run', None)
        if run_subcommand_parser is None:
            return

        settings.add_argparser_to_option(
            namespace='job.run.result.json.output',
            action=FileOrStdoutAction,
            metavar='FILE',
            parser=run_subcommand_parser,
            long_arg='--json')

        settings.add_argparser_to_option(
            namespace='job.run.result.json.enabled',
            parser=run_subcommand_parser,
            long_arg='--disable-json-job-result')
Example #13
0
    def configure(self, parser):
        run_subcommand_parser = parser.subcommands.choices.get("run", None)
        if run_subcommand_parser is None:
            return

        settings.add_argparser_to_option(
            namespace="job.run.result.json.output",
            action=FileOrStdoutAction,
            metavar="FILE",
            parser=run_subcommand_parser,
            long_arg="--json",
        )

        settings.add_argparser_to_option(
            namespace="job.run.result.json.enabled",
            parser=run_subcommand_parser,
            long_arg="--disable-json-job-result",
        )
Example #14
0
    def __init__(self):
        self.args = argparse.Namespace()
        self.config = {}
        self.subcommands = None
        self.application = ArgumentParser(
            prog=PROG,
            add_help=False,  # see parent parsing
            description=DESCRIPTION)
        self.application.add_argument('-v',
                                      '--version',
                                      action='version',
                                      version='Avocado %s' % VERSION)
        self.application.add_argument(
            '--config',
            metavar='CONFIG_FILE',
            nargs='?',
            help='Use custom configuration from a file')

        help_msg = 'Turn the paginator on. Useful when output is too long.'
        settings.register_option(section='core',
                                 key='paginator',
                                 help_msg=help_msg,
                                 key_type=bool,
                                 default=False,
                                 action='store_true',
                                 parser=self.application,
                                 long_arg='--enable-paginator')

        help_msg = ('Some commands can produce more information. This option '
                    'will enable the verbosity when applicable.')
        settings.register_option(section='core',
                                 key='verbose',
                                 help_msg=help_msg,
                                 default=False,
                                 key_type=bool,
                                 parser=self.application,
                                 long_arg='--verbose',
                                 short_arg='-V')

        settings.add_argparser_to_option(namespace='core.show',
                                         parser=self.application,
                                         long_arg='--show')
Example #15
0
    def configure(self, parser):
        """
        Add the subparser for the list action.

        :param parser: The Avocado command line application parser
        :type parser: :class:`avocado.core.parser.ArgumentParser`
        """
        parser = super().configure(parser)
        settings.add_argparser_to_option(
            namespace="resolver.references",
            nargs="*",
            metavar="TEST_REFERENCE",
            parser=parser,
            positional_arg=True,
            long_arg=None,
            allow_multiple=True,
        )

        help_msg = "Writes runnable recipe files to a directory."
        settings.register_option(
            section="list.recipes",
            key="write_to_directory",
            default=None,
            metavar="DIRECTORY",
            help_msg=help_msg,
            parser=parser,
            long_arg="--write-recipes-to-directory",
        )

        help_msg = "Writes output to a json file."
        settings.register_option(
            section="list",
            key="write_to_json_file",
            default=None,
            metavar="JSON_FILE",
            help_msg=help_msg,
            parser=parser,
            long_arg="--json",
        )

        parser_common_args.add_tag_filter_args(parser)
Example #16
0
    def configure(self, parser):
        cmd_parser = parser.subcommands.choices.get('run', None)
        if cmd_parser is None:
            return
        warning_msg = ("--tap-job-result as string will be deprecated soon. "
                       "This will be a bool option. On, Off will not be "
                       "necessary in future releases")
        warnings.warn(warning_msg)

        settings.add_argparser_to_option(
            namespace='job.run.result.tap.output',
            metavar='FILE',
            action=FileOrStdoutAction,
            parser=cmd_parser,
            long_arg='--tap')

        settings.add_argparser_to_option(
            namespace='job.run.result.tap.enabled',
            choices=('on', 'off'),
            parser=cmd_parser,
            long_arg='--tap-job-result')

        settings.add_argparser_to_option(
            namespace='job.run.result.tap.include_logs',
            parser=cmd_parser,
            long_arg='--tap-include-logs')
Example #17
0
    def configure(self, parser):
        run_subcommand_parser = parser.subcommands.choices.get('run', None)
        if run_subcommand_parser is None:
            return

        warning_msg = ("--html-job-result as string will be deprecated soon. "
                       "This will be a bool option. On, Off will not be "
                       "necessary in future releases")
        warnings.warn(warning_msg)

        settings.add_argparser_to_option(
            namespace='job.run.result.html.output',
            parser=run_subcommand_parser,
            metavar='FILE',
            long_arg='--html')

        settings.add_argparser_to_option(
            namespace='job.run.result.html.open_browser',
            parser=run_subcommand_parser,
            long_arg='--open-browser')

        settings.add_argparser_to_option(
            namespace='job.run.result.html.enabled',
            choices=('on', 'off'),
            parser=run_subcommand_parser,
            long_arg='--html-job-result')
Example #18
0
    def configure(self, parser):
        super().configure(parser)
        parser = parser.subcommands.choices.get("run", None)
        if parser is None:
            return

        parser = parser.add_argument_group("podman spawner specific options")
        settings.add_argparser_to_option(
            namespace="spawner.podman.bin",
            parser=parser,
            long_arg="--spawner-podman-bin",
            metavar="PODMAN_BIN",
        )

        settings.add_argparser_to_option(
            namespace="spawner.podman.image",
            parser=parser,
            long_arg="--spawner-podman-image",
            metavar="CONTAINER_IMAGE",
        )

        namespace = "spawner.podman.avocado_spawner_egg"
        long_arg = "--spawner-podman-avocado-egg"
        settings.add_argparser_to_option(namespace=namespace,
                                         parser=parser,
                                         long_arg=long_arg,
                                         metavar="AVOCADO_EGG")
Example #19
0
    def configure(self, parser):
        super(RunnerCLI, self).configure(parser)
        parser = parser.subcommands.choices.get('run', None)
        if parser is None:
            return

        parser = parser.add_argument_group('nrunner specific options')
        settings.add_argparser_to_option(namespace='nrunner.shuffle',
                                         parser=parser,
                                         long_arg='--nrunner-shuffle',
                                         action='store_true')

        # namespace mapping
        ns = {'nrunner.status_server_listen': '--nrunner-status-server-listen',
              'nrunner.status_server_uri': '--nrunner-status-server-uri',
              'nrunner.max_parallel_tasks': '--nrunner-max-parallel-tasks',
              'nrunner.spawner': '--nrunner-spawner'}

        for k, v in ns.items():
            settings.add_argparser_to_option(namespace=k,
                                             parser=parser,
                                             long_arg=v)
Example #20
0
    def configure(self, parser):
        run_subcommand_parser = parser.subcommands.choices.get('run', None)
        if run_subcommand_parser is None:
            return

        settings.add_argparser_to_option(
            namespace='job.run.result.html.output',
            parser=run_subcommand_parser,
            metavar='FILE',
            long_arg='--html')

        settings.add_argparser_to_option(
            namespace='job.run.result.html.open_browser',
            parser=run_subcommand_parser,
            long_arg='--open-browser')

        settings.add_argparser_to_option(
            namespace='job.run.result.html.enabled',
            parser=run_subcommand_parser,
            long_arg='--disable-html-job-result')
Example #21
0
    def configure(self, parser):
        cmd_parser = parser.subcommands.choices.get('run', None)
        if cmd_parser is None:
            return

        settings.add_argparser_to_option(namespace='job.run.result.tap.output',
                                         metavar='FILE',
                                         action=FileOrStdoutAction,
                                         parser=cmd_parser,
                                         long_arg='--tap')

        settings.add_argparser_to_option(
            namespace='job.run.result.tap.enabled',
            parser=cmd_parser,
            long_arg='--disable-tap-job-result')

        settings.add_argparser_to_option(
            namespace='job.run.result.tap.include_logs',
            parser=cmd_parser,
            long_arg='--tap-include-logs')
Example #22
0
    def configure(self, parser):
        run_subcommand_parser = parser.subcommands.choices.get("run", None)
        if run_subcommand_parser is None:
            return

        settings.add_argparser_to_option(
            namespace="job.run.result.html.output",
            parser=run_subcommand_parser,
            metavar="FILE",
            long_arg="--html",
        )

        settings.add_argparser_to_option(
            namespace="job.run.result.html.open_browser",
            parser=run_subcommand_parser,
            long_arg="--open-browser",
        )

        settings.add_argparser_to_option(
            namespace="job.run.result.html.enabled",
            parser=run_subcommand_parser,
            long_arg="--disable-html-job-result",
        )
Example #23
0
    def configure(self, parser):
        super().configure(parser)
        parser = parser.subcommands.choices.get('run', None)
        if parser is None:
            return

        parser = parser.add_argument_group('podman spawner specific options')
        settings.add_argparser_to_option(namespace='spawner.podman.bin',
                                         parser=parser,
                                         long_arg='--spawner-podman-bin',
                                         metavar='PODMAN_BIN')

        settings.add_argparser_to_option(namespace='spawner.podman.image',
                                         parser=parser,
                                         long_arg='--spawner-podman-image',
                                         metavar='CONTAINER_IMAGE')

        namespace = 'spawner.podman.avocado_spawner_egg'
        long_arg = '--spawner-podman-avocado-egg'
        settings.add_argparser_to_option(namespace=namespace,
                                         parser=parser,
                                         long_arg=long_arg,
                                         metavar='AVOCADO_EGG')
Example #24
0
    def configure(self, parser):
        cmd_parser = parser.subcommands.choices.get("run", None)
        if cmd_parser is None:
            return

        settings.add_argparser_to_option(
            namespace="job.run.result.tap.output",
            metavar="FILE",
            action=FileOrStdoutAction,
            parser=cmd_parser,
            long_arg="--tap",
        )

        settings.add_argparser_to_option(
            namespace="job.run.result.tap.enabled",
            parser=cmd_parser,
            long_arg="--disable-tap-job-result",
        )

        settings.add_argparser_to_option(
            namespace="job.run.result.tap.include_logs",
            parser=cmd_parser,
            long_arg="--tap-include-logs",
        )
Example #25
0
    def configure(self, parser):
        """
        Add the subparser for the run action.

        :param parser: Main test runner parser.
        """
        parser = super(Run, self).configure(parser)

        settings.add_argparser_to_option(namespace='run.references',
                                         parser=parser,
                                         positional_arg=True,
                                         nargs='*',
                                         metavar='TEST_REFERENCE')

        help_msg = ('Parameter name and value to pass to all tests. This is '
                    'only applicable when not using a varianter plugin. '
                    'This option format must be given in the NAME=VALUE '
                    'format, and may be given any number of times, or per '
                    'parameter.')
        settings.register_option(section='run',
                                 key='test_parameters',
                                 action='append',
                                 default=[],
                                 key_type=self._test_parameter,
                                 metavar="NAME_VALUE",
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--test-parameter',
                                 short_arg='-p')

        help_msg = ('Selects the runner implementation from one of the '
                    'installed and active implementations.  You can run '
                    '"avocado plugins" and find the list of valid runners '
                    'under the "Plugins that run test suites on a job '
                    '(runners) section.  Defaults to "runner", which is '
                    'the conventional and traditional runner.')
        settings.register_option(section='run',
                                 key='test_runner',
                                 default='runner',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--test-runner',
                                 metavar='TEST_RUNNER')

        help_msg = ('Instead of running the test only list them and log '
                    'their params.')
        settings.register_option(section='run.dry_run',
                                 key='enabled',
                                 default=False,
                                 key_type=bool,
                                 help_msg=help_msg,
                                 parser=parser,
                                 short_arg='-d',
                                 long_arg='--dry-run')

        help_msg = ('Do not automatically clean up temporary directories '
                    'used by dry-run')
        settings.register_option(section='run.dry_run',
                                 key='no_cleanup',
                                 help_msg=help_msg,
                                 default=False,
                                 key_type=bool,
                                 parser=parser,
                                 long_arg='--dry-run-no-cleanup')

        help_msg = ('Forces the use of a particular job ID. Used internally '
                    'when interacting with an avocado server. You should not '
                    'use this option unless you know exactly what you\'re '
                    'doing')
        settings.register_option(section='run',
                                 key='unique_job_id',
                                 default=None,
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--force-job-id',
                                 metavar='UNIQUE_JOB_ID')

        help_msg = 'Forces to use of an alternate job results directory.'
        settings.register_option(section='run',
                                 key='results_dir',
                                 default=None,
                                 metavar='DIRECTORY',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--job-results-dir')

        help_msg = ('Categorizes this within a directory with the same name, '
                    'by creating a link to the job result directory')
        settings.register_option(section='run',
                                 key='job_category',
                                 help_msg=help_msg,
                                 parser=parser,
                                 default=None,
                                 metavar='CATEGORY',
                                 long_arg='--job-category')

        settings.add_argparser_to_option(namespace='job.run.timeout',
                                         metavar='SECONDS',
                                         parser=parser,
                                         long_arg='--job-timeout')

        help_msg = 'Enable the job interruption on first failed test.'
        settings.register_option(section='run',
                                 key='failfast',
                                 default=False,
                                 key_type=bool,
                                 action='store_true',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--failfast')

        help_msg = 'Keep job temporary files (useful for avocado debugging).'
        settings.register_option(section='run',
                                 key='keep_tmp',
                                 default=False,
                                 key_type=bool,
                                 action='store_true',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--keep-tmp')

        help_msg = ('Force the job execution, even if some of the test '
                    'references are not resolved to tests. "on" and '
                    '"off" will be deprecated soon.')
        settings.register_option(section='run',
                                 key='ignore_missing_references',
                                 default=False,
                                 key_type=bool,
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--ignore-missing-references')

        settings.add_argparser_to_option(namespace='sysinfo.collect.enabled',
                                         parser=parser,
                                         action='store_false',
                                         long_arg='--disable-sysinfo')

        settings.add_argparser_to_option('run.execution_order',
                                         parser=parser,
                                         long_arg='--execution-order')

        parser.output = parser.add_argument_group('output and result format')

        settings.add_argparser_to_option('job.run.store_logging_stream',
                                         parser=parser.output,
                                         long_arg='--store-logging-stream',
                                         metavar='LOGGING_STREAM')

        help_msg = ('Logs the possible data directories for each test. This '
                    'is helpful when writing new tests and not being sure '
                    'where to put data files. Look for "Test data '
                    'directories" in your test log')
        settings.register_option(section='run',
                                 key='log_test_data_directories',
                                 default=False,
                                 key_type=bool,
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--log-test-data-directories')

        out_check = parser.add_argument_group('output check arguments')

        help_msg = ('Record the output produced by each test (from stdout '
                    'and stderr) into both the current executing result '
                    'and into reference files. Reference files are used on '
                    'subsequent runs to determine if the test produced the '
                    'expected output or not, and the current executing result '
                    'is used to check against a previously recorded reference '
                    'file.  Valid values: "none" (to explicitly disable all '
                    'recording) "stdout" (to record standard output *only*), '
                    '"stderr" (to record standard error *only*), "both" (to '
                    'record standard output and error in separate files), '
                    '"combined" (for standard output and error in a single '
                    'file). "all" is also a valid but deprecated option that '
                    'is a synonym of "both".')
        settings.register_option(section='run',
                                 key='output_check_record',
                                 help_msg=help_msg,
                                 choices=('none', 'stdout', 'stderr', 'both',
                                          'combined', 'all'),
                                 parser=out_check,
                                 default=None,
                                 long_arg='--output-check-record')

        help_msg = ('Disables test output (stdout/stderr) check. If this '
                    'option is given, no output will be checked, even if '
                    'there are reference files present for the test.')
        settings.register_option(section='run',
                                 key='output_check',
                                 default=True,
                                 key_type=bool,
                                 action='store_false',
                                 help_msg=help_msg,
                                 parser=out_check,
                                 long_arg='--disable-output-check')

        loader.add_loader_options(parser, 'run')
        parser_common_args.add_tag_filter_args(parser)
Example #26
0
    def configure(self, parser):
        """
        Add the subparser for the run action.

        :param parser: Main test runner parser.
        """
        parser = super().configure(parser)

        settings.add_argparser_to_option(namespace='resolver.references',
                                         nargs='*',
                                         metavar='TEST_REFERENCE',
                                         parser=parser,
                                         positional_arg=True,
                                         long_arg=None,
                                         allow_multiple=True)

        help_msg = ('Parameter name and value to pass to all tests. This is '
                    'only applicable when not using a varianter plugin. '
                    'This option format must be given in the NAME=VALUE '
                    'format, and may be given any number of times, or per '
                    'parameter.')
        settings.register_option(section='run',
                                 key='test_parameters',
                                 action='append',
                                 default=[],
                                 key_type=self._test_parameter,
                                 metavar="NAME_VALUE",
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--test-parameter',
                                 short_arg='-p')

        settings.add_argparser_to_option(namespace='run.test_runner',
                                         parser=parser,
                                         long_arg='--test-runner',
                                         metavar='TEST_RUNNER')

        help_msg = ('Instead of running the test only list them and log '
                    'their params.')
        settings.register_option(section='run.dry_run',
                                 key='enabled',
                                 default=False,
                                 key_type=bool,
                                 help_msg=help_msg,
                                 parser=parser,
                                 short_arg='-d',
                                 long_arg='--dry-run')

        help_msg = ('Do not automatically clean up temporary directories '
                    'used by dry-run')
        settings.register_option(section='run.dry_run',
                                 key='no_cleanup',
                                 help_msg=help_msg,
                                 default=False,
                                 key_type=bool,
                                 parser=parser,
                                 long_arg='--dry-run-no-cleanup')

        help_msg = ('Forces the use of a particular job ID. Used internally '
                    'when interacting with an avocado server. You should not '
                    'use this option unless you know exactly what you\'re '
                    'doing')
        settings.register_option(section='run',
                                 key='unique_job_id',
                                 default=None,
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--force-job-id',
                                 metavar='UNIQUE_JOB_ID')

        help_msg = 'Forces to use of an alternate job results directory.'
        settings.register_option(section='run',
                                 key='results_dir',
                                 default=None,
                                 metavar='DIRECTORY',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--job-results-dir')

        help_msg = ('Categorizes this within a directory with the same name, '
                    'by creating a link to the job result directory')
        settings.register_option(section='run',
                                 key='job_category',
                                 help_msg=help_msg,
                                 parser=parser,
                                 default=None,
                                 metavar='CATEGORY',
                                 long_arg='--job-category')

        settings.add_argparser_to_option(namespace='job.run.timeout',
                                         metavar='SECONDS',
                                         parser=parser,
                                         long_arg='--job-timeout')

        help_msg = 'Enable the job interruption on first failed test.'
        settings.register_option(section='run',
                                 key='failfast',
                                 default=False,
                                 key_type=bool,
                                 action='store_true',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--failfast')

        help_msg = 'Keep job temporary files (useful for avocado debugging).'
        settings.register_option(section='run',
                                 key='keep_tmp',
                                 default=False,
                                 key_type=bool,
                                 action='store_true',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--keep-tmp')

        help_msg = ('Force the job execution, even if some of the test '
                    'references are not resolved to tests.')
        settings.register_option(section='run',
                                 key='ignore_missing_references',
                                 default=False,
                                 key_type=bool,
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--ignore-missing-references')

        settings.add_argparser_to_option(namespace='sysinfo.collect.enabled',
                                         parser=parser,
                                         action='store_false',
                                         long_arg='--disable-sysinfo')

        settings.add_argparser_to_option('run.execution_order',
                                         parser=parser,
                                         long_arg='--execution-order')

        parser.output = parser.add_argument_group('output and result format')

        settings.add_argparser_to_option(
            'job.run.store_logging_stream',
            parser=parser.output,
            long_arg='--store-logging-stream',
            metavar='LOGGING_STREAM',
            argparse_type=lambda x: set(x.split(',')))

        help_msg = ('Logs the possible data directories for each test. This '
                    'is helpful when writing new tests and not being sure '
                    'where to put data files. Look for "Test data '
                    'directories" in your test log')
        settings.register_option(section='run',
                                 key='log_test_data_directories',
                                 default=False,
                                 key_type=bool,
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--log-test-data-directories')

        loader.add_loader_options(parser, 'run')
        parser_common_args.add_tag_filter_args(parser)
Example #27
0
    def configure(self, parser):
        """
        Add the subparser for the list action.

        :param parser: The Avocado command line application parser
        :type parser: :class:`avocado.core.parser.ArgumentParser`
        """
        parser = super(List, self).configure(parser)
        settings.add_argparser_to_option(namespace='resolver.references',
                                         nargs='*',
                                         metavar='TEST_REFERENCE',
                                         parser=parser,
                                         positional_arg=True,
                                         long_arg=None,
                                         allow_multiple=True)
        loader.add_loader_options(parser, 'list')

        help_msg = ('Uses the Avocado resolver method (part of the nrunner '
                    'architecture) to detect tests. This is enabled by '
                    'default and exists only for compatibility purposes, '
                    'and will be removed soon. To use the legacy (loader) '
                    'method for finding tests, set the "--loader" option')
        settings.register_option(section='list',
                                 key='compatiblity_with_resolver_noop',
                                 key_type=bool,
                                 default=True,
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--resolver')

        help_msg = ('Uses the Avocado legacy (loader) method for finding '
                    'tests. This option will exist only for a transitional '
                    'period until the legacy (loader) method is deprecated '
                    'and removed')
        settings.register_option(section='list',
                                 key='resolver',
                                 key_type=bool,
                                 default=True,
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--loader')

        help_msg = ('Writes runnable recipe files to a directory. Valid only '
                    'when using --resolver.')
        settings.register_option(section='list.recipes',
                                 key='write_to_directory',
                                 default=None,
                                 metavar='DIRECTORY',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--write-recipes-to-directory')

        help_msg = 'Writes output to a json file.'
        settings.register_option(section='list',
                                 key='write_to_json_file',
                                 default=None,
                                 metavar='JSON_FILE',
                                 help_msg=help_msg,
                                 parser=parser,
                                 long_arg='--json')

        parser_common_args.add_tag_filter_args(parser)
Example #28
0
    def configure(self, parser):
        """
        Add the subparser for the run action.

        :param parser: Main test runner parser.
        """
        parser = super().configure(parser)

        settings.add_argparser_to_option(
            namespace="resolver.references",
            nargs="*",
            metavar="TEST_REFERENCE",
            parser=parser,
            positional_arg=True,
            long_arg=None,
            allow_multiple=True,
        )

        help_msg = ("Parameter name and value to pass to all tests. This is "
                    "only applicable when not using a varianter plugin. "
                    "This option format must be given in the NAME=VALUE "
                    "format, and may be given any number of times, or per "
                    "parameter.")
        settings.register_option(
            section="run",
            key="test_parameters",
            action="append",
            default=[],
            key_type=self._test_parameter,
            metavar="NAME_VALUE",
            help_msg=help_msg,
            parser=parser,
            long_arg="--test-parameter",
            short_arg="-p",
        )

        settings.add_argparser_to_option(
            namespace="run.test_runner",
            parser=parser,
            long_arg="--test-runner",
            metavar="TEST_RUNNER",
        )

        help_msg = "Instead of running the test only list them and log their params."
        settings.register_option(
            section="run.dry_run",
            key="enabled",
            default=False,
            key_type=bool,
            help_msg=help_msg,
            parser=parser,
            short_arg="-d",
            long_arg="--dry-run",
        )

        help_msg = "Do not automatically clean up temporary directories used by dry-run"
        settings.register_option(
            section="run.dry_run",
            key="no_cleanup",
            help_msg=help_msg,
            default=False,
            key_type=bool,
            parser=parser,
            long_arg="--dry-run-no-cleanup",
        )

        help_msg = ("Forces the use of a particular job ID. Used internally "
                    "when interacting with an avocado server. You should not "
                    "use this option unless you know exactly what you're "
                    "doing")
        settings.register_option(
            section="run",
            key="unique_job_id",
            default=None,
            help_msg=help_msg,
            parser=parser,
            long_arg="--force-job-id",
            metavar="UNIQUE_JOB_ID",
        )

        help_msg = "Forces to use of an alternate job results directory."
        settings.register_option(
            section="run",
            key="results_dir",
            default=None,
            metavar="DIRECTORY",
            help_msg=help_msg,
            parser=parser,
            long_arg="--job-results-dir",
        )

        help_msg = ("Categorizes this within a directory with the same name, "
                    "by creating a link to the job result directory")
        settings.register_option(
            section="run",
            key="job_category",
            help_msg=help_msg,
            parser=parser,
            default=None,
            metavar="CATEGORY",
            long_arg="--job-category",
        )

        settings.add_argparser_to_option(
            namespace="job.run.timeout",
            metavar="SECONDS",
            parser=parser,
            long_arg="--job-timeout",
        )

        help_msg = "Enable the job interruption on first failed test."
        settings.register_option(
            section="run",
            key="failfast",
            default=False,
            key_type=bool,
            action="store_true",
            help_msg=help_msg,
            parser=parser,
            long_arg="--failfast",
        )

        help_msg = "Keep job temporary files (useful for avocado debugging)."
        settings.register_option(
            section="run",
            key="keep_tmp",
            default=False,
            key_type=bool,
            action="store_true",
            help_msg=help_msg,
            parser=parser,
            long_arg="--keep-tmp",
        )

        help_msg = ("Force the job execution, even if some of the test "
                    "references are not resolved to tests.")
        settings.register_option(
            section="run",
            key="ignore_missing_references",
            default=False,
            key_type=bool,
            help_msg=help_msg,
            parser=parser,
            long_arg="--ignore-missing-references",
        )

        help_msg = "Disable sysinfo collection (like hardware details, profiles, etc)."
        settings.add_argparser_to_option(
            namespace="sysinfo.collect.enabled",
            parser=parser,
            action="store_false",
            long_arg="--disable-sysinfo",
            help_msg=help_msg,
        )

        settings.add_argparser_to_option("run.execution_order",
                                         parser=parser,
                                         long_arg="--execution-order")

        parser.output = parser.add_argument_group("output and result format")

        settings.add_argparser_to_option(
            "job.run.store_logging_stream",
            parser=parser.output,
            long_arg="--store-logging-stream",
            metavar="LOGGING_STREAM",
            argparse_type=lambda x: set(x.split(",")),
        )

        help_msg = ("Logs the possible data directories for each test. This "
                    "is helpful when writing new tests and not being sure "
                    'where to put data files. Look for "Test data '
                    'directories" in your test log')
        settings.register_option(
            section="run",
            key="log_test_data_directories",
            default=False,
            key_type=bool,
            help_msg=help_msg,
            parser=parser,
            long_arg="--log-test-data-directories",
        )

        parser_common_args.add_tag_filter_args(parser)
Example #29
0
    def configure(self, parser):
        super().configure(parser)
        parser = parser.subcommands.choices.get("run", None)
        if parser is None:
            return

        parser = parser.add_argument_group("nrunner specific options")
        settings.add_argparser_to_option(
            namespace="nrunner.shuffle",
            parser=parser,
            long_arg="--nrunner-shuffle",
            action="store_true",
        )

        settings.add_argparser_to_option(
            namespace="nrunner.status_server_auto",
            parser=parser,
            long_arg="--nrunner-status-server-disable-auto",
            action="store_false",
        )

        settings.add_argparser_to_option(
            namespace="nrunner.status_server_listen",
            parser=parser,
            long_arg="--nrunner-status-server-listen",
            metavar="HOST_PORT",
        )

        settings.add_argparser_to_option(
            namespace="nrunner.status_server_uri",
            parser=parser,
            long_arg="--nrunner-status-server-uri",
            metavar="HOST_PORT",
        )

        settings.add_argparser_to_option(
            namespace="nrunner.max_parallel_tasks",
            parser=parser,
            long_arg="--nrunner-max-parallel-tasks",
            metavar="NUMBER_OF_TASKS",
        )

        settings.add_argparser_to_option(
            namespace="nrunner.spawner",
            parser=parser,
            long_arg="--nrunner-spawner",
            metavar="SPAWNER",
        )