def _import_listener(self, listener): if not is_string(listener): return listener, type_name(listener) name, args = split_args_from_name_or_path(listener) importer = Importer("listener") listener = importer.import_class_or_module(os.path.normpath(name), instantiate_with_args=args) return listener, name
def _import_listener(self, listener): if not is_string(listener): return listener, type_name(listener) name, args = split_args_from_name_or_path(listener) importer = Importer('listener') listener = importer.import_class_or_module(os.path.normpath(name), instantiate_with_args=args) return listener, name
def __init__(self, listener): if is_string(listener): name, args = split_args_from_name_or_path(listener) listener = self._import_listener(name, args) else: name = type_name(listener) self.name = name self.version = self._get_version(listener) AbstractLoggerProxy.__init__(self, listener)
def _import_listener(self, listener): if not is_string(listener): # Modules have `__name__`, with others better to use `type_name`. name = getattr(listener, '__name__', None) or type_name(listener) return listener, name name, args = split_args_from_name_or_path(listener) importer = Importer('listener') listener = importer.import_class_or_module(os.path.normpath(name), instantiate_with_args=args) return listener, name
def _yield_visitors(self, visitors): importer = Importer('model modifier') for visitor in visitors: try: if not is_string(visitor): yield visitor else: name, args = split_args_from_name_or_path(visitor) yield importer.import_class_or_module(name, args) except DataError as err: self._log_error(err.message)
def __init__(self, listener): if is_string(listener): name, args = split_args_from_name_or_path(listener) listener = self._import_listener(name, args) else: name = type_name(listener) AbstractLoggerProxy.__init__(self, listener) self.name = name self.version = self._get_version(listener) if self.version == 1: LOGGER.warn("Listener '%s' uses deprecated API version 1. " "Switch to API version 2 instead." % self.name)
def _process_value(self, name, value): if name == 'ReRunFailed': return gather_failed_tests(value) if name == 'DeprecatedRunFailed': if value.upper() != 'NONE': LOGGER.warn( 'Option --runfailed is deprecated and will be ' 'removed in the future. Use --rerunfailed instead.') return gather_failed_tests(value) if name == 'DeprecatedMerge' and value is True: LOGGER.warn('Option --rerunmerge is deprecated and will be ' 'removed in the future. Use --merge instead.') if name == 'LogLevel': return self._process_log_level(value) if value == self._get_default_value(name): return value if name in ['Name', 'Doc', 'LogTitle', 'ReportTitle']: if name == 'Doc': value = self._escape_as_data(value) return value.replace('_', ' ') if name in ['Metadata', 'TagDoc']: if name == 'Metadata': value = [self._escape_as_data(v) for v in value] return [self._process_metadata_or_tagdoc(v) for v in value] if name in ['Include', 'Exclude']: return [self._format_tag_patterns(v) for v in value] if name in self._output_opts and (not value or value.upper() == 'NONE'): return None if name == 'OutputDir': return abspath(value) if name in ['MonitorWidth', 'MonitorColors', 'MonitorMarkers']: option = '--' + name.lower() LOGGER.warn("Option '%s' is deprecated. Use '%s' instead." % (option, option.replace('monitor', 'console'))) if name in ['SuiteStatLevel', 'MonitorWidth', 'ConsoleWidth']: return self._convert_to_positive_integer_or_default(name, value) if name == 'VariableFiles': return [split_args_from_name_or_path(item) for item in value] if name == 'ReportBackground': return self._process_report_background(value) if name == 'TagStatCombine': return [self._process_tag_stat_combine(v) for v in value] if name == 'TagStatLink': return [ v for v in [self._process_tag_stat_link(v) for v in value] if v ] if name == 'Randomize': return self._process_randomize_value(value) if name == 'RemoveKeywords': self._validate_remove_keywords(value) if name == 'FlattenKeywords': self._validate_flatten_keywords(value) return value
def _process_value(self, name, value): if name == 'ReRunFailed': return gather_failed_tests(value) if name == 'ReRunFailedSuites': return gather_failed_suites(value) if name == 'LogLevel': return self._process_log_level(value) if value == self._get_default_value(name): return value if name == 'Doc': return self._process_doc(value) if name == 'Metadata': return [self._process_metadata(v) for v in value] if name == 'TagDoc': return [self._process_tagdoc(v) for v in value] if name in ['Include', 'Exclude']: return [self._format_tag_patterns(v) for v in value] if name in self._output_opts and (not value or value.upper() == 'NONE'): return None if name == 'OutputDir': return abspath(value) if name in ['SuiteStatLevel', 'ConsoleWidth']: return self._convert_to_positive_integer_or_default(name, value) if name == 'VariableFiles': return [split_args_from_name_or_path(item) for item in value] if name == 'ReportBackground': return self._process_report_background(value) if name == 'TagStatCombine': return [self._process_tag_stat_combine(v) for v in value] if name == 'TagStatLink': return [ v for v in [self._process_tag_stat_link(v) for v in value] if v ] if name == 'Randomize': return self._process_randomize_value(value) if name == 'MaxErrorLines': return self._process_max_error_lines(value) if name == 'MaxAssignLength': return self._process_max_assign_length(value) if name == 'PythonPath': return self._process_pythonpath(value) if name == 'RemoveKeywords': self._validate_remove_keywords(value) if name == 'FlattenKeywords': self._validate_flatten_keywords(value) if name == 'ExpandKeywords': self._validate_expandkeywords(value) if name == 'Extension': return tuple(ext.lower().lstrip('.') for ext in value.split(':')) return value
def _yield_visitors(self, visitors): # Avoid cyclic imports. Yuck. from robot.output import LOGGER importer = Importer('model modifier', logger=LOGGER) for visitor in visitors: try: if not is_string(visitor): yield visitor else: name, args = split_args_from_name_or_path(visitor) yield importer.import_class_or_module(name, args) except DataError as err: self._log_error(err.message)
def _process_value(self, name, value): if name == 'ReRunFailed': return gather_failed_tests(value) if name == 'DeprecatedRunFailed': if value.upper() != 'NONE': LOGGER.warn('Option --runfailed is deprecated and will be ' 'removed in the future. Use --rerunfailed instead.') return gather_failed_tests(value) if name == 'DeprecatedMerge' and value is True: LOGGER.warn('Option --rerunmerge is deprecated and will be ' 'removed in the future. Use --merge instead.') if name == 'LogLevel': return self._process_log_level(value) if value == self._get_default_value(name): return value if name in ['Name', 'Doc', 'LogTitle', 'ReportTitle']: if name == 'Doc': value = self._escape_as_data(value) return value.replace('_', ' ') if name in ['Metadata', 'TagDoc']: if name == 'Metadata': value = [self._escape_as_data(v) for v in value] return [self._process_metadata_or_tagdoc(v) for v in value] if name in ['Include', 'Exclude']: return [self._format_tag_patterns(v) for v in value] if name in self._output_opts and (not value or value.upper() == 'NONE'): return None if name == 'OutputDir': return utils.abspath(value) if name in ['MonitorWidth', 'MonitorColors', 'MonitorMarkers']: option = '--' + name.lower() LOGGER.warn("Option '%s' is deprecated. Use '%s' instead." % (option, option.replace('monitor', 'console'))) if name in ['SuiteStatLevel', 'MonitorWidth', 'ConsoleWidth']: return self._convert_to_positive_integer_or_default(name, value) if name == 'VariableFiles': return [split_args_from_name_or_path(item) for item in value] if name == 'ReportBackground': return self._process_report_background(value) if name == 'TagStatCombine': return [self._process_tag_stat_combine(v) for v in value] if name == 'TagStatLink': return [v for v in [self._process_tag_stat_link(v) for v in value] if v] if name == 'Randomize': return self._process_randomize_value(value) if name == 'RemoveKeywords': self._validate_remove_keywords(value) if name == 'FlattenKeywords': self._validate_flatten_keywords(value) return value
def _process_value(self, name, value): if name == 'ReRunFailed': return gather_failed_tests(value) if name == 'ReRunFailedSuites': return gather_failed_suites(value) if name == 'LogLevel': return self._process_log_level(value) if value == self._get_default_value(name): return value if name == 'Doc': return self._escape_as_data(value) if name in ['Metadata', 'TagDoc']: if name == 'Metadata': value = [self._escape_as_data(v) for v in value] return [self._process_metadata_or_tagdoc(v) for v in value] if name in ['Include', 'Exclude']: return [self._format_tag_patterns(v) for v in value] if name in self._output_opts and (not value or value.upper() == 'NONE'): return None if name == 'OutputDir': return abspath(value) if name in ['SuiteStatLevel', 'ConsoleWidth']: return self._convert_to_positive_integer_or_default(name, value) if name == 'VariableFiles': return [split_args_from_name_or_path(item) for item in value] if name == 'ReportBackground': return self._process_report_background(value) if name == 'TagStatCombine': return [self._process_tag_stat_combine(v) for v in value] if name == 'TagStatLink': return [ v for v in [self._process_tag_stat_link(v) for v in value] if v ] if name == 'Randomize': return self._process_randomize_value(value) if name == 'MaxErrorLines': return self._process_max_error_lines(value) if name == 'RemoveKeywords': self._validate_remove_keywords(value) if name == 'FlattenKeywords': self._validate_flatten_keywords(value) if name == 'WarnOnSkipped': with LOGGER.cache_only: LOGGER.warn("Option '--warnonskippedfiles' is deprecated and " "has no effect. Nowadays all skipped files are " "reported.") return value
def _process_value(self, name, value): if name == 'ReRunFailed': return gather_failed_tests(value) if name == 'ReRunFailedSuites': return gather_failed_suites(value) if name == 'LogLevel': return self._process_log_level(value) if value == self._get_default_value(name): return value if name in ['Name', 'Doc', 'LogTitle', 'ReportTitle']: if name == 'Doc': value = self._escape_as_data(value) return value.replace('_', ' ') if name in ['Metadata', 'TagDoc']: if name == 'Metadata': value = [self._escape_as_data(v) for v in value] return [self._process_metadata_or_tagdoc(v) for v in value] if name in ['Include', 'Exclude']: return [self._format_tag_patterns(v) for v in value] if name in self._output_opts and (not value or value.upper() == 'NONE'): return None if name == 'OutputDir': return abspath(value) if name in ['SuiteStatLevel', 'ConsoleWidth']: return self._convert_to_positive_integer_or_default(name, value) if name == 'VariableFiles': return [split_args_from_name_or_path(item) for item in value] if name == 'ReportBackground': return self._process_report_background(value) if name == 'TagStatCombine': return [self._process_tag_stat_combine(v) for v in value] if name == 'TagStatLink': return [ v for v in [self._process_tag_stat_link(v) for v in value] if v ] if name == 'Randomize': return self._process_randomize_value(value) if name == 'RemoveKeywords': self._validate_remove_keywords(value) if name == 'FlattenKeywords': self._validate_flatten_keywords(value) return value
def _process_value(self, name, value): if name == "ReRunFailed": return gather_failed_tests(value) if name == "ReRunFailedSuites": return gather_failed_suites(value) if name == "LogLevel": return self._process_log_level(value) if value == self._get_default_value(name): return value if name in ["Name", "Doc", "LogTitle", "ReportTitle"]: if name == "Doc": value = self._escape_as_data(value) return value.replace("_", " ") if name in ["Metadata", "TagDoc"]: if name == "Metadata": value = [self._escape_as_data(v) for v in value] return [self._process_metadata_or_tagdoc(v) for v in value] if name in ["Include", "Exclude"]: return [self._format_tag_patterns(v) for v in value] if name in self._output_opts and (not value or value.upper() == "NONE"): return None if name == "OutputDir": return abspath(value) if name in ["SuiteStatLevel", "ConsoleWidth"]: return self._convert_to_positive_integer_or_default(name, value) if name == "VariableFiles": return [split_args_from_name_or_path(item) for item in value] if name == "ReportBackground": return self._process_report_background(value) if name == "TagStatCombine": return [self._process_tag_stat_combine(v) for v in value] if name == "TagStatLink": return [v for v in [self._process_tag_stat_link(v) for v in value] if v] if name == "Randomize": return self._process_randomize_value(value) if name == "RemoveKeywords": self._validate_remove_keywords(value) if name == "FlattenKeywords": self._validate_flatten_keywords(value) return value
def _process_value(self, name, value): if name == 'ReRunFailed': return gather_failed_tests(value) if name == 'ReRunFailedSuites': return gather_failed_suites(value) if name == 'LogLevel': return self._process_log_level(value) if value == self._get_default_value(name): return value if name == 'Doc': return self._escape_as_data(value) if name in ['Metadata', 'TagDoc']: if name == 'Metadata': value = [self._escape_as_data(v) for v in value] return [self._process_metadata_or_tagdoc(v) for v in value] if name in ['Include', 'Exclude']: return [self._format_tag_patterns(v) for v in value] if name in self._output_opts and (not value or value.upper() == 'NONE'): return None if name == 'OutputDir': return abspath(value) if name in ['SuiteStatLevel', 'ConsoleWidth']: return self._convert_to_positive_integer_or_default(name, value) if name == 'VariableFiles': return [split_args_from_name_or_path(item) for item in value] if name == 'ReportBackground': return self._process_report_background(value) if name == 'TagStatCombine': return [self._process_tag_stat_combine(v) for v in value] if name == 'TagStatLink': return [v for v in [self._process_tag_stat_link(v) for v in value] if v] if name == 'Randomize': return self._process_randomize_value(value) if name == 'RemoveKeywords': self._validate_remove_keywords(value) if name == 'FlattenKeywords': self._validate_flatten_keywords(value) return value