13
13
# limitations under the License.
14
14
15
15
import sys
16
+ import warnings
16
17
17
18
import pytest
19
+ import six
18
20
from testing_support .validators .validate_function_called import validate_function_called
19
21
20
22
from newrelic .common .package_version_utils import (
@@ -66,30 +68,26 @@ def cleared_package_version_cache():
66
68
("version_tuple" , [3 , 1 , "0b2" ], "3.1.0b2" ),
67
69
),
68
70
)
69
- def test_get_package_version (attr , value , expected_value ):
71
+ def test_get_package_version (monkeypatch , attr , value , expected_value ):
70
72
# There is no file/module here, so we monkeypatch
71
73
# pytest instead for our purposes
72
- setattr (pytest , attr , value )
74
+ monkeypatch . setattr (pytest , attr , value , raising = False )
73
75
version = get_package_version ("pytest" )
74
76
assert version == expected_value
75
- delattr (pytest , attr )
76
77
77
78
78
79
# This test only works on Python 3.7
79
80
@SKIP_IF_IMPORTLIB_METADATA
80
- def test_skips_version_callables ():
81
+ def test_skips_version_callables (monkeypatch ):
81
82
# There is no file/module here, so we monkeypatch
82
83
# pytest instead for our purposes
83
- setattr (pytest , "version" , lambda x : "1.2.3.4" )
84
- setattr (pytest , "version_tuple" , [3 , 1 , "0b2" ])
84
+ monkeypatch . setattr (pytest , "version" , lambda x : "1.2.3.4" , raising = False )
85
+ monkeypatch . setattr (pytest , "version_tuple" , [3 , 1 , "0b2" ], raising = False )
85
86
86
87
version = get_package_version ("pytest" )
87
88
88
89
assert version == "3.1.0b2"
89
90
90
- delattr (pytest , "version" )
91
- delattr (pytest , "version_tuple" )
92
-
93
91
94
92
# This test only works on Python 3.7
95
93
@SKIP_IF_IMPORTLIB_METADATA
@@ -102,13 +100,12 @@ def test_skips_version_callables():
102
100
("version_tuple" , [3 , 1 , "0b2" ], (3 , 1 , "0b2" )),
103
101
),
104
102
)
105
- def test_get_package_version_tuple (attr , value , expected_value ):
103
+ def test_get_package_version_tuple (monkeypatch , attr , value , expected_value ):
106
104
# There is no file/module here, so we monkeypatch
107
105
# pytest instead for our purposes
108
- setattr (pytest , attr , value )
106
+ monkeypatch . setattr (pytest , attr , value , raising = False )
109
107
version = get_package_version_tuple ("pytest" )
110
108
assert version == expected_value
111
- delattr (pytest , attr )
112
109
113
110
114
111
@SKIP_IF_NOT_IMPORTLIB_METADATA
@@ -132,10 +129,28 @@ def test_pkg_resources_metadata():
132
129
assert version not in NULL_VERSIONS , version
133
130
134
131
132
+ def _getattr_deprecation_warning (attr ):
133
+ if attr == "__version__" :
134
+ warnings .warn ("Testing deprecation warnings." , DeprecationWarning )
135
+ return "3.2.1"
136
+ else :
137
+ raise NotImplementedError ()
138
+
139
+
140
+ @pytest .mark .skipif (six .PY2 , reason = "Can't add Deprecation in __version__ in Python 2." )
141
+ def test_deprecation_warning_suppression (monkeypatch , recwarn ):
142
+ # Add fake module to be deleted later
143
+ monkeypatch .setattr (pytest , "__getattr__" , _getattr_deprecation_warning , raising = False )
144
+
145
+ assert get_package_version ("pytest" ) == "3.2.1"
146
+
147
+ assert not recwarn .list , "Warnings not suppressed."
148
+
149
+
135
150
def test_version_caching (monkeypatch ):
136
151
# Add fake module to be deleted later
137
152
sys .modules ["mymodule" ] = sys .modules ["pytest" ]
138
- setattr (pytest , "__version__" , "1.0.0" )
153
+ monkeypatch . setattr (pytest , "__version__" , "1.0.0" , raising = False )
139
154
version = get_package_version ("mymodule" )
140
155
assert version not in NULL_VERSIONS , version
141
156
0 commit comments