Skip to content

Commit 500ce9b

Browse files
committed
Replace Variant/Parameterization Usage
Parameterization can now happen on a per-test basis
1 parent facd72a commit 500ce9b

File tree

10 files changed

+60
-228
lines changed

10 files changed

+60
-228
lines changed

cppython/test/data/variants.py

Lines changed: 0 additions & 93 deletions
This file was deleted.

cppython/test/pytest/base_classes.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
provider_variants,
3333
scm_variants,
3434
)
35-
from cppython.test.schema import Variant
3635

3736

3837
class BaseTests[T: Plugin](metaclass=ABCMeta):
@@ -131,7 +130,7 @@ class BaseUnitTests[T: Plugin](BaseTests[T], metaclass=ABCMeta):
131130
"""Unit testing information for all plugin test classes"""
132131

133132
@staticmethod
134-
def test_feature_extraction(plugin_type: type[T], project_configuration: Variant[ProjectConfiguration]) -> None:
133+
def test_feature_extraction(plugin_type: type[T], project_configuration: ProjectConfiguration) -> None:
135134
"""Test the feature extraction of a plugin.
136135
137136
This method tests the feature extraction functionality of a plugin by asserting that the features
@@ -141,7 +140,7 @@ def test_feature_extraction(plugin_type: type[T], project_configuration: Variant
141140
plugin_type: The type of plugin to test.
142141
project_configuration: The project configuration to use for testing.
143142
"""
144-
assert plugin_type.features(project_configuration.configuration.project_root)
143+
assert plugin_type.features(project_configuration.project_root)
145144

146145
@staticmethod
147146
def test_information(plugin_type: type[T]) -> None:

cppython/test/pytest/fixtures.py

Lines changed: 24 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
# from pathlib import Path
44
from pathlib import Path
5-
from typing import cast
65

76
import pytest
87

@@ -28,13 +27,7 @@
2827
PyProject,
2928
ToolData,
3029
)
31-
from cppython.test.data.variants import (
32-
cppython_global_variants,
33-
cppython_local_variants,
34-
pep621_variants,
35-
project_variants,
36-
)
37-
from cppython.test.schema import Variant
30+
from cppython.utility.utility import TypeName
3831

3932

4033
@pytest.fixture(
@@ -58,26 +51,22 @@ def fixture_install_path(tmp_path_factory: pytest.TempPathFactory) -> Path:
5851
@pytest.fixture(
5952
name='pep621_configuration',
6053
scope='session',
61-
params=pep621_variants.variants,
6254
)
63-
def fixture_pep621_configuration(request: pytest.FixtureRequest) -> Variant[PEP621Configuration]:
55+
def fixture_pep621_configuration() -> PEP621Configuration:
6456
"""Fixture defining all testable variations of PEP621
6557
66-
Args:
67-
request: Parameterization list
68-
6958
Returns:
7059
PEP621 variant
7160
"""
72-
return cast(Variant[PEP621Configuration], request.param)
61+
return PEP621Configuration(name='unnamed', version='1.0.0')
7362

7463

7564
@pytest.fixture(
7665
name='pep621_data',
7766
scope='session',
7867
)
7968
def fixture_pep621_data(
80-
pep621_configuration: Variant[PEP621Configuration], project_configuration: Variant[ProjectConfiguration]
69+
pep621_configuration: PEP621Configuration, project_configuration: ProjectConfiguration
8170
) -> PEP621Data:
8271
"""Resolved project table fixture
8372
@@ -88,58 +77,40 @@ def fixture_pep621_data(
8877
Returns:
8978
The resolved project table
9079
"""
91-
return resolve_pep621(pep621_configuration.configuration, project_configuration.configuration, None)
80+
return resolve_pep621(pep621_configuration, project_configuration, None)
9281

9382

9483
@pytest.fixture(
9584
name='cppython_local_configuration',
9685
scope='session',
97-
params=cppython_local_variants.variants,
9886
)
99-
def fixture_cppython_local_configuration(
100-
request: pytest.FixtureRequest, install_path: Path
101-
) -> Variant[CPPythonLocalConfiguration]:
87+
def fixture_cppython_local_configuration(install_path: Path) -> CPPythonLocalConfiguration:
10288
"""Fixture defining all testable variations of CPPythonData
10389
10490
Args:
105-
request: Parameterization list
10691
install_path: The temporary install directory
10792
10893
Returns:
10994
Variation of CPPython data
11095
"""
111-
cppython_local_configuration = cast(Variant[CPPythonLocalConfiguration], request.param)
112-
113-
data = cppython_local_configuration.configuration.model_dump(by_alias=True)
114-
115-
# Pin the install location to the base temporary directory
116-
data['install-path'] = install_path
117-
118-
# Fill the plugin names with mocked values
119-
data['provider-name'] = 'mock'
120-
data['generator-name'] = 'mock'
96+
cppython_local_configuration = CPPythonLocalConfiguration(
97+
install_path=install_path, provider_name=TypeName('mock'), generator_name=TypeName('mock')
98+
)
12199

122-
new_configuration = CPPythonLocalConfiguration(**data)
123-
return Variant[CPPythonLocalConfiguration](configuration=new_configuration)
100+
return cppython_local_configuration
124101

125102

126103
@pytest.fixture(
127104
name='cppython_global_configuration',
128105
scope='session',
129-
params=cppython_global_variants.variants,
130106
)
131-
def fixture_cppython_global_configuration(request: pytest.FixtureRequest) -> Variant[CPPythonGlobalConfiguration]:
107+
def fixture_cppython_global_configuration() -> CPPythonGlobalConfiguration:
132108
"""Fixture defining all testable variations of CPPythonData
133109
134-
Args:
135-
request: Parameterization list
136-
137110
Returns:
138111
Variation of CPPython data
139112
"""
140-
cppython_global_configuration = cast(Variant[CPPythonGlobalConfiguration], request.param)
141-
142-
return cppython_global_configuration
113+
return CPPythonGlobalConfiguration()
143114

144115

145116
@pytest.fixture(
@@ -193,8 +164,8 @@ def fixture_plugin_cppython_data(
193164
scope='session',
194165
)
195166
def fixture_cppython_data(
196-
cppython_local_configuration: Variant[CPPythonLocalConfiguration],
197-
cppython_global_configuration: Variant[CPPythonGlobalConfiguration],
167+
cppython_local_configuration: CPPythonLocalConfiguration,
168+
cppython_global_configuration: CPPythonGlobalConfiguration,
198169
project_data: ProjectData,
199170
plugin_cppython_data: PluginCPPythonData,
200171
) -> CPPythonData:
@@ -210,8 +181,8 @@ def fixture_cppython_data(
210181
The resolved CPPython table
211182
"""
212183
return resolve_cppython(
213-
cppython_local_configuration.configuration,
214-
cppython_global_configuration.configuration,
184+
cppython_local_configuration,
185+
cppython_global_configuration,
215186
project_data,
216187
plugin_cppython_data,
217188
)
@@ -236,29 +207,23 @@ def fixture_core_data(cppython_data: CPPythonData, project_data: ProjectData) ->
236207
@pytest.fixture(
237208
name='project_configuration',
238209
scope='session',
239-
params=project_variants.variants,
240210
)
241-
def fixture_project_configuration(request: pytest.FixtureRequest) -> Variant[ProjectConfiguration]:
211+
def fixture_project_configuration() -> ProjectConfiguration:
242212
"""Project configuration fixture.
243213
244214
Here we provide overrides on the input variants so that we can use a temporary directory for testing purposes.
245215
246-
Args:
247-
request: Parameterized configuration data
248-
tmp_path_factory: Factory for centralized temporary directories
249-
250216
Returns:
251217
Configuration with temporary directory capabilities
252218
"""
253-
configuration = cast(Variant[ProjectConfiguration], request.param)
254-
return configuration
219+
return ProjectConfiguration(project_root=Path(), version='0.1.0')
255220

256221

257222
@pytest.fixture(
258223
name='project_data',
259224
scope='session',
260225
)
261-
def fixture_project_data(project_configuration: Variant[ProjectConfiguration]) -> ProjectData:
226+
def fixture_project_data(project_configuration: ProjectConfiguration) -> ProjectData:
262227
"""Fixture that creates a project space at 'workspace/test_project/pyproject.toml'
263228
264229
Args:
@@ -267,13 +232,13 @@ def fixture_project_data(project_configuration: Variant[ProjectConfiguration]) -
267232
Returns:
268233
A project data object that has populated a function level temporary directory
269234
"""
270-
return resolve_project_configuration(project_configuration.configuration)
235+
return resolve_project_configuration(project_configuration)
271236

272237

273238
@pytest.fixture(name='project')
274239
def fixture_project(
275-
cppython_local_configuration: Variant[CPPythonLocalConfiguration],
276-
pep621_configuration: Variant[PEP621Configuration],
240+
cppython_local_configuration: CPPythonLocalConfiguration,
241+
pep621_configuration: PEP621Configuration,
277242
) -> PyProject:
278243
"""Parameterized construction of PyProject data
279244
@@ -284,5 +249,5 @@ def fixture_project(
284249
Returns:
285250
All the data as one object
286251
"""
287-
tool = ToolData(cppython=cppython_local_configuration.configuration)
288-
return PyProject(project=pep621_configuration.configuration, tool=tool)
252+
tool = ToolData(cppython=cppython_local_configuration)
253+
return PyProject(project=pep621_configuration, tool=tool)

cppython/test/schema.py

Lines changed: 0 additions & 24 deletions
This file was deleted.

tests/fixtures/cmake.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,29 @@
66
import pytest
77

88
from cppython.plugins.cmake.schema import CMakeConfiguration
9-
from cppython.test.schema import Variant, Variants
109

1110

12-
def _cmake_data_list() -> Variants[CMakeConfiguration]:
11+
def _cmake_data_list() -> list[CMakeConfiguration]:
1312
"""Creates a list of mocked configuration types
1413
1514
Returns:
1615
A list of variants to test
1716
"""
18-
data = Variants[CMakeConfiguration]()
19-
2017
# Default
2118
default = CMakeConfiguration(configuration_name='default')
22-
default_variant = Variant[CMakeConfiguration](configuration=default)
2319

2420
# Non-root preset file
2521
config = CMakeConfiguration(preset_file=Path('inner/CMakePresets.json'), configuration_name='default')
26-
config_variant = Variant[CMakeConfiguration](configuration=config, directory=Path('cmake/non-root'))
27-
28-
data.variants.append(default_variant)
29-
data.variants.append(config_variant)
3022

31-
return data
23+
return [default, config]
3224

3325

3426
@pytest.fixture(
3527
name='cmake_data',
3628
scope='session',
3729
params=_cmake_data_list(),
3830
)
39-
def fixture_cmake_data(request: pytest.FixtureRequest) -> Variant[CMakeConfiguration]:
31+
def fixture_cmake_data(request: pytest.FixtureRequest) -> CMakeConfiguration:
4032
"""A fixture to provide a list of configuration types
4133
4234
Args:
@@ -45,4 +37,4 @@ def fixture_cmake_data(request: pytest.FixtureRequest) -> Variant[CMakeConfigura
4537
Returns:
4638
A configuration type instance
4739
"""
48-
return cast(Variant[CMakeConfiguration], request.param)
40+
return cast(CMakeConfiguration, request.param)

0 commit comments

Comments
 (0)