Skip to content

Commit 3ea5fa6

Browse files
committed
Update CMake Preset Tests
1 parent a714544 commit 3ea5fa6

File tree

1 file changed

+59
-33
lines changed

1 file changed

+59
-33
lines changed

tests/unit/plugins/cmake/test_presets.py

Lines changed: 59 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Tests for CMakePresets"""
22

3+
import json
34
from pathlib import Path
45

56
from cppython.core.schema import ProjectData
@@ -53,22 +54,6 @@ def test_generate_root_preset_existing(project_data: ProjectData) -> None:
5354
class 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

Comments
 (0)