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,15 @@ 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 = {'version' : 3 , 'configurePresets' : [{'name' : 'test-provider-base' , 'hidden' : True }]}
138+ with provider_preset_file .open ('w' ) as f :
139+ json .dump (provider_preset_data , f )
121140
122- cppython_preset_file = builder .write_cppython_preset (cppython_preset_directory , provider_directory , data )
141+ data = CMakeSyncData (provider_name = TypeName ('test-provider' ), preset_file = provider_preset_file )
142+
143+ cppython_preset_file = builder .write_cppython_preset (cppython_preset_directory , provider_preset_file , data )
123144
124145 build_directory = project_data .project_root / 'build'
125146 builder .write_root_presets (
@@ -157,10 +178,15 @@ def test_relative_root_write(project_data: ProjectData) -> None:
157178 with open (root_file , 'w' , encoding = 'utf8' ) as file :
158179 file .write (serialized )
159180
160- data = CMakeSyncData (provider_name = TypeName ('test-provider' ), top_level_includes = includes_file )
161- builder .write_provider_preset (provider_directory , data )
181+ # Create a mock provider preset file
182+ provider_preset_file = provider_directory / 'CMakePresets.json'
183+ provider_preset_data = {'version' : 3 , 'configurePresets' : [{'name' : 'test-provider-base' , 'hidden' : True }]}
184+ with provider_preset_file .open ('w' ) as f :
185+ json .dump (provider_preset_data , f )
186+
187+ data = CMakeSyncData (provider_name = TypeName ('test-provider' ), preset_file = provider_preset_file )
162188
163- cppython_preset_file = builder .write_cppython_preset (cppython_preset_directory , provider_directory , data )
189+ cppython_preset_file = builder .write_cppython_preset (cppython_preset_directory , provider_preset_file , data )
164190
165191 build_directory = project_data .project_root / 'build'
166192 builder .write_root_presets (
0 commit comments