@@ -680,3 +680,78 @@ def test_generic_sys_tags(monkeypatch):
680680 result = list (tags .sys_tags ())
681681 expected = tags .Tag ("py{}0" .format (sys .version_info [0 ]), "none" , "any" )
682682 assert result [- 1 ] == expected
683+
684+
685+ def test_warn_parameters ():
686+ assert not tags ._warn_parameter ("test_warn_parameters" , {})
687+ assert not tags ._warn_parameter ("test_warn_parameters" , {"warn" : False })
688+ assert tags ._warn_parameter ("test_warn_parameters" , {"warn" : True })
689+ message_re = re .compile (r"too_many.+{!r}" .format ("whatever" ))
690+ with pytest .raises (TypeError , match = message_re ):
691+ tags ._warn_parameter ("too_many" , {"warn" : True , "whatever" : True })
692+ message_re = re .compile (r"missing.+{!r}" .format ("unexpected" ))
693+ with pytest .raises (TypeError , match = message_re ):
694+ tags ._warn_parameter ("missing" , {"unexpected" : True })
695+
696+
697+ def test_cpython_tags_all_args ():
698+ result = list (tags .cpython_tags ((3 , 8 ), ["cp38d" , "cp38" ], ["plat1" , "plat2" ]))
699+ assert result == [
700+ tags .Tag ("cp38" , "cp38d" , "plat1" ),
701+ tags .Tag ("cp38" , "cp38d" , "plat2" ),
702+ tags .Tag ("cp38" , "cp38" , "plat1" ),
703+ tags .Tag ("cp38" , "cp38" , "plat2" ),
704+ tags .Tag ("cp38" , "abi3" , "plat1" ),
705+ tags .Tag ("cp38" , "abi3" , "plat2" ),
706+ tags .Tag ("cp38" , "none" , "plat1" ),
707+ tags .Tag ("cp38" , "none" , "plat2" ),
708+ tags .Tag ("cp37" , "abi3" , "plat1" ),
709+ tags .Tag ("cp37" , "abi3" , "plat2" ),
710+ tags .Tag ("cp36" , "abi3" , "plat1" ),
711+ tags .Tag ("cp36" , "abi3" , "plat2" ),
712+ tags .Tag ("cp35" , "abi3" , "plat1" ),
713+ tags .Tag ("cp35" , "abi3" , "plat2" ),
714+ tags .Tag ("cp34" , "abi3" , "plat1" ),
715+ tags .Tag ("cp34" , "abi3" , "plat2" ),
716+ tags .Tag ("cp33" , "abi3" , "plat1" ),
717+ tags .Tag ("cp33" , "abi3" , "plat2" ),
718+ tags .Tag ("cp32" , "abi3" , "plat1" ),
719+ tags .Tag ("cp32" , "abi3" , "plat2" ),
720+ ]
721+ result = list (tags .cpython_tags ((3 , 3 ), ["cp33m" ], ["plat1" , "plat2" ]))
722+ assert result == [
723+ tags .Tag ("cp33" , "cp33m" , "plat1" ),
724+ tags .Tag ("cp33" , "cp33m" , "plat2" ),
725+ tags .Tag ("cp33" , "abi3" , "plat1" ),
726+ tags .Tag ("cp33" , "abi3" , "plat2" ),
727+ tags .Tag ("cp33" , "none" , "plat1" ),
728+ tags .Tag ("cp33" , "none" , "plat2" ),
729+ tags .Tag ("cp32" , "abi3" , "plat1" ),
730+ tags .Tag ("cp32" , "abi3" , "plat2" ),
731+ ]
732+
733+
734+ def test_cpython_tags_defaults (monkeypatch ):
735+ # python_version
736+ tag = next (tags .cpython_tags (abis = ["abi3" ], platforms = ["any" ]))
737+ interpreter = "cp{}{}" .format (* sys .version_info [:2 ])
738+ assert tag == tags .Tag (interpreter , "abi3" , "any" )
739+ # abis
740+ with monkeypatch .context () as m :
741+ m .setattr (tags , "_cpython_abis" , lambda _1 , _2 : ["cp38" ])
742+ result = list (tags .cpython_tags ((3 , 8 ), platforms = ["any" ]))
743+ assert tags .Tag ("cp38" , "cp38" , "any" ) in result
744+ assert tags .Tag ("cp38" , "abi3" , "any" ) in result
745+ assert tags .Tag ("cp38" , "none" , "any" ) in result
746+ # platforms
747+ with monkeypatch .context () as m :
748+ m .setattr (tags , "_platforms" , lambda : ["plat1" ])
749+ result = list (tags .cpython_tags ((3 , 8 ), abis = ["whatever" ]))
750+ assert tags .Tag ("cp38" , "whatever" , "plat1" ) in result
751+
752+
753+ @pytest .mark .parametrize ("abis" , [["abi3" ], ["none" ]])
754+ def test_cpython_tags_skip_redundant_abis (abis ):
755+ results = list (tags .cpython_tags ((3 , 0 ), abis = abis , platforms = ["any" ]))
756+ assert results == [tags .Tag ("cp30" , "abi3" , "any" ), tags .Tag ("cp30" , "none" , "any" )]
757+
0 commit comments