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