Add tests for the deprecated helper

This commit is contained in:
Pradyun Gedam 2019-05-25 21:52:49 -04:00
parent 2e77720446
commit 995ef743ec
No known key found for this signature in database
GPG Key ID: DA17C4B29CB32E4B
1 changed files with 77 additions and 0 deletions

View File

@ -22,6 +22,7 @@ from mock import Mock, patch
from pip._internal.exceptions import (
HashMismatch, HashMissing, InstallationError,
)
from pip._internal.utils.deprecation import PipDeprecationWarning, deprecated
from pip._internal.utils.encoding import BOMS, auto_decode
from pip._internal.utils.glibc import check_glibc_version
from pip._internal.utils.hashes import Hashes, MissingHashes
@ -1068,3 +1069,79 @@ def test_remove_auth_from_url(auth_url, expected_url):
def test_redact_password_from_url(auth_url, expected_url):
url = redact_password_from_url(auth_url)
assert url == expected_url
@pytest.fixture()
def patch_deprecation_check_version():
# We do this, so that the deprecation tests are easier to write.
import pip._internal.utils.deprecation as d
old_version = d.current_version
d.current_version = "1.0"
yield
d.current_version = old_version
@pytest.mark.usefixtures("patch_deprecation_check_version")
@pytest.mark.parametrize("replacement", [None, "a magic 8 ball"])
@pytest.mark.parametrize("gone_in", [None, "2.0"])
@pytest.mark.parametrize("issue", [None, 988])
def test_deprecated_message_contains_information(gone_in, replacement, issue):
with pytest.warns(PipDeprecationWarning) as record:
deprecated(
"Stop doing this!",
replacement=replacement,
gone_in=gone_in,
issue=issue,
)
assert len(record) == 1
message = record[0].message.args[0]
assert "DEPRECATION: Stop doing this!" in message
# Ensure non-None values are mentioned.
for item in [gone_in, replacement, issue]:
if item is not None:
assert str(item) in message
@pytest.mark.usefixtures("patch_deprecation_check_version")
@pytest.mark.parametrize("replacement", [None, "a magic 8 ball"])
@pytest.mark.parametrize("issue", [None, 988])
def test_deprecated_raises_error_if_too_old(replacement, issue):
with pytest.raises(PipDeprecationWarning) as exception:
deprecated(
"Stop doing this!",
gone_in="1.0", # this matches the patched version.
replacement=replacement,
issue=issue,
)
message = exception.value.args[0]
assert "DEPRECATION: Stop doing this!" in message
assert "1.0" in message
# Ensure non-None values are mentioned.
for item in [replacement, issue]:
if item is not None:
assert str(item) in message
@pytest.mark.usefixtures("patch_deprecation_check_version")
def test_deprecated_message_reads_well():
with pytest.raises(PipDeprecationWarning) as exception:
deprecated(
"Stop doing this!",
gone_in="1.0", # this matches the patched version.
replacement="to be nicer",
issue="100000", # I hope we never reach this number.
)
message = exception.value.args[0]
assert message == (
"DEPRECATION: Stop doing this! "
"pip 1.0 will remove support for this functionality. "
"A possible replacement is to be nicer. "
"You can find discussion regarding this at "
"https://github.com/pypa/pip/issues/100000."
)