1#!/usr/bin/env python3
2#
3# Copyright 2020, The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#     http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17"""Unittests for xml_util."""
18
19import unittest
20from unittest import mock
21from xml.etree import ElementTree
22
23from aidegen.lib import aidegen_metrics
24from aidegen.lib import common_util
25from aidegen.lib import xml_util
26
27
28# pylint: disable=protected-access
29class XMLUtilUnittests(unittest.TestCase):
30    """Unit tests for xml_util.py"""
31
32    @mock.patch.object(common_util, 'read_file_content')
33    @mock.patch.object(aidegen_metrics, 'send_exception_metrics')
34    @mock.patch.object(ElementTree, 'parse')
35    def test_parse_xml(self, mock_parse, mock_metrics, mock_read):
36        """Test _parse_xml."""
37        mock_parse.return_value = ElementTree.ElementTree()
38        xml_util.parse_xml('a')
39        self.assertFalse(mock_metrics.called)
40        mock_parse.side_effect = ElementTree.ParseError()
41        mock_read.return_value = ''
42        xml_util.parse_xml('a')
43        self.assertTrue(mock_metrics.called)
44
45
46if __name__ == '__main__':
47    unittest.main()
48