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
Example #3
0
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