Merge "AIDEGen: add more unittests to config_unittest.py to increase code coverage to over 85%"
am: d2cf200bd4
Change-Id: I56accdd711b3df0715942e73c3c6b32c9c6a9f39
diff --git a/aidegen/lib/config_unittest.py b/aidegen/lib/config_unittest.py
index b51c356..a31ad78 100644
--- a/aidegen/lib/config_unittest.py
+++ b/aidegen/lib/config_unittest.py
@@ -16,10 +16,9 @@
"""Unittests for AidegenConfig class."""
-import os
import unittest
+from unittest import mock
-from aidegen import unittest_constants
from aidegen.lib import config
from aidegen.lib import common_util
@@ -28,30 +27,105 @@
class AidegenConfigUnittests(unittest.TestCase):
"""Unit tests for config.py"""
- _ENABLE_DEBUG_CONFIG_FILE = 'enable_debugger.iml'
- _TEST_API_LEVEL = '28'
- _TEST_DATA_PATH = unittest_constants.TEST_DATA_PATH
- _ANDROID_PROJECT_PATH = os.path.join(_TEST_DATA_PATH, 'android_project')
- _ENABLE_DEBUGGER_IML_SAMPLE = os.path.join(_TEST_DATA_PATH,
- _ENABLE_DEBUG_CONFIG_FILE)
- _GENERATED_ENABLE_DEBUGGER_IML = os.path.join(_ANDROID_PROJECT_PATH,
- _ENABLE_DEBUG_CONFIG_FILE)
+ @mock.patch('logging.info')
+ @mock.patch('logging.error')
+ @mock.patch('builtins.open')
+ @mock.patch('os.path.exists')
+ def test_load_aidegen_config(self, mock_exists, mock_open, mock_error,
+ mock_info):
+ """Test _load_aidegen_config."""
+ mock_exists.return_value = True
+ cfg = config.AidegenConfig()
+ mock_open.side_effect = IOError()
+ with self.assertRaises(IOError):
+ cfg._load_aidegen_config()
+ self.assertTrue(mock_error.called)
+ self.assertFalse(mock_info.called)
+ mock_open.reset()
+ mock_open.side_effect = ValueError()
+ cfg._load_aidegen_config()
+ self.assertTrue(mock_info.called)
- def test_gen_enable_debugger_config(self):
+ @mock.patch('json.dump')
+ @mock.patch('builtins.open')
+ @mock.patch.object(config.AidegenConfig, '_is_config_modified')
+ def test_save_aidegen_config(self, mock_is_modified, mock_open, mock_dump):
+ """Test _save_aidegen_config."""
+ mock_is_modified.return_value = False
+ cfg = config.AidegenConfig()
+ cfg._save_aidegen_config()
+ self.assertFalse(mock_open.called)
+ self.assertFalse(mock_dump.called)
+ mock_is_modified.return_value = True
+ cfg._save_aidegen_config()
+ self.assertTrue(mock_open.called)
+ self.assertTrue(mock_dump.called)
+
+ @mock.patch('logging.warning')
+ @mock.patch.object(config.AidegenConfig, '_gen_enable_debugger_config')
+ @mock.patch.object(config.AidegenConfig, '_gen_empty_androidmanifest')
+ @mock.patch.object(config.AidegenConfig, '_gen_enable_debug_sub_dir')
+ def test_create_enable_debugger(self, mock_debug, mock_empty, mock_enable,
+ mock_warning):
+ """Test create_enable_debugger_module."""
+ cfg = config.AidegenConfig()
+ mock_debug.side_effect = IOError()
+ self.assertFalse(cfg.create_enable_debugger_module(0))
+ self.assertTrue(mock_warning.called)
+ mock_debug.side_effect = OSError()
+ self.assertFalse(cfg.create_enable_debugger_module(0))
+ self.assertTrue(mock_warning.called)
+ mock_empty.side_effect = IOError()
+ self.assertFalse(cfg.create_enable_debugger_module(0))
+ self.assertTrue(mock_warning.called)
+ mock_empty.side_effect = OSError()
+ self.assertFalse(cfg.create_enable_debugger_module(0))
+ self.assertTrue(mock_warning.called)
+ mock_enable.side_effect = IOError()
+ self.assertFalse(cfg.create_enable_debugger_module(0))
+ self.assertTrue(mock_warning.called)
+ mock_enable.side_effect = OSError()
+ self.assertFalse(cfg.create_enable_debugger_module(0))
+ self.assertTrue(mock_warning.called)
+
+ @mock.patch.object(common_util, 'file_generate')
+ @mock.patch.object(common_util, 'read_file_content')
+ @mock.patch('os.path.exists')
+ def test_gen_enable_debugger_config(self, mock_exists, mock_read, mock_gen):
"""Test _gen_enable_debugger_config."""
- try:
- _cfg = config.AidegenConfig()
- _cfg.DEBUG_ENABLED_FILE_PATH = os.path.join(
- self._ANDROID_PROJECT_PATH, _cfg._ENABLE_DEBUG_CONFIG_FILE)
- _cfg._gen_enable_debugger_config(self._TEST_API_LEVEL)
- expected_content = common_util.read_file_content(
- self._ENABLE_DEBUGGER_IML_SAMPLE)
- test_content = common_util.read_file_content(
- self._GENERATED_ENABLE_DEBUGGER_IML)
- self.assertEqual(test_content, expected_content)
- finally:
- if os.path.exists(self._GENERATED_ENABLE_DEBUGGER_IML):
- os.remove(self._GENERATED_ENABLE_DEBUGGER_IML)
+ cfg = config.AidegenConfig()
+ mock_exists.return_value = True
+ cfg._gen_enable_debugger_config(0)
+ self.assertFalse(mock_read.called)
+ self.assertFalse(mock_gen.called)
+ mock_exists.return_value = False
+ cfg._gen_enable_debugger_config(0)
+ self.assertTrue(mock_read.called)
+ self.assertTrue(mock_gen.called)
+
+ @mock.patch.object(common_util, 'file_generate')
+ @mock.patch('os.path.exists')
+ def test_gen_empty_androidmanifest(self, mock_exists, mock_gen):
+ """Test _gen_empty_androidmanifest."""
+ cfg = config.AidegenConfig()
+ mock_exists.return_value = True
+ cfg._gen_empty_androidmanifest()
+ self.assertFalse(mock_gen.called)
+ mock_exists.return_value = False
+ cfg._gen_empty_androidmanifest()
+ self.assertTrue(mock_gen.called)
+
+ @mock.patch('os.makedirs')
+ @mock.patch('os.path.exists')
+ def test_create_config_folder(self, mock_exists, mock_makedirs):
+ """Test _create_config_folder."""
+ cfg = config.AidegenConfig()
+ mock_exists.return_value = True
+ cfg._create_config_folder()
+ self.assertFalse(mock_makedirs.called)
+ mock_exists.return_value = False
+ cfg._create_config_folder()
+ self.assertTrue(mock_makedirs.called)
if __name__ == '__main__':