Skip to content

Commit 9f2d867

Browse files
committed
Update CMake Preset Tests
1 parent a714544 commit 9f2d867

File tree

1 file changed

+69
-33
lines changed

1 file changed

+69
-33
lines changed

tests/unit/plugins/cmake/test_presets.py

Lines changed: 69 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,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

Comments
 (0)