xref: /aosp_15_r20/external/pigweed/pw_ide/py/vscode_test.py (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2022 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker"""Tests for pw_ide.editors"""
15*61c4878aSAndroid Build Coastguard Worker
16*61c4878aSAndroid Build Coastguard Workerimport unittest
17*61c4878aSAndroid Build Coastguard Worker
18*61c4878aSAndroid Build Coastguard Workerfrom pw_ide.vscode import VscSettingsManagerNoSideEffects, VscSettingsType
19*61c4878aSAndroid Build Coastguard Worker
20*61c4878aSAndroid Build Coastguard Workerfrom test_cases import PwIdeTestCase
21*61c4878aSAndroid Build Coastguard Worker
22*61c4878aSAndroid Build Coastguard Worker
23*61c4878aSAndroid Build Coastguard Workerclass TestVscSettingsManager(PwIdeTestCase):
24*61c4878aSAndroid Build Coastguard Worker    """Tests VscSettingsManager"""
25*61c4878aSAndroid Build Coastguard Worker
26*61c4878aSAndroid Build Coastguard Worker    def test_setup(self):
27*61c4878aSAndroid Build Coastguard Worker        """Test realistic setup procedure. Success == doesn't raise."""
28*61c4878aSAndroid Build Coastguard Worker
29*61c4878aSAndroid Build Coastguard Worker        ide_settings = self.make_ide_settings()
30*61c4878aSAndroid Build Coastguard Worker
31*61c4878aSAndroid Build Coastguard Worker        manager = VscSettingsManagerNoSideEffects(
32*61c4878aSAndroid Build Coastguard Worker            ide_settings, self.temp_dir_path
33*61c4878aSAndroid Build Coastguard Worker        )
34*61c4878aSAndroid Build Coastguard Worker
35*61c4878aSAndroid Build Coastguard Worker        with manager.active(
36*61c4878aSAndroid Build Coastguard Worker            VscSettingsType.SETTINGS
37*61c4878aSAndroid Build Coastguard Worker        ).build() as active_settings:
38*61c4878aSAndroid Build Coastguard Worker            manager.default(VscSettingsType.SETTINGS).sync_to(active_settings)
39*61c4878aSAndroid Build Coastguard Worker            manager.project(VscSettingsType.SETTINGS).sync_to(active_settings)
40*61c4878aSAndroid Build Coastguard Worker            manager.user(VscSettingsType.SETTINGS).sync_to(active_settings)
41*61c4878aSAndroid Build Coastguard Worker
42*61c4878aSAndroid Build Coastguard Worker        with manager.active(VscSettingsType.TASKS).build() as active_settings:
43*61c4878aSAndroid Build Coastguard Worker            manager.default(VscSettingsType.TASKS).sync_to(active_settings)
44*61c4878aSAndroid Build Coastguard Worker            manager.project(VscSettingsType.TASKS).sync_to(active_settings)
45*61c4878aSAndroid Build Coastguard Worker            manager.user(VscSettingsType.TASKS).sync_to(active_settings)
46*61c4878aSAndroid Build Coastguard Worker
47*61c4878aSAndroid Build Coastguard Worker        with manager.active(
48*61c4878aSAndroid Build Coastguard Worker            VscSettingsType.EXTENSIONS
49*61c4878aSAndroid Build Coastguard Worker        ).build() as active_settings:
50*61c4878aSAndroid Build Coastguard Worker            manager.default(VscSettingsType.EXTENSIONS).sync_to(active_settings)
51*61c4878aSAndroid Build Coastguard Worker            manager.project(VscSettingsType.EXTENSIONS).sync_to(active_settings)
52*61c4878aSAndroid Build Coastguard Worker            manager.user(VscSettingsType.EXTENSIONS).sync_to(active_settings)
53*61c4878aSAndroid Build Coastguard Worker
54*61c4878aSAndroid Build Coastguard Worker    def test_json5(self):
55*61c4878aSAndroid Build Coastguard Worker        """Test that we can parse JSON5 files."""
56*61c4878aSAndroid Build Coastguard Worker        content = """{
57*61c4878aSAndroid Build Coastguard Worker    // This is a comment, and this list has a trailing comma.
58*61c4878aSAndroid Build Coastguard Worker    "_pw": [
59*61c4878aSAndroid Build Coastguard Worker        "foo",
60*61c4878aSAndroid Build Coastguard Worker        "bar",
61*61c4878aSAndroid Build Coastguard Worker        "baz",
62*61c4878aSAndroid Build Coastguard Worker    ]
63*61c4878aSAndroid Build Coastguard Worker}
64*61c4878aSAndroid Build Coastguard Worker        """
65*61c4878aSAndroid Build Coastguard Worker
66*61c4878aSAndroid Build Coastguard Worker        self.touch_temp_file('pw_project_settings.json', content)
67*61c4878aSAndroid Build Coastguard Worker
68*61c4878aSAndroid Build Coastguard Worker        ide_settings = self.make_ide_settings()
69*61c4878aSAndroid Build Coastguard Worker
70*61c4878aSAndroid Build Coastguard Worker        manager = VscSettingsManagerNoSideEffects(
71*61c4878aSAndroid Build Coastguard Worker            ide_settings, self.temp_dir_path
72*61c4878aSAndroid Build Coastguard Worker        )
73*61c4878aSAndroid Build Coastguard Worker
74*61c4878aSAndroid Build Coastguard Worker        with manager.active(
75*61c4878aSAndroid Build Coastguard Worker            VscSettingsType.SETTINGS
76*61c4878aSAndroid Build Coastguard Worker        ).build() as active_settings:
77*61c4878aSAndroid Build Coastguard Worker            manager.default(VscSettingsType.SETTINGS).sync_to(active_settings)
78*61c4878aSAndroid Build Coastguard Worker            manager.project(VscSettingsType.SETTINGS).sync_to(active_settings)
79*61c4878aSAndroid Build Coastguard Worker            manager.user(VscSettingsType.SETTINGS).sync_to(active_settings)
80*61c4878aSAndroid Build Coastguard Worker
81*61c4878aSAndroid Build Coastguard Worker        active_settings = manager.active(VscSettingsType.SETTINGS).get()
82*61c4878aSAndroid Build Coastguard Worker        self.assertIn('_pw', active_settings.keys())
83*61c4878aSAndroid Build Coastguard Worker        self.assertEqual(len(active_settings['_pw']), 3)
84*61c4878aSAndroid Build Coastguard Worker
85*61c4878aSAndroid Build Coastguard Worker
86*61c4878aSAndroid Build Coastguard Workerif __name__ == '__main__':
87*61c4878aSAndroid Build Coastguard Worker    unittest.main()
88