1313# limitations under the License.
1414
1515import sys
16+ import warnings
1617from unittest .mock import patch , MagicMock
1718
1819import pytest
@@ -60,9 +61,8 @@ def test_get_dependency_version_py37(mock_get_distribution):
6061
6162@patch ("google.api_core._python_package_support._get_distribution_and_import_packages" )
6263@patch ("google.api_core._python_package_support.get_dependency_version" )
63- @patch ("google.api_core._python_package_support.logging.warning" )
6464def test_warn_deprecation_for_versions_less_than (
65- mock_log_warning , mock_get_version , mock_get_packages
65+ mock_get_version , mock_get_packages
6666):
6767 """Test the deprecation warning logic."""
6868 # Mock the helper function to return predictable package strings
@@ -73,48 +73,50 @@ def test_warn_deprecation_for_versions_less_than(
7373
7474 # Case 1: Installed version is less than required, should warn.
7575 mock_get_version .return_value = parse_version ("1.0.0" )
76- warn_deprecation_for_versions_less_than ("my.package" , "dep.package" , "2.0.0" )
77- mock_log_warning .assert_called_once ()
76+ with pytest .warns (UserWarning ) as record :
77+ warn_deprecation_for_versions_less_than ("my.package" , "dep.package" , "2.0.0" )
78+ assert len (record ) == 1
7879 assert (
7980 "DEPRECATION: Package my-package (my.package) depends on dep-package (dep.package)"
80- in mock_log_warning . call_args [0 ][ 0 ]
81+ in str ( record [0 ]. message )
8182 )
8283
83- # Case 2: Installed version is equal to required, should not warn.
84- mock_log_warning .reset_mock ()
85- mock_get_packages .reset_mock ()
86- mock_get_version .return_value = parse_version ("2.0.0" )
87- warn_deprecation_for_versions_less_than ("my.package" , "dep.package" , "2.0.0" )
88- mock_log_warning .assert_not_called ()
84+ # Cases where no warning should be issued
85+ with warnings .catch_warnings (record = True ) as w :
86+ warnings .simplefilter ("always" ) # Capture all warnings
8987
90- # Case 3: Installed version is greater than required, should not warn.
91- mock_log_warning .reset_mock ()
92- mock_get_packages .reset_mock ()
93- mock_get_version .return_value = parse_version ("3.0.0" )
94- warn_deprecation_for_versions_less_than ("my.package" , "dep.package" , "2.0.0" )
95- mock_log_warning .assert_not_called ()
88+ # Case 2: Installed version is equal to required, should not warn.
89+ mock_get_packages .reset_mock ()
90+ mock_get_version .return_value = parse_version ("2.0.0" )
91+ warn_deprecation_for_versions_less_than ("my.package" , "dep.package" , "2.0.0" )
9692
97- # Case 4: Dependency not found, should not warn.
98- mock_log_warning .reset_mock ()
99- mock_get_packages .reset_mock ()
100- mock_get_version .return_value = None
101- warn_deprecation_for_versions_less_than ("my.package" , "dep.package" , "2.0.0" )
102- mock_log_warning .assert_not_called ()
93+ # Case 3: Installed version is greater than required, should not warn.
94+ mock_get_packages .reset_mock ()
95+ mock_get_version .return_value = parse_version ("3.0.0" )
96+ warn_deprecation_for_versions_less_than ("my.package" , "dep.package" , "2.0.0" )
97+
98+ # Case 4: Dependency not found, should not warn.
99+ mock_get_packages .reset_mock ()
100+ mock_get_version .return_value = None
101+ warn_deprecation_for_versions_less_than ("my.package" , "dep.package" , "2.0.0" )
102+
103+ # Assert that no warnings were recorded
104+ assert len (w ) == 0
103105
104106 # Case 5: Custom message template.
105- mock_log_warning .reset_mock ()
106107 mock_get_packages .reset_mock ()
107108 mock_get_packages .side_effect = [
108109 ("dep-package (dep.package)" , "dep-package" ),
109110 ("my-package (my.package)" , "my-package" ),
110111 ]
111112 mock_get_version .return_value = parse_version ("1.0.0" )
112113 template = "Custom warning for {dependency_package} used by {dependent_package}."
113- warn_deprecation_for_versions_less_than (
114- "my.package" , "dep.package" , "2.0.0" , message_template = template
115- )
116- mock_log_warning .assert_called_once ()
114+ with pytest .warns (UserWarning ) as record :
115+ warn_deprecation_for_versions_less_than (
116+ "my.package" , "dep.package" , "2.0.0" , message_template = template
117+ )
118+ assert len (record ) == 1
117119 assert (
118120 "Custom warning for dep-package (dep.package) used by my-package (my.package)."
119- in mock_log_warning . call_args [0 ][ 0 ]
121+ in str ( record [0 ]. message )
120122 )
0 commit comments