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')
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)
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)
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')
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')
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')
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')
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", )
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')
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")
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')
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", )
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')
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)
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')
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')
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")
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)
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')
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')
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", )
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')
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", )
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)
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)
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)
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)
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", )