class _VariableStash(object): # Since Robot 2.8 some robot.variables classes and methods # expect an error_reporter argument. # The following attribute can be used to determine how they must be called: _error_reporting = 'error_reporter' in getargspec( RobotVariables._get_var_table_name_and_value ).args # Global variables copied from robot.variables.__init__.py global_variables = {'${TEMPDIR}': os.path.normpath(tempfile.gettempdir()), '${EXECDIR}': os.path.abspath('.'), '${/}': os.sep, '${:}': os.pathsep, '${SPACE}': ' ', '${EMPTY}': '', '${True}': True, '${False}': False, '${None}': None, '${null}': None, '${OUTPUT_DIR}': '', '${OUTPUT_FILE}': '', '${SUMMARY_FILE}': '', '${REPORT_FILE}': '', '${LOG_FILE}': '', '${DEBUG_FILE}': '', '${PREV_TEST_NAME}': '', '${PREV_TEST_STATUS}': '', '${PREV_TEST_MESSAGE}': '', '${CURDIR}': '.', '${TEST_NAME}': '', '@{TEST_TAGS}': '', '${TEST_STATUS}': '', '${TEST_MESSAGE}': '', '${SUITE_NAME}': '', '${SUITE_SOURCE}': '', '${SUITE_STATUS}': '', '${SUITE_MESSAGE}': ''} ARGUMENT_SOURCE = object() def __init__(self): self._vars = RobotVariables() self._sources = {} for k, v in self.global_variables.iteritems(): self.set(k, v, 'built-in') def set(self, name, value, source): self._vars[name] = value self._sources[name] = source def set_argument(self, name, value): self.set(name, value, self.ARGUMENT_SOURCE) def replace_variables(self, value): try: return self._vars.replace_scalar(value) except DataError: return self._vars.replace_string(value, ignore_errors=True) def set_from_variable_table(self, variable_table): for variable in variable_table: try: if not self._vars.has_key(variable.name): if self._error_reporting: # Robot 2.8+ _, value = self._vars._get_var_table_name_and_value( variable.name, variable.value, variable.report_invalid_syntax) else: _, value = self._vars._get_var_table_name_and_value( variable.name, variable.value) self.set(variable.name, value, variable_table.source) except DataError: if is_var(variable.name): self.set(variable.name, '', variable_table.source) def set_from_file(self, varfile_path, args): for item in variablefetcher.import_varfile(varfile_path, args): self.set(*item) def __iter__(self): for name, value in self._vars.items(): source = self._sources[name] if source == self.ARGUMENT_SOURCE: yield ArgumentInfo(name, value) else: yield VariableInfo(name, value, source)
class _VariableStash(object): # Global variables copied from robot.variables.__init__.py global_variables = {'${TEMPDIR}': os.path.normpath(tempfile.gettempdir()), '${EXECDIR}': os.path.abspath('.'), '${/}': os.sep, '${:}': os.pathsep, '${SPACE}': ' ', '${EMPTY}': '', '${True}': True, '${False}': False, '${None}': None, '${null}': None, '${OUTPUT_DIR}': '', '${OUTPUT_FILE}': '', '${SUMMARY_FILE}': '', '${REPORT_FILE}': '', '${LOG_FILE}': '', '${DEBUG_FILE}': '', '${PREV_TEST_NAME}': '', '${PREV_TEST_STATUS}': '', '${PREV_TEST_MESSAGE}': '', '${CURDIR}': '.', '${TEST_NAME}': '', '@{TEST_TAGS}': '', '${TEST_STATUS}': '', '${TEST_MESSAGE}': '', '${SUITE_NAME}': '', '${SUITE_SOURCE}': '', '${SUITE_STATUS}': '', '${SUITE_MESSAGE}': ''} ARGUMENT_SOURCE = object() def __init__(self): self._vars = RobotVariables() self._sources = {} for k, v in self.global_variables.iteritems(): self.set(k, v, 'built-in') def set(self, name, value, source): self._vars[name] = value self._sources[name] = source def set_argument(self, name, value): self.set(name, value, self.ARGUMENT_SOURCE) def replace_variables(self, value): try: return self._vars.replace_scalar(value) except DataError: return self._vars.replace_string(value, ignore_errors=True) def set_from_variable_table(self, variable_table): for variable in variable_table: try: if not self._vars.has_key(variable.name): _, value = self._vars._get_var_table_name_and_value( variable.name, variable.value) self.set(variable.name, value, variable_table.source) except DataError: if is_var(variable.name): self.set(variable.name, '', variable_table.source) def set_from_file(self, varfile_path, args): temp = RobotVariables() temp.set_from_file(varfile_path, args) for (name, value) in temp.items(): self.set(name, value, varfile_path) def __iter__(self): for name, value in self._vars.items(): source = self._sources[name] if source == self.ARGUMENT_SOURCE: yield ArgumentInfo(name, value) else: yield VariableInfo(name, value, source)
class _VariableStash(object): # Global variables copied from robot.variables.__init__.py global_variables = { '${TEMPDIR}': os.path.normpath(tempfile.gettempdir()), '${EXECDIR}': os.path.abspath('.'), '${/}': os.sep, '${:}': os.pathsep, '${SPACE}': ' ', '${EMPTY}': '', '${True}': True, '${False}': False, '${None}': None, '${null}': None, '${OUTPUT_DIR}': '', '${OUTPUT_FILE}': '', '${SUMMARY_FILE}': '', '${REPORT_FILE}': '', '${LOG_FILE}': '', '${DEBUG_FILE}': '', '${PREV_TEST_NAME}': '', '${PREV_TEST_STATUS}': '', '${PREV_TEST_MESSAGE}': '', '${CURDIR}': '.', '${TEST_NAME}': '', '@{TEST_TAGS}': '', '${TEST_STATUS}': '', '${TEST_MESSAGE}': '', '${SUITE_NAME}': '', '${SUITE_SOURCE}': '', '${SUITE_STATUS}': '', '${SUITE_MESSAGE}': '' } ARGUMENT_SOURCE = object() def __init__(self): self._vars = RobotVariables() self._sources = {} for k, v in self.global_variables.iteritems(): self.set(k, v, 'built-in') def set(self, name, value, source): self._vars[name] = value self._sources[name] = source def set_argument(self, name, value): self.set(name, value, self.ARGUMENT_SOURCE) def replace_variables(self, value): try: return self._vars.replace_scalar(value) except DataError: return self._vars.replace_string(value, ignore_errors=True) def set_from_variable_table(self, variable_table): for variable in variable_table: try: if not self._vars.has_key(variable.name): _, value = self._vars._get_var_table_name_and_value( variable.name, variable.value) self.set(variable.name, value, variable_table.source) except DataError: if is_var(variable.name): self.set(variable.name, '', variable_table.source) def set_from_file(self, varfile_path, args): for item in variablefetcher.import_varfile(varfile_path, args): self.set(*item) def __iter__(self): for name, value in self._vars.items(): source = self._sources[name] if source == self.ARGUMENT_SOURCE: yield ArgumentInfo(name, value) else: yield VariableInfo(name, value, source)