blob: 2823dd0ddf68d26950ad5dbc46d10c3c3ed47c4d [file]
#!/usr/bin/env python3
#
# Copyright 2020 - The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Unittests for ide_util."""
import os
import unittest
from unittest import mock
from aidegen.lib import common_util
from aidegen.vscode import vscode_workspace_file_gen
# pylint: disable=protected-access
class WorkspaceProjectFileGenUnittests(unittest.TestCase):
"""Unit tests for ide_util.py."""
@mock.patch.object(vscode_workspace_file_gen, '_get_unique_project_name')
@mock.patch.object(
vscode_workspace_file_gen, '_create_code_workspace_file_content')
@mock.patch.object(common_util, 'get_android_root_dir')
def test_vscode_apply_optional_config(
self, mock_get_root, mock_ws_content, mock_get_unique):
"""Test IdeVSCode's apply_optional_config method."""
mock_get_root.return_value = 'a/b'
vscode_workspace_file_gen.generate_code_workspace_file(
['a/b/path_to_project1', 'a/b/path_to_project2'])
self.assertTrue(mock_get_root.called)
self.assertTrue(mock_ws_content.called)
self.assertTrue(mock_get_unique.called)
@mock.patch.object(common_util, 'dump_json_dict')
def test_create_code_workspace_file_content(self, mock_dump):
"""Test _create_code_workspace_file_content function."""
abs_path = 'a/b'
folder_name = 'Settings'
res = vscode_workspace_file_gen._create_code_workspace_file_content(
{'folders': [{'name': folder_name, 'path': abs_path}]})
self.assertTrue(mock_dump.called)
file_name = ''.join(
[folder_name, vscode_workspace_file_gen._VSCODE_WORKSPACE_EXT])
file_path = os.path.join(abs_path, file_name)
self.assertEqual(res, file_path)
def test_get_unique_project_name(self):
"""Test _get_unique_project_name function with conditions."""
abs_path = 'a/b/to/project'
root_dir = 'a/b'
expected = 'to.project'
result = vscode_workspace_file_gen._get_unique_project_name(
abs_path, root_dir)
self.assertEqual(result, expected)
abs_path = 'a/b'
expected = 'b'
result = vscode_workspace_file_gen._get_unique_project_name(
abs_path, root_dir)
self.assertEqual(result, expected)
if __name__ == '__main__':
unittest.main()