@@ -594,7 +594,7 @@ def test_specifier_prereleases_set(
594594 [
595595 ("1.0.0" , "===1.0" , False ),
596596 ("1.0.dev0" , "===1.0" , False ),
597- # Test exact arbitrary equality (===)
597+ # Test identity comparison by itself
598598 ("1.0" , "===1.0" , True ),
599599 ("1.0.dev0" , "===1.0.dev0" , True ),
600600 # Test that local versions don't match
@@ -755,13 +755,7 @@ def test_specifiers_prereleases(
755755 # Test != with invalid versions (should not pass as versions are not valid)
756756 ("!=1.0" , None , None , ["invalid" , "foobar" ], []),
757757 ("!=1.0" , None , None , ["1.0" , "invalid" , "2.0" ], ["2.0" ]),
758- (
759- "!=2.0.*" ,
760- None ,
761- None ,
762- ["invalid" , "foobar" , "2.0" ],
763- []
764- ),
758+ ("!=2.0.*" , None , None , ["invalid" , "foobar" , "2.0" ], []),
765759 ("!=2.0.*" , None , None , ["1.0" , "invalid" , "2.0.0" ], ["1.0" ]),
766760 # Test that !== ignores prereleases parameter for non-PEP 440 versions
767761 ("!=1.0" , None , True , ["invalid" , "foobar" ], []),
@@ -875,15 +869,34 @@ def test_empty_specifier(self, version: str) -> None:
875869 assert spec .contains (parse (version ))
876870
877871 @pytest .mark .parametrize (
878- "prereleases" ,
879- [None , False , True ],
872+ ("prereleases" , "versions" , "expected" ),
873+ [
874+ # single arbitrary string
875+ (None , ["foobar" ], ["foobar" ]),
876+ (False , ["foobar" ], ["foobar" ]),
877+ (True , ["foobar" ], ["foobar" ]),
878+ # arbitrary string with a stable version present
879+ (None , ["foobar" , "1.0" ], ["foobar" , "1.0" ]),
880+ (False , ["foobar" , "1.0" ], ["foobar" , "1.0" ]),
881+ (True , ["foobar" , "1.0" ], ["foobar" , "1.0" ]),
882+ # arbitrary string with a prerelease only
883+ (None , ["foobar" , "1.0a1" ], ["foobar" , "1.0a1" ]),
884+ (False , ["foobar" , "1.0a1" ], ["foobar" ]),
885+ (True , ["foobar" , "1.0a1" ], ["foobar" , "1.0a1" ]),
886+ ],
880887 )
881- def test_empty_specifier_arbitrary_string (self , prereleases ):
888+ def test_empty_specifier_arbitrary_string (self , prereleases , versions , expected ):
882889 """Test empty SpecifierSet accepts arbitrary strings."""
883890
884891 spec = SpecifierSet ("" , prereleases = prereleases )
892+
893+ # basic behavior preserved
885894 assert spec .contains ("foobar" )
886895
896+ # check filter behavior (no override of prereleases passed to filter)
897+ kwargs = {}
898+ assert list (spec .filter (versions , ** kwargs )) == expected
899+
887900 def test_create_from_specifiers (self ) -> None :
888901 spec_strs = [">=1.0" , "!=1.1" , "!=1.2" , "<2.0" ]
889902 specs = [Specifier (s ) for s in spec_strs ]
0 commit comments