22 from robot.utils import abspath, find_file, get_error_details, DotDict, NormalizedDict
24 from .resolvable
import GlobalVariableValue
25 from .variables
import Variables
44 _all_scopes = property
47 return reversed(self.
_scopes_scopes)
50 _scopes_until_suite = property
55 if scope
is self.
_suite_suite:
59 _scopes_until_test = property
64 if scope
is self.
_test_test:
85 self.
_test_test =
None
89 kw = self.
_suite_suite.copy()
107 def replace_list(self, items, replace_until=None, ignore_errors=False):
119 if variables
is None:
120 variables = scope.set_from_file(path, args, overwrite)
122 scope.set_from_file(variables, overwrite=overwrite)
126 scope.set_from_variable_table(variables, overwrite)
130 scope.resolve_delayed()
141 name =
'$' + name[1:]
145 def set_suite(self, name, value, top=False, children=False):
147 self.
_scopes_scopes[1][name] = value
155 if self.
_test_test
is None:
156 raise VariableError(
'Cannot set test variable when no test is started.')
176 _import_by_path_ends = (
'.py',
'/', os.sep,
'.yaml',
'.yml')
184 for name, args
in settings.variable_files:
187 name =
find_file(name, file_type=
'Variable file')
193 for varstr
in settings.variables:
195 name, value = varstr.split(
':', 1)
197 name, value = varstr,
''
198 self[
'${%s}' % name] = value
201 for name, value
in [(
'${TEMPDIR}',
abspath(tempfile.gettempdir())),
204 'include':
Tags(settings.include),
205 'exclude':
Tags(settings.exclude),
206 'skip':
Tags(settings.skip),
207 'skip_on_failure':
Tags(settings.skip_on_failure)
210 (
'${:}', os.pathsep),
211 (
'${\\n}', os.linesep),
217 (
'${OUTPUT_DIR}', settings.output_directory),
218 (
'${OUTPUT_FILE}', settings.output
or 'NONE'),
219 (
'${REPORT_FILE}', settings.report
or 'NONE'),
220 (
'${LOG_FILE}', settings.log
or 'NONE'),
221 (
'${DEBUG_FILE}', settings.debug_file
or 'NONE'),
222 (
'${LOG_LEVEL}', settings.log_level),
223 (
'${PREV_TEST_NAME}',
''),
224 (
'${PREV_TEST_STATUS}',
''),
225 (
'${PREV_TEST_MESSAGE}',
'')]:
252 self.
_test_test =
None
262 for scope
in self.
_scopes_scopes:
267 self.
_suite_suite[name] = value
270 for scope
in reversed(self.
_scopes_scopes):
272 if scope
is self.
_test_test:
276 self.
_scopes_scopes[-1][name] = value
279 for name, value
in self.
_scopes_scopes[-1].items():
280 variables[name] = value
Used when variable does not exist.
Custom dictionary implementation automatically normalizing keys.
def _set_cli_variables(self, settings)
tuple _import_by_path_ends
def _set_built_in_variables(self, settings)
def __init__(self, settings)
def set_suite(self, name, value)
def set_global(self, name, value)
def update(self, variables)
def set_test(self, name, value)
def set_keyword(self, name, value)
def _scopes_until_test(self)
def set_from_file(self, path, args, overwrite=False)
def resolve_delayed(self)
def set_global(self, name, value)
def __getitem__(self, name)
def __setitem__(self, name, value)
def __init__(self, settings)
def set_test(self, name, value)
def __contains__(self, name)
def set_local_variable(self, name, value)
def set_from_variable_table(self, variables, overwrite=False)
def replace_list(self, items, replace_until=None, ignore_errors=False)
def replace_scalar(self, items, ignore_errors=False)
def as_dict(self, decoration=True)
def _set_global_suite_or_test(self, scope, name, value)
def set_keyword(self, name, value)
def replace_string(self, string, custom_unescaper=None, ignore_errors=False)
def _scopes_until_suite(self)
def set_suite(self, name, value, top=False, children=False)
Represents a set of variables.
def set_from_file(self, path_or_variables, args=None, overwrite=False)
def get_error_details(full_traceback=True, exclude_robot_traces=EXCLUDE_ROBOT_TRACES)
Returns error message and details of the last occurred exception.
def abspath(path, case_normalize=False)
Replacement for os.path.abspath with some enhancements and bug fixes.
def find_file(path, basedir='.', file_type=None)