@@ -10,20 +10,41 @@ def test_smaller_release_sorts_first():
1010 assert Version ("1.2.0" ) < Version ("1.3.0" )
1111
1212
13+ def test_versions_with_different_lengths_compare ():
14+ assert Version ("1.2" ) < Version ("1.2.1" )
15+
16+
17+ def test_greater_than_works ():
18+ assert Version ("2.0.0" ) > Version ("1.9.9" )
19+
20+
21+ def test_unequal_versions_are_not_equal ():
22+ assert Version ("1.0.0" ) != Version ("1.0.1" )
23+
24+
1325def test_double_digit_segments_sort_numerically ():
1426 assert Version ("3.9" ) < Version ("3.10" )
1527
1628
29+ def test_sorting_a_list_of_versions ():
30+ versions = [Version ("1.10.0" ), Version ("1.2.0" ), Version ("1.9.0" )]
31+ assert sorted (versions ) == [
32+ Version ("1.2.0" ),
33+ Version ("1.9.0" ),
34+ Version ("1.10.0" ),
35+ ]
36+
37+
1738@pytest .mark .parametrize (
1839 "lower, higher" ,
1940 [
20- ("1.0.dev1" , "1.0" ), # Dev before final
21- ("1.0a1" , "1.0" ), # Pre-release before final
22- ("1.0" , "1.0.post1" ), # Post-release after final
23- ("1.0.dev1" , "1.0a1" ), # Dev before pre-release
24- ("1.0a1" , "1.0b1" ), # Alpha before beta
25- ("1.0b1" , "1.0rc1" ), # Beta before release candidate
26- ("1.0.dev1" , "1.0.post1" ), # Dev before post, spanning the release
41+ ("1.0.dev1" , "1.0" ),
42+ ("1.0a1" , "1.0" ),
43+ ("1.0" , "1.0.post1" ),
44+ ("1.0.dev1" , "1.0a1" ),
45+ ("1.0a1" , "1.0b1" ),
46+ ("1.0b1" , "1.0rc1" ),
47+ ("1.0.dev1" , "1.0.post1" ),
2748 ],
2849)
2950def test_phase_ordering (lower , higher ):
@@ -33,14 +54,17 @@ def test_phase_ordering(lower, higher):
3354@pytest .mark .parametrize (
3455 "text" ,
3556 [
36- "" , # Empty string
37- " " , # Whitespace only
38- "1.x.0" , # Non-numeric segment
39- "banana" , # Not a version at all
40- "1..0" , # Empty segment
41- "v1.0" , # Leading junk
57+ "" ,
58+ " " ,
59+ "1.x.0" ,
60+ "banana" ,
61+ "1..0" ,
4262 ],
4363)
4464def test_invalid_input_raises (text ):
4565 with pytest .raises (ValueError ):
4666 Version (text )
67+
68+
69+ def test_comparing_against_other_types_returns_notimplemented ():
70+ assert Version ("1.0" ).__eq__ ("1.0" ) is NotImplemented
0 commit comments