3
3
from setuptools_scm ._integration .pyproject_reading import PyProjectData
4
4
from setuptools_scm ._integration .version_inference import VersionInferenceConfig
5
5
from setuptools_scm ._integration .version_inference import VersionInferenceError
6
- from setuptools_scm ._integration .version_inference import VersionInferenceException
7
6
from setuptools_scm ._integration .version_inference import VersionInferenceNoOp
8
7
from setuptools_scm ._integration .version_inference import get_version_inference_config
9
8
10
9
11
10
class TestVersionInferenceDecision :
12
11
"""Test the version inference decision logic."""
13
12
14
- def test_version_already_set_by_infer_with_overrides (self ) -> None :
15
- """Test that we proceed when version was set by infer_version but overrides provided."""
13
+ def test_version_already_set_with_overrides (self ) -> None :
14
+ """Test that we get an error when version is already set and overrides provided."""
16
15
result = get_version_inference_config (
17
16
dist_name = "test_package" ,
18
17
current_version = "1.0.0" ,
19
18
pyproject_data = PyProjectData .for_testing (True , True , True ),
20
19
overrides = {"key" : "value" },
21
- was_set_by_infer = True ,
22
20
)
23
21
24
- assert isinstance (result , VersionInferenceConfig )
25
- assert result .dist_name == "test_package"
26
- assert result .overrides == {"key" : "value" }
22
+ assert isinstance (result , VersionInferenceError )
23
+ assert "version of test_package already set" in result .message
27
24
28
- def test_version_already_set_by_infer_no_overrides (self ) -> None :
25
+ def test_version_already_set_no_overrides (self ) -> None :
29
26
"""infer_version call with existing version should be a no-op."""
30
27
result = get_version_inference_config (
31
28
dist_name = "test_package" ,
32
29
current_version = "1.0.0" ,
33
30
pyproject_data = PyProjectData .for_testing (True , True , True ),
34
31
overrides = None ,
35
- was_set_by_infer = True ,
36
32
)
37
33
38
34
assert isinstance (result , VersionInferenceNoOp )
39
35
40
- def test_version_already_set_by_infer_empty_overrides (self ) -> None :
41
- """Test that we don't re-infer when version was set by infer_version with empty overrides (version_keyword call)."""
36
+ def test_version_already_set_empty_overrides (self ) -> None :
37
+ """Test that we get an error when version is already set with empty overrides (version_keyword call)."""
42
38
result = get_version_inference_config (
43
39
dist_name = "test_package" ,
44
40
current_version = "1.0.0" ,
45
41
pyproject_data = PyProjectData .for_testing (True , True , True ),
46
42
overrides = {},
47
- was_set_by_infer = True ,
48
43
)
49
44
50
- assert isinstance (result , VersionInferenceNoOp )
45
+ assert isinstance (result , VersionInferenceError )
46
+ assert "version of test_package already set" in result .message
51
47
52
48
def test_version_already_set_by_something_else (self ) -> None :
53
49
"""infer_version call with existing version set by something else should be a no-op."""
@@ -56,7 +52,6 @@ def test_version_already_set_by_something_else(self) -> None:
56
52
current_version = "1.0.0" ,
57
53
pyproject_data = PyProjectData .for_testing (True , True , True ),
58
54
overrides = None ,
59
- was_set_by_infer = False ,
60
55
)
61
56
62
57
assert isinstance (result , VersionInferenceNoOp )
@@ -83,7 +78,8 @@ def test_no_setuptools_scm_config_infer_version(self) -> None:
83
78
dist_name = "test_package" ,
84
79
current_version = None ,
85
80
pyproject_data = PyProjectData .for_testing (False , False , True ),
86
- overrides = None , # infer_version call
81
+ overrides = None ,
82
+ # infer_version call
87
83
)
88
84
89
85
assert isinstance (result , VersionInferenceNoOp )
@@ -94,7 +90,8 @@ def test_no_setuptools_scm_config_version_keyword(self) -> None:
94
90
dist_name = "test_package" ,
95
91
current_version = None ,
96
92
pyproject_data = PyProjectData .for_testing (False , False , True ),
97
- overrides = {}, # version_keyword call with use_scm_version=True
93
+ overrides = {},
94
+ # version_keyword call with use_scm_version=True
98
95
)
99
96
100
97
assert isinstance (result , VersionInferenceConfig )
@@ -107,7 +104,8 @@ def test_setuptools_scm_required_no_project_section_infer_version(self) -> None:
107
104
dist_name = "test_package" ,
108
105
current_version = None ,
109
106
pyproject_data = PyProjectData .for_testing (True , False , False ),
110
- overrides = None , # infer_version call
107
+ overrides = None ,
108
+ # infer_version call
111
109
)
112
110
113
111
assert isinstance (result , VersionInferenceNoOp )
@@ -118,7 +116,8 @@ def test_setuptools_scm_required_no_project_section_version_keyword(self) -> Non
118
116
dist_name = "test_package" ,
119
117
current_version = None ,
120
118
pyproject_data = PyProjectData .for_testing (True , False , False ),
121
- overrides = {}, # version_keyword call with use_scm_version=True
119
+ overrides = {},
120
+ # version_keyword call with use_scm_version=True
122
121
)
123
122
124
123
assert isinstance (result , VersionInferenceConfig )
@@ -134,7 +133,8 @@ def test_setuptools_scm_required_no_project_section_version_keyword_with_config(
134
133
dist_name = "test_package" ,
135
134
current_version = None ,
136
135
pyproject_data = PyProjectData .for_testing (True , False , False ),
137
- overrides = overrides , # version_keyword call with use_scm_version={config}
136
+ overrides = overrides ,
137
+ # version_keyword call with use_scm_version={config}
138
138
)
139
139
140
140
assert isinstance (result , VersionInferenceConfig )
@@ -191,7 +191,6 @@ def test_version_already_set_none_dist_name(self) -> None:
191
191
current_version = "1.0.0" ,
192
192
pyproject_data = PyProjectData .for_testing (True , True , True ),
193
193
overrides = None ,
194
- was_set_by_infer = False ,
195
194
)
196
195
197
196
assert isinstance (result , VersionInferenceNoOp )
@@ -260,13 +259,3 @@ def test_error_default_warn(self) -> None:
260
259
"""Test VersionInferenceError default should_warn value."""
261
260
error = VersionInferenceError ("test message" )
262
261
assert error .should_warn is False
263
-
264
-
265
- class TestVersionInferenceException :
266
- """Test the VersionInferenceException dataclass."""
267
-
268
- def test_exception_creation (self ) -> None :
269
- """Test creating VersionInferenceException instances."""
270
- original_exception = ValueError ("test error" )
271
- wrapper = VersionInferenceException (original_exception )
272
- assert wrapper .exception == original_exception
0 commit comments