8
8
from unittest .mock import MagicMock , Mock
9
9
10
10
import pytest
11
+ from packaging .specifiers import SpecifierSet
11
12
12
13
from pipdeptree ._models import DistPackage , ReqPackage
13
14
from pipdeptree ._models .package import Package
@@ -169,15 +170,15 @@ def test_dist_package_key_pep503_normalized() -> None:
169
170
170
171
171
172
def test_req_package_key_pep503_normalized () -> None :
172
- bar_req = MagicMock (version = "4.1.0" , specifier = [">=4.0" ])
173
+ bar_req = MagicMock (specifier = [">=4.0" ])
173
174
bar_req .name = "bar.bar-bar-bar"
174
175
rp = ReqPackage (bar_req )
175
176
assert rp .key == "bar-bar-bar-bar"
176
177
177
178
178
179
def test_req_package_render_as_root () -> None :
179
180
bar = Mock (metadata = {"Name" : "bar" }, version = "4.1.0" )
180
- bar_req = MagicMock (version = "4.1.0" , specifier = [">=4.0" ])
181
+ bar_req = MagicMock (specifier = [">=4.0" ])
181
182
bar_req .name = "bar"
182
183
rp = ReqPackage (bar_req , dist = bar )
183
184
is_frozen = False
@@ -189,7 +190,7 @@ def test_req_package_render_as_root_with_frozen() -> None:
189
190
bar = Mock (metadata = {"Name" : "bar" }, version = "4.1.0" )
190
191
bar .read_text = Mock (return_value = json_text )
191
192
d = DistPackage (bar )
192
- bar_req = MagicMock (version = "4.1.0" , specifier = [">=4.0" ])
193
+ bar_req = MagicMock (specifier = [">=4.0" ])
193
194
bar_req .name = "bar"
194
195
rp = ReqPackage (bar_req , dist = d )
195
196
is_frozen = True
@@ -199,16 +200,26 @@ def test_req_package_render_as_root_with_frozen() -> None:
199
200
200
201
def test_req_package_render_as_branch () -> None :
201
202
bar = Mock (metadata = {"Name" : "bar" }, version = "4.1.0" )
202
- bar_req = MagicMock (version = "4.1.0" , specifier = [">=4.0" ])
203
+ bar_req = MagicMock (specifier = [">=4.0" ])
203
204
bar_req .name = "bar"
204
205
rp = ReqPackage (bar_req , dist = bar )
205
206
is_frozen = False
206
207
assert rp .render_as_branch (frozen = is_frozen ) == "bar [required: >=4.0, installed: 4.1.0]"
207
208
208
209
210
+ def test_req_package_is_conflicting_handle_dev_versions () -> None :
211
+ # ensure that we can handle development versions when detecting conflicts
212
+ # see https://github.com/tox-dev/pipdeptree/issues/393
213
+ bar = Mock (metadata = {"Name" : "bar" }, version = "1.2.3.dev0" )
214
+ bar_req = MagicMock (specifier = SpecifierSet (">1.2.0" ))
215
+ bar_req .name = "bar"
216
+ rp = ReqPackage (bar_req , dist = bar )
217
+ assert not rp .is_conflicting ()
218
+
219
+
209
220
def test_req_package_as_dict () -> None :
210
221
bar = Mock (metadata = {"Name" : "bar" }, version = "4.1.0" )
211
- bar_req = MagicMock (version = "4.1.0" , specifier = [">=4.0" ])
222
+ bar_req = MagicMock (specifier = [">=4.0" ])
212
223
bar_req .name = "bar"
213
224
rp = ReqPackage (bar_req , dist = bar )
214
225
result = rp .as_dict ()
@@ -218,7 +229,7 @@ def test_req_package_as_dict() -> None:
218
229
219
230
def test_req_package_as_dict_with_no_version_spec () -> None :
220
231
bar = Mock (key = "bar" , version = "4.1.0" )
221
- bar_req = MagicMock (version = "4.1.0" , specifier = [])
232
+ bar_req = MagicMock (specifier = [])
222
233
bar_req .name = "bar"
223
234
rp = ReqPackage (bar_req , dist = bar )
224
235
result = rp .as_dict ()
0 commit comments