11"""Tests for CMakePresets"""
22
3+ import json
34from pathlib import Path
45
56from cppython .core .schema import ProjectData
@@ -53,22 +54,6 @@ def test_generate_root_preset_existing(project_data: ProjectData) -> None:
5354class TestWrites :
5455 """Tests for writing the CMakePresets class"""
5556
56- @staticmethod
57- def test_provider_write (tmp_path : Path ) -> None :
58- """Verifies that the provider preset writing works as intended
59-
60- Args:
61- tmp_path: The input path the use
62- """
63- builder = Builder ()
64-
65- includes_file = tmp_path / 'includes.cmake'
66- with includes_file .open ('w' , encoding = 'utf-8' ) as file :
67- file .write ('example contents' )
68-
69- data = CMakeSyncData (provider_name = TypeName ('test-provider' ), top_level_includes = includes_file )
70- builder .write_provider_preset (tmp_path , data )
71-
7257 @staticmethod
7358 def test_cppython_write (tmp_path : Path ) -> None :
7459 """Verifies that the cppython preset writing works as intended
@@ -78,17 +63,48 @@ def test_cppython_write(tmp_path: Path) -> None:
7863 """
7964 builder = Builder ()
8065
81- provider_directory = tmp_path / 'providers'
82- provider_directory .mkdir (parents = True , exist_ok = True )
83-
84- includes_file = provider_directory / 'includes.cmake'
85- with includes_file .open ('w' , encoding = 'utf-8' ) as file :
86- file .write ('example contents' )
87-
88- data = CMakeSyncData (provider_name = TypeName ('test-provider' ), top_level_includes = includes_file )
89- builder .write_provider_preset (provider_directory , data )
90-
91- builder .write_cppython_preset (tmp_path , provider_directory , data )
66+ # Create a mock provider preset file
67+ provider_preset_file = tmp_path / 'provider.json'
68+ provider_preset = {
69+ "version" : 9 ,
70+ "configurePresets" : [
71+ {"name" : "test-provider-base" , "hidden" : True },
72+ {"name" : "test-provider-release" , "hidden" : True , "inherits" : "test-provider-base" },
73+ {"name" : "test-provider-debug" , "hidden" : True , "inherits" : "test-provider-base" }
74+ ],
75+ "buildPresets" : [
76+ {
77+ "name" : "test-provider-multi-release" ,
78+ "configurePreset" : "test-provider-base" ,
79+ "configuration" : "Release" ,
80+ "hidden" : True
81+ },
82+ {
83+ "name" : "test-provider-multi-debug" ,
84+ "configurePreset" : "test-provider-base" ,
85+ "configuration" : "Debug" ,
86+ "hidden" : True
87+ },
88+ {
89+ "name" : "test-provider-release" ,
90+ "configurePreset" : "test-provider-release" ,
91+ "configuration" : "Release" ,
92+ "hidden" : True
93+ },
94+ {
95+ "name" : "test-provider-debug" ,
96+ "configurePreset" : "test-provider-debug" ,
97+ "configuration" : "Debug" ,
98+ "hidden" : True
99+ }
100+ ]
101+ }
102+
103+ with provider_preset_file .open ('w' , encoding = 'utf-8' ) as file :
104+ json .dump (provider_preset , file , indent = 4 )
105+
106+ data = CMakeSyncData (provider_name = TypeName ('test-provider' ), preset_file = provider_preset_file )
107+ builder .write_cppython_preset (tmp_path , provider_preset_file , data )
92108
93109 @staticmethod
94110 def test_root_write (project_data : ProjectData ) -> None :
@@ -116,10 +132,20 @@ def test_root_write(project_data: ProjectData) -> None:
116132 with open (root_file , 'w' , encoding = 'utf8' ) as file :
117133 file .write (serialized )
118134
119- data = CMakeSyncData (provider_name = TypeName ('test-provider' ), top_level_includes = includes_file )
120- builder .write_provider_preset (provider_directory , data )
135+ # Create a mock provider preset file
136+ provider_preset_file = provider_directory / "CMakePresets.json"
137+ provider_preset_data = {
138+ "version" : 3 ,
139+ "configurePresets" : [
140+ {"name" : "test-provider-base" , "hidden" : True }
141+ ]
142+ }
143+ with provider_preset_file .open ('w' ) as f :
144+ json .dump (provider_preset_data , f )
121145
122- cppython_preset_file = builder .write_cppython_preset (cppython_preset_directory , provider_directory , data )
146+ data = CMakeSyncData (provider_name = TypeName ('test-provider' ), preset_file = provider_preset_file )
147+
148+ cppython_preset_file = builder .write_cppython_preset (cppython_preset_directory , provider_preset_file , data )
123149
124150 build_directory = project_data .project_root / 'build'
125151 builder .write_root_presets (
@@ -157,10 +183,20 @@ def test_relative_root_write(project_data: ProjectData) -> None:
157183 with open (root_file , 'w' , encoding = 'utf8' ) as file :
158184 file .write (serialized )
159185
160- data = CMakeSyncData (provider_name = TypeName ('test-provider' ), top_level_includes = includes_file )
161- builder .write_provider_preset (provider_directory , data )
186+ # Create a mock provider preset file
187+ provider_preset_file = provider_directory / "CMakePresets.json"
188+ provider_preset_data = {
189+ "version" : 3 ,
190+ "configurePresets" : [
191+ {"name" : "test-provider-base" , "hidden" : True }
192+ ]
193+ }
194+ with provider_preset_file .open ('w' ) as f :
195+ json .dump (provider_preset_data , f )
196+
197+ data = CMakeSyncData (provider_name = TypeName ('test-provider' ), preset_file = provider_preset_file )
162198
163- cppython_preset_file = builder .write_cppython_preset (cppython_preset_directory , provider_directory , data )
199+ cppython_preset_file = builder .write_cppython_preset (cppython_preset_directory , provider_preset_file , data )
164200
165201 build_directory = project_data .project_root / 'build'
166202 builder .write_root_presets (
0 commit comments