@@ -1033,3 +1033,68 @@ def test_pep592_support_constraint_mismatch() -> None:
10331033def test_extract_filename_from_url (url , filename ) -> None :
10341034 result = resolver .extract_filename_from_url (url )
10351035 assert result == filename
1036+
1037+
1038+ def test_custom_resolver_error_message_missing_tag () -> None :
1039+ """Test that error message indicates custom resolver when tag doesn't exist.
1040+
1041+ This reproduces issue #858 where the error message mentions PyPI and sdists
1042+ even when using a custom resolver like GitHubTagProvider.
1043+ """
1044+ with requests_mock .Mocker () as r :
1045+ # Mock GitHub API to return empty tags (simulating missing tag)
1046+ r .get (
1047+ "https://api.github.com:443/repos/test-org/test-repo/tags" ,
1048+ json = [], # Empty tags list - tag doesn't exist
1049+ )
1050+
1051+ provider = resolver .GitHubTagProvider (organization = "test-org" , repo = "test-repo" )
1052+
1053+ with pytest .raises (resolvelib .resolvers .ResolverException ) as exc_info :
1054+ resolver .resolve_from_provider (provider , Requirement ("test-package==1.0.0" ))
1055+
1056+ error_message = str (exc_info .value )
1057+ assert (
1058+ "GitHub" in error_message
1059+ or "test-org/test-repo" in error_message
1060+ or "custom resolver" in error_message .lower ()
1061+ ), (
1062+ f"Error message should indicate custom resolver was used (GitHub tag resolver), "
1063+ f"but got: { error_message } "
1064+ )
1065+ # Should NOT mention PyPI when using GitHub resolver
1066+ assert "pypi.org" not in error_message .lower (), (
1067+ f"Error message incorrectly mentions PyPI when using GitHub resolver: { error_message } "
1068+ )
1069+
1070+
1071+ def test_custom_resolver_error_message_via_resolve () -> None :
1072+ """Test error message when using resolve() function with custom resolver override."""
1073+
1074+ def custom_resolver_provider (* args , ** kwargs ):
1075+ """Custom resolver that returns GitHubTagProvider."""
1076+ return resolver .GitHubTagProvider (organization = "test-org" , repo = "test-repo" )
1077+
1078+ with requests_mock .Mocker () as r :
1079+ # Mock GitHub API to return empty tags
1080+ r .get (
1081+ "https://api.github.com:443/repos/test-org/test-repo/tags" ,
1082+ json = [],
1083+ )
1084+
1085+ provider = custom_resolver_provider ()
1086+
1087+ with pytest .raises (resolvelib .resolvers .ResolverException ) as exc_info :
1088+ resolver .resolve_from_provider (provider , Requirement ("test-package==1.0.0" ))
1089+
1090+ error_message = str (exc_info .value )
1091+ # After fix for issue #858, the error message should indicate that a GitHub resolver was used
1092+ assert (
1093+ "GitHub" in error_message
1094+ or "test-org/test-repo" in error_message
1095+ or "custom resolver" in error_message .lower ()
1096+ ), f"Error message should indicate GitHub resolver was used: { error_message } "
1097+ # Should NOT mention PyPI when using GitHub resolver
1098+ assert "pypi.org" not in error_message .lower (), (
1099+ f"Error message incorrectly mentions PyPI when using GitHub resolver: { error_message } "
1100+ )
0 commit comments