Skip to content

Commit 6a0adb7

Browse files
committed
Fix Relative Test
1 parent 88d96c3 commit 6a0adb7

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

cppython/plugins/cmake/builder.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@ def __init__(self) -> None:
1919

2020
@staticmethod
2121
def generate_cppython_preset(
22-
cppython_preset_directory: Path, provider_preset_file: Path, provider_data: CMakeSyncData
22+
cppython_preset_directory: Path,
23+
provider_preset_file: Path,
24+
provider_data: CMakeSyncData,
25+
project_root: Path,
2326
) -> CMakePresets:
2427
"""Generates the cppython preset which inherits from the provider presets
2528
2629
Args:
2730
cppython_preset_directory: The tool directory
2831
provider_preset_file: Path to the provider's preset file
2932
provider_data: The provider's synchronization data
33+
project_root: The project root directory (where CMakeLists.txt is located)
3034
3135
Returns:
3236
A CMakePresets object
@@ -43,8 +47,7 @@ def generate_cppython_preset(
4347
)
4448

4549
if provider_data.toolchain_file:
46-
# Make toolchain file path relative to the preset directory
47-
relative_toolchain = provider_data.toolchain_file.relative_to(cppython_preset_directory, walk_up=True)
50+
relative_toolchain = provider_data.toolchain_file.relative_to(project_root, walk_up=True)
4851
default_configure.toolchainFile = relative_toolchain.as_posix()
4952

5053
configure_presets.append(default_configure)
@@ -57,20 +60,24 @@ def generate_cppython_preset(
5760

5861
@staticmethod
5962
def write_cppython_preset(
60-
cppython_preset_directory: Path, provider_preset_file: Path, provider_data: CMakeSyncData
63+
cppython_preset_directory: Path,
64+
provider_preset_file: Path,
65+
provider_data: CMakeSyncData,
66+
project_root: Path,
6167
) -> Path:
6268
"""Write the cppython presets which inherit from the provider presets
6369
6470
Args:
6571
cppython_preset_directory: The tool directory
6672
provider_preset_file: Path to the provider's preset file
6773
provider_data: The provider's synchronization data
74+
project_root: The project root directory (where CMakeLists.txt is located)
6875
6976
Returns:
7077
A file path to the written data
7178
"""
7279
generated_preset = Builder.generate_cppython_preset(
73-
cppython_preset_directory, provider_preset_file, provider_data
80+
cppython_preset_directory, provider_preset_file, provider_data, project_root
7481
)
7582
cppython_preset_file = cppython_preset_directory / 'cppython.json'
7683

cppython/plugins/cmake/plugin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,10 @@ def sync(self, sync_data: SyncData) -> None:
6666

6767
cppython_preset_file = self._cppython_preset_directory / 'CPPython.json'
6868

69+
project_root = self.core_data.project_data.project_root
70+
6971
cppython_preset_file = self.builder.write_cppython_preset(
70-
self._cppython_preset_directory, cppython_preset_file, sync_data
72+
self._cppython_preset_directory, cppython_preset_file, sync_data, project_root
7173
)
7274

7375
self.builder.write_root_presets(

tests/unit/plugins/cmake/test_presets.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ def test_root_write(project_data: ProjectData) -> None:
8787

8888
data = CMakeSyncData(provider_name=TypeName('test-provider'))
8989

90-
cppython_preset_file = builder.write_cppython_preset(cppython_preset_directory, provider_preset_file, data)
90+
cppython_preset_file = builder.write_cppython_preset(
91+
cppython_preset_directory, provider_preset_file, data, project_data.project_root
92+
)
9193

9294
build_directory = project_data.project_root / 'build'
9395
builder.write_root_presets(
@@ -133,7 +135,11 @@ def test_relative_root_write(project_data: ProjectData) -> None:
133135

134136
data = CMakeSyncData(provider_name=TypeName('test-provider'))
135137

136-
cppython_preset_file = builder.write_cppython_preset(cppython_preset_directory, provider_preset_file, data)
138+
# For this test, the root file is in a relative indirection subdirectory
139+
project_root = root_file.parent
140+
cppython_preset_file = builder.write_cppython_preset(
141+
cppython_preset_directory, provider_preset_file, data, project_root
142+
)
137143

138144
build_directory = project_data.project_root / 'build'
139145
builder.write_root_presets(

0 commit comments

Comments
 (0)