def test_error_with_object(self): obj = AnsibleBaseYAMLObject() obj._data_source = 'foo.yml' obj._line_number = 1 obj._column_number = 1 m = mock_open() m.return_value.readlines.return_value = [ 'this is line 1\n', 'this is line 2\n', 'this is line 3\n' ] with patch('__builtin__.open', m): e = AnsibleError(self.message, obj) assert e.message == 'this is the error message\nThe error occurred on line 1 of the file foo.yml:\nthis is line 1\n^'
def _handle_error(self, yaml_exc, file_name, show_content): ''' Optionally constructs an object (AnsibleBaseYAMLObject) to encapsulate the file name/position where a YAML exception occured, and raises an AnsibleParserError to display the syntax exception information. ''' # if the YAML exception contains a problem mark, use it to construct # an object the error class can use to display the faulty line err_obj = None if hasattr(yaml_exc, 'problem_mark'): err_obj = AnsibleBaseYAMLObject() err_obj.set_position_info(file_name, yaml_exc.problem_mark.line + 1, yaml_exc.problem_mark.column + 1) raise AnsibleParserError(YAML_SYNTAX_ERROR, obj=err_obj, show_content=show_content)
def _handle_error(self, yaml_exc, file_name, show_content): ''' Optionally constructs an object (AnsibleBaseYAMLObject) to encapsulate the file name/position where a YAML exception occurred, and raises an AnsibleParserError to display the syntax exception information. ''' # if the YAML exception contains a problem mark, use it to construct # an object the error class can use to display the faulty line err_obj = None if hasattr(yaml_exc, 'problem_mark'): err_obj = AnsibleBaseYAMLObject() err_obj.ansible_pos = (file_name, yaml_exc.problem_mark.line + 1, yaml_exc.problem_mark.column + 1) raise AnsibleParserError(YAML_SYNTAX_ERROR, obj=err_obj, show_content=show_content)
def _playbook_items(pb_data: AnsibleBaseYAMLObject) -> ItemsView: # type: ignore if isinstance(pb_data, dict): return pb_data.items() if not pb_data: return [] # type: ignore # "if play" prevents failure if the play sequence contains None, # which is weird but currently allowed by Ansible # https://github.com/ansible-community/ansible-lint/issues/849 return [item for play in pb_data if play for item in play.items()] # type: ignore
def _handle_error(json_exc, yaml_exc, file_name, show_content): ''' Optionally constructs an object (AnsibleBaseYAMLObject) to encapsulate the file name/position where a YAML exception occurred, and raises an AnsibleParserError to display the syntax exception information. ''' # if the YAML exception contains a problem mark, use it to construct # an object the error class can use to display the faulty line err_obj = None if hasattr(yaml_exc, 'problem_mark'): err_obj = AnsibleBaseYAMLObject() err_obj.ansible_pos = (file_name, yaml_exc.problem_mark.line + 1, yaml_exc.problem_mark.column + 1) err_msg = 'We were unable to read either as JSON nor YAML, these are the errors we got from each:\n' \ 'JSON: %s\n\n' % to_text(json_exc) + YAML_SYNTAX_ERROR % getattr(yaml_exc, 'problem', '') raise AnsibleParserError(to_native(err_msg), obj=err_obj, show_content=show_content, orig_exc=yaml_exc)
def setUp(self): self.message = 'This is the error message' self.unicode_message = 'This is an error with \xf0\x9f\x98\xa8 in it' self.obj = AnsibleBaseYAMLObject()
def setUp(self): self.message = 'This is the error message' self.obj = AnsibleBaseYAMLObject()