def test_get_release_unsecure(mocker, caplog): @contextmanager def _release(of, context): assert of == "https://pypi.org/pypi/pip/json" if context is None: raise URLError("insecure") assert context yield StringIO( json.dumps({ "releases": { "20.1": [{ "upload_time": "2020-12-22T12:12:12" }] } })) url_o = mocker.patch("virtualenv.seed.wheels.periodic_update.urlopen", side_effect=_release) result = release_date_for_wheel_path(Path("pip-20.1.whl")) assert result == datetime(year=2020, month=12, day=22, hour=12, minute=12, second=12) assert url_o.call_count == 2 assert "insecure" in caplog.text assert " failed " in caplog.text
def test_get_release_fails(mocker, caplog): exc = RuntimeError("oh no") url_o = mocker.patch("virtualenv.seed.wheels.periodic_update.urlopen", side_effect=exc) result = release_date_for_wheel_path(Path("pip-20.1.whl")) assert result is None assert url_o.call_count == 1 assert repr(exc) in caplog.text