def test_periodic_update_stops_at_current(mocker, session_app_data, for_py_version): current = get_embed_wheel("setuptools", for_py_version) now, completed = datetime.now(), datetime.now() - timedelta(days=29) u_log = UpdateLog( started=completed, completed=completed, versions=[ NewVersion(wheel_path(current, (1, )), completed, now - timedelta(days=1)), NewVersion(filename=current.path, found_date=completed, release_date=now - timedelta(days=2)), NewVersion(wheel_path(current, (-1, )), completed, now - timedelta(days=30)), ], periodic=True, ) mocker.patch("virtualenv.app_data.via_disk_folder.JSONStoreDisk.read", return_value=u_log.to_dict()) result = periodic_update("setuptools", for_py_version, current, [], session_app_data, False, os.environ) assert result.path == current.path
def test_periodic_update_skip(u_log, mocker, for_py_version, session_app_data, freezer): freezer.move_to(_UP_NOW) mocker.patch("virtualenv.app_data.via_disk_folder.JSONStoreDisk.read", return_value=u_log.to_dict()) mocker.patch("virtualenv.seed.wheels.periodic_update.trigger_update", side_effect=RuntimeError) result = periodic_update("setuptools", for_py_version, None, [], session_app_data, True) assert result is None
def test_manual_update_honored(mocker, session_app_data, for_py_version): current = get_embed_wheel("setuptools", for_py_version) expected_path = wheel_path(current, (0, 1, 1)) now = datetime.now() completed = now u_log = UpdateLog( started=completed, completed=completed, periodic=True, versions=[ NewVersion(wheel_path(current, (0, 1, 2)), completed, completed, "periodic"), NewVersion(expected_path, completed, now - timedelta(days=10), "manual"), NewVersion(wheel_path(current, (0, 1, 0)), completed, now - timedelta(days=11), "periodic"), NewVersion(str(current.path), completed, now - timedelta(days=12), "manual"), ], ) mocker.patch("virtualenv.app_data.via_disk_folder.JSONStoreDisk.read", return_value=u_log.to_dict()) result = periodic_update("setuptools", None, for_py_version, current, [], session_app_data, False, os.environ) assert str(result.path) == expected_path
def test_periodic_update_trigger(u_log, mocker, for_py_version, session_app_data, freezer): freezer.move_to(_UP_NOW) mocker.patch("virtualenv.app_data.via_disk_folder.JSONStoreDisk.read", return_value=u_log.to_dict()) write = mocker.patch("virtualenv.app_data.via_disk_folder.JSONStoreDisk.write") trigger_update_ = mocker.patch("virtualenv.seed.wheels.periodic_update.trigger_update") result = periodic_update("setuptools", for_py_version, None, [], session_app_data, True) assert result is None assert trigger_update_.call_count assert write.call_count == 1 wrote_json = write.call_args[0][0] assert wrote_json["periodic"] is True assert load_datetime(wrote_json["started"]) == _UP_NOW