@@ -557,37 +557,100 @@ def test_should_compare_version_dictionaries():
557557 assert not (v1 == v4 )
558558
559559
560- def test_should_compare_version_tuples ():
561- v0 = VersionInfo (major = 0 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
562- v1 = VersionInfo (major = 3 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
563- for t in (
560+ @pytest .mark .parametrize (
561+ "t" , # fmt: off
562+ (
564563 (1 , 0 , 0 ),
565564 (1 , 0 ),
566565 (1 ,),
567566 (1 , 0 , 0 , "pre.2" ),
568567 (1 , 0 , 0 , "pre.2" , "build.4" ),
569- ):
570- assert v0 < t
571- assert v0 <= t
572- assert v0 != t
573- assert not v0 == t
574- assert v1 > t
575- assert v1 >= t
576- # Symmetric
577- assert t > v0
578- assert t >= v0
579- assert t < v1
580- assert t <= v1
581- assert t != v0
582- assert not t == v0
583-
584-
585- def test_should_not_allow_to_compare_version_with_string ():
568+ ), # fmt: on
569+ )
570+ def test_should_compare_version_tuples (t ):
571+ v0 = VersionInfo (major = 0 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
586572 v1 = VersionInfo (major = 3 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
587- with pytest .raises (TypeError ):
588- v1 > "1.0.0"
589- with pytest .raises (TypeError ):
590- "1.0.0" > v1
573+
574+ assert v0 < t
575+ assert v0 <= t
576+ assert v0 != t
577+ assert not v0 == t
578+ assert v1 > t
579+ assert v1 >= t
580+ # Symmetric
581+ assert t > v0
582+ assert t >= v0
583+ assert t < v1
584+ assert t <= v1
585+ assert t != v0
586+ assert not t == v0
587+
588+
589+ @pytest .mark .parametrize (
590+ "lst" , # fmt: off
591+ (
592+ [1 , 0 , 0 ],
593+ [1 , 0 ],
594+ [1 ],
595+ [1 , 0 , 0 , "pre.2" ],
596+ [1 , 0 , 0 , "pre.2" , "build.4" ],
597+ ), # fmt: on
598+ )
599+ def test_should_compare_version_list (lst ):
600+ v0 = VersionInfo (major = 0 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
601+ v1 = VersionInfo (major = 3 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
602+
603+ assert v0 < lst
604+ assert v0 <= lst
605+ assert v0 != lst
606+ assert not v0 == lst
607+ assert v1 > lst
608+ assert v1 >= lst
609+ # Symmetric
610+ assert lst > v0
611+ assert lst >= v0
612+ assert lst < v1
613+ assert lst <= v1
614+ assert lst != v0
615+ assert not lst == v0
616+
617+
618+ @pytest .mark .parametrize (
619+ "s" , # fmt: off
620+ (
621+ "1.0.0" ,
622+ # "1.0",
623+ # "1",
624+ "1.0.0-pre.2" ,
625+ "1.0.0-pre.2+build.4" ,
626+ ), # fmt: on
627+ )
628+ def test_should_compare_version_string (s ):
629+ v0 = VersionInfo (major = 0 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
630+ v1 = VersionInfo (major = 3 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
631+
632+ assert v0 < s
633+ assert v0 <= s
634+ assert v0 != s
635+ assert not v0 == s
636+ assert v1 > s
637+ assert v1 >= s
638+ # Symmetric
639+ assert s > v0
640+ assert s >= v0
641+ assert s < v1
642+ assert s <= v1
643+ assert s != v0
644+ assert not s == v0
645+
646+
647+ @pytest .mark .parametrize ("s" , ("1" , "1.0" , "1.0.x" ))
648+ def test_should_not_allow_to_compare_invalid_versionstring (s ):
649+ v = VersionInfo (major = 3 , minor = 4 , patch = 5 , prerelease = "pre.2" , build = "build.4" )
650+ with pytest .raises (ValueError ):
651+ v < s
652+ with pytest .raises (ValueError ):
653+ s > v
591654
592655
593656def test_should_not_allow_to_compare_version_with_int ():
0 commit comments