Skip to content

Commit b6b1990

Browse files
committed
CMake Variants
1 parent 4a9d775 commit b6b1990

File tree

7 files changed

+26
-16
lines changed

7 files changed

+26
-16
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,4 @@ __pypackages__/
2525
!.vscode/launch.json
2626
!.vscode/extensions.json
2727
/.mypy_cache
28-
node_modules/
29-
build/
28+
node_modules/

cppython/plugins/cmake/schema.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class CMakeConfiguration(CPPythonModel):
6666
"""Configuration"""
6767

6868
preset_file: Annotated[
69-
FilePath,
69+
Path,
7070
Field(
7171
description="The CMakePreset.json file that will be searched for the given 'configuration_name'",
7272
),

cppython/test/schema.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
"""Data schemas for plugin testing"""
22

3+
from pathlib import Path
34
from typing import Annotated
45

5-
from pydantic import DirectoryPath, Field
6+
from pydantic import Field
67

78
from cppython.core.schema import CPPythonModel
89

@@ -12,7 +13,7 @@ class Variant[T: CPPythonModel](CPPythonModel):
1213

1314
configuration: Annotated[T, Field(description='The configuration data')]
1415
directory: Annotated[
15-
DirectoryPath | None,
16+
Path | None,
1617
Field(description='The directory to mount alongside the configuration. `tests/build/<directory>`'),
1718
] = None
1819

tests/build/cmake/non-root/inner/CMakePresets.json

Whitespace-only changes.

tests/fixtures/cmake.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,42 @@
11
"""Fixtures for the cmake plugin"""
22

3+
from pathlib import Path
34
from typing import cast
45

56
import pytest
67

78
from cppython.plugins.cmake.schema import CMakeConfiguration
9+
from cppython.test.schema import Variant, Variants
810

911

10-
def _cmake_data_list() -> list[CMakeConfiguration]:
12+
def _cmake_data_list() -> Variants[CMakeConfiguration]:
1113
"""Creates a list of mocked configuration types
1214
1315
Returns:
1416
A list of variants to test
1517
"""
16-
variants = []
18+
data = Variants[CMakeConfiguration]()
1719

1820
# Default
19-
variants.append(CMakeConfiguration(configuration_name='default'))
21+
default = CMakeConfiguration(configuration_name='default')
22+
default_variant = Variant[CMakeConfiguration](configuration=default)
2023

21-
# variants.append(CMakeConfiguration(preset_file=Path("inner/CMakePresets.json"), configuration_name="default"))
24+
# Non-root preset file
25+
config = CMakeConfiguration(preset_file=Path('inner/CMakePresets.json'), configuration_name='default')
26+
config_variant = Variant[CMakeConfiguration](configuration=config, directory=Path('cmake/non-root'))
2227

23-
return variants
28+
data.variants.append(default_variant)
29+
data.variants.append(config_variant)
30+
31+
return data
2432

2533

2634
@pytest.fixture(
2735
name='cmake_data',
2836
scope='session',
2937
params=_cmake_data_list(),
3038
)
31-
def fixture_cmake_data(request: pytest.FixtureRequest) -> CMakeConfiguration:
39+
def fixture_cmake_data(request: pytest.FixtureRequest) -> Variant[CMakeConfiguration]:
3240
"""A fixture to provide a list of configuration types
3341
3442
Args:
@@ -37,4 +45,4 @@ def fixture_cmake_data(request: pytest.FixtureRequest) -> CMakeConfiguration:
3745
Returns:
3846
A configuration type instance
3947
"""
40-
return cast(CMakeConfiguration, request.param)
48+
return cast(Variant[CMakeConfiguration], request.param)

tests/integration/plugins/cmake/test_generator.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from cppython.plugins.cmake.plugin import CMakeGenerator
88
from cppython.plugins.cmake.schema import CMakeConfiguration
99
from cppython.test.pytest.tests import GeneratorIntegrationTests
10+
from cppython.test.schema import Variant
1011

1112
pytest_plugins = ['tests.fixtures.cmake']
1213

@@ -16,7 +17,7 @@ class TestCPPythonGenerator(GeneratorIntegrationTests[CMakeGenerator]):
1617

1718
@staticmethod
1819
@pytest.fixture(name='plugin_data', scope='session')
19-
def fixture_plugin_data(cmake_data: CMakeConfiguration) -> dict[str, Any]:
20+
def fixture_plugin_data(cmake_data: Variant[CMakeConfiguration]) -> dict[str, Any]:
2021
"""A required testing hook that allows data generation
2122
2223
Args:
@@ -25,7 +26,7 @@ def fixture_plugin_data(cmake_data: CMakeConfiguration) -> dict[str, Any]:
2526
Returns:
2627
The constructed plugin data
2728
"""
28-
return cmake_data.model_dump()
29+
return cmake_data.configuration.model_dump()
2930

3031
@staticmethod
3132
@pytest.fixture(name='plugin_type', scope='session')

tests/unit/plugins/cmake/test_generator.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
CMakeSyncData,
1515
)
1616
from cppython.test.pytest.tests import GeneratorUnitTests
17+
from cppython.test.schema import Variant
1718
from cppython.utility.utility import TypeName
1819

1920
pytest_plugins = ['tests.fixtures.cmake']
@@ -24,7 +25,7 @@ class TestCPPythonGenerator(GeneratorUnitTests[CMakeGenerator]):
2425

2526
@staticmethod
2627
@pytest.fixture(name='plugin_data', scope='session')
27-
def fixture_plugin_data(cmake_data: CMakeConfiguration) -> dict[str, Any]:
28+
def fixture_plugin_data(cmake_data: Variant[CMakeConfiguration]) -> dict[str, Any]:
2829
"""A required testing hook that allows data generation
2930
3031
Args:
@@ -33,7 +34,7 @@ def fixture_plugin_data(cmake_data: CMakeConfiguration) -> dict[str, Any]:
3334
Returns:
3435
The constructed plugin data
3536
"""
36-
return cmake_data.model_dump()
37+
return cmake_data.configuration.model_dump()
3738

3839
@staticmethod
3940
@pytest.fixture(name='plugin_type', scope='session')

0 commit comments

Comments
 (0)