5
5
import pytest
6
6
7
7
from packaging .markers import Marker
8
- from packaging .requirements import URL , URL_AND_MARKER , InvalidRequirement , Requirement
8
+ from packaging .requirements import InvalidRequirement , Requirement
9
9
from packaging .specifiers import SpecifierSet
10
10
11
11
@@ -59,10 +59,20 @@ def test_name_with_version(self):
59
59
req = Requirement ("name>=3" )
60
60
self ._assert_requirement (req , "name" , specifier = ">=3" )
61
61
62
+ def test_name_with_missing_version (self ):
63
+ with pytest .raises (InvalidRequirement ) as e :
64
+ Requirement ("name>=" )
65
+ assert "Missing version" in str (e )
66
+
62
67
def test_version_with_parens_and_whitespace (self ):
63
68
req = Requirement ("name (==4)" )
64
69
self ._assert_requirement (req , "name" , specifier = "==4" )
65
70
71
+ def test_version_with_missing_closing_paren (self ):
72
+ with pytest .raises (InvalidRequirement ) as e :
73
+ Requirement ("name(==4" )
74
+ assert "Closing right parenthesis is missing" in str (e )
75
+
66
76
def test_name_with_multiple_versions (self ):
67
77
req = Requirement ("name>=3,<2" )
68
78
self ._assert_requirement (req , "name" , specifier = "<2,>=3" )
@@ -79,21 +89,27 @@ def test_empty_extras(self):
79
89
req = Requirement ("foo[]" )
80
90
self ._assert_requirement (req , "foo" )
81
91
92
+ def test_unclosed_extras (self ):
93
+ with pytest .raises (InvalidRequirement ) as e :
94
+ Requirement ("foo[" )
95
+ assert "Closing square bracket is missing" in str (e )
96
+
82
97
def test_url (self ):
83
- url_section = "@ http://example.com"
84
- parsed = URL . parseString (url_section )
85
- assert parsed . url == "http://example.com"
98
+ url_section = "test @ http://example.com"
99
+ req = Requirement (url_section )
100
+ self . _assert_requirement ( req , "test" , "http://example.com" , extras = [])
86
101
87
102
def test_url_and_marker (self ):
88
- instring = "@ http://example.com ; os_name=='a'"
89
- parsed = URL_AND_MARKER .parseString (instring )
90
- assert parsed .url == "http://example.com"
91
- assert str (parsed .marker ) == 'os_name == "a"'
103
+ instring = "test @ http://example.com ; os_name=='a'"
104
+ req = Requirement (instring )
105
+ self ._assert_requirement (
106
+ req , "test" , "http://example.com" , extras = [], marker = 'os_name == "a"'
107
+ )
92
108
93
109
def test_invalid_url (self ):
94
110
with pytest .raises (InvalidRequirement ) as e :
95
111
Requirement ("name @ gopher:/foo/com" )
96
- assert "Invalid URL: " in str (e . value )
112
+ assert "Invalid URL: " in str (e )
97
113
assert "gopher:/foo/com" in str (e .value )
98
114
99
115
def test_file_url (self ):
0 commit comments