16 from robot.utils import normalize, normalize_whitespace, RecommendationFinder
18 from .tokens
import Token
37 name_and_arguments = (
50 name_arguments_and_with_name = (
58 def lex(self, statement):
59 setting = statement[0]
62 name = self.
languageslanguages.settings.get(name, name)
64 name = self.
aliasesaliases[name]
66 self.
_validate_validate(orig, name, statement)
67 except ValueError
as err:
68 self.
_lex_error_lex_error(setting, statement[1:], err.args[0])
70 self.
_lex_setting_lex_setting(setting, statement[1:], name)
76 if name
not in self.
settingssettings:
78 raise ValueError(message)
79 if self.
settingssettings[name]
is not None and name
not in self.
multi_usemulti_use:
80 raise ValueError(
"Setting '%s' is allowed only once. "
81 "Only the first value is used." % orig)
82 if name
in self.
single_valuesingle_value
and len(statement) > 2:
83 raise ValueError(
"Setting '%s' accepts only one value, got %s."
84 % (orig, len(statement) - 1))
87 if normalized
in (set(TestCaseFileSettings.names) |
88 set(TestCaseFileSettings.aliases)):
89 is_resource = isinstance(self, ResourceFileSettings)
90 return "Setting '%s' is not allowed in %s file." % (
91 name,
'resource' if is_resource
else 'suite initialization'
93 return RecommendationFinder(normalize).find_and_format(
96 message=
"Non-existing setting '%s'." % name
100 setting.set_error(error)
102 token.type = Token.COMMENT
105 self.
settingssettings[name] = values
107 setting.type = name.upper()
if name !=
'Test Tags' else 'FORCE TAGS'
117 tokens[0].type = Token.NAME
122 if len(tokens) > 1
and \
124 tokens[-2].type = Token.WITH_NAME
125 tokens[-1].type = Token.NAME
129 token.type = Token.ARGUMENT
150 'Force Tags':
'Test Tags',
151 'Task Tags':
'Test Tags',
152 'Task Setup':
'Test Setup',
153 'Task Teardown':
'Test Teardown',
154 'Task Template':
'Test Template',
155 'Task Timeout':
'Test Timeout',
175 'Force Tags':
'Test Tags',
176 'Task Tags':
'Test Tags',
177 'Task Setup':
'Test Setup',
178 'Task Teardown':
'Test Teardown',
179 'Task Timeout':
'Test Timeout',
208 return name[1:-1].strip()
211 template_set = property
214 template = self.
settingssettings[
'Template']
217 parent_template = self.
parentparent.settings[
'Test Template']
223 return setting == []
or setting[0].value.upper() ==
'NONE'
226 return setting
and setting[0].value
240 return name[1:-1].strip()
def _format_name(self, name)
def __init__(self, languages)
def _format_name(self, name)
def _validate(self, orig, name, statement)
def _lex_name_arguments_and_with_name(self, tokens)
def _lex_setting(self, setting, values, name)
def _lex_arguments(self, tokens)
def _lex_error(self, setting, values, error)
tuple name_arguments_and_with_name
def _lex_name_and_arguments(self, tokens)
def _get_non_existing_setting_message(self, name, normalized)
def _format_name(self, name)
def _has_disabling_value(self, setting)
def _has_value(self, setting)
def __init__(self, parent, markers)
def normalize_whitespace(string)