예제 #1
0
def test_installer_required_extras_should_be_installed(
    locker, repo, package, installed, env, mocker
):
    pool = Pool()
    pool.add_repository(MockRepository())

    installer = Installer(NullIO(), env, package, locker, pool, installed=installed)

    package.add_dependency(
        "cachecontrol", {"version": "^0.12.5", "extras": ["filecache"]}
    )

    installer.update(True)
    installer.run()

    assert len(installer.installer.installs) == 2
    assert len(installer.installer.updates) == 0
    assert len(installer.installer.removals) == 0

    locker.locked(True)
    locker.mock_lock_data(locker.written_data)

    installer = Installer(NullIO(), env, package, locker, pool, installed=installed)

    installer.update(True)
    installer.run()

    assert len(installer.installer.installs) == 2
    assert len(installer.installer.updates) == 0
    assert len(installer.installer.removals) == 0
예제 #2
0
def test_installer_can_handle_old_lock_files(installer, locker, package, repo,
                                             installed, config):
    pool = Pool()
    pool.add_repository(MockRepository())

    package.add_dependency("pytest", "^3.5", category="dev")

    locker.locked()
    locker.mock_lock_data(fixture("old-lock"))

    installer = Installer(NullIO(),
                          MockEnv(),
                          package,
                          locker,
                          pool,
                          config,
                          installed=installed)

    installer.run()

    assert 6 == len(installer.installer.installs)

    installer = Installer(
        NullIO(),
        MockEnv(version_info=(2, 7, 18)),
        package,
        locker,
        pool,
        config,
        installed=installed,
    )

    installer.run()

    # funcsigs will be added
    assert 7 == len(installer.installer.installs)

    installer = Installer(
        NullIO(),
        MockEnv(version_info=(2, 7, 18), platform="win32"),
        package,
        locker,
        pool,
        config,
        installed=installed,
    )

    installer.run()

    # colorama will be added
    assert 8 == len(installer.installer.installs)
예제 #3
0
def test_installer_with_pypi_repository(package, locker, installed):
    pool = Pool()
    pool.add_repository(MockRepository())

    installer = Installer(
        NullIO(), NullEnv(), package, locker, pool, installed=installed
    )

    package.add_dependency("pytest", "^3.5", category="dev")
    installer.run()

    expected = fixture("with-pypi-repository")

    assert locker.written_data == expected
예제 #4
0
def test_installer_required_extras_should_not_be_removed_when_updating_single_dependency_pypi_repository(
        locker, repo, package, installed, env, mocker, config):
    mocker.patch("sys.platform", "darwin")

    pool = Pool()
    pool.add_repository(MockRepository())

    installer = Installer(NullIO(),
                          env,
                          package,
                          locker,
                          pool,
                          config,
                          installed=installed)

    package.add_dependency("poetry", {"version": "^0.12.0"})

    installer.update(True)
    installer.run()

    assert len(installer.installer.installs) == 3
    assert len(installer.installer.updates) == 0
    assert len(installer.installer.removals) == 0

    package.add_dependency("pytest", "^3.5")

    locker.locked(True)
    locker.mock_lock_data(locker.written_data)

    for pkg in installer.installer.installs:
        installed.add_package(pkg)

    installer = Installer(NullIO(),
                          env,
                          package,
                          locker,
                          pool,
                          config,
                          installed=installed)

    installer.update(True)
    installer.whitelist(["pytest"])
    installer.run()

    assert len(installer.installer.installs) == 6 if not PY2 else 7
    assert len(installer.installer.updates) == 0
    assert len(installer.installer.removals) == 0
예제 #5
0
def test_installer_with_pypi_repository(package, locker, installed):
    pool = Pool()
    pool.add_repository(MockRepository())

    installer = Installer(NullIO(),
                          NullVenv(),
                          package,
                          locker,
                          pool,
                          installed=installed)

    package.add_dependency('pytest', '^3.5', category='dev')
    installer.run()

    expected = fixture('with-pypi-repository')

    assert locker.written_data == expected
예제 #6
0
def test_installer_can_install_dependencies_from_forced_source(
    locker, package, installed, env
):
    package.python_versions = "^3.7"
    package.add_dependency("tomlkit", {"version": "^0.5", "source": "legacy"})

    pool = Pool()
    pool.add_repository(MockLegacyRepository())
    pool.add_repository(MockRepository())

    installer = Installer(NullIO(), env, package, locker, pool, installed=installed)

    installer.update(True)
    installer.run()

    assert len(installer.installer.installs) == 1
    assert len(installer.installer.updates) == 0
    assert len(installer.installer.removals) == 0
예제 #7
0
def test_pool_fallback_through_repos():
    pool = Pool()
    pool.add_repository(
        LegacyRepository(url="http://fake.url/simple", name="fake"))
    pool.add_repository(MockRepository())

    package = pool.package("requests", "2.18.4")
    assert package.name == "requests"
    assert len(package.requires) == 4
    assert len(package.extras["security"]) == 3
    assert len(package.extras["socks"]) == 2

    win_inet = package.extras["socks"][0]
    assert win_inet.name == "win-inet-pton"
    assert win_inet.python_versions == "~2.7 || ~2.6"
    assert str(win_inet.marker) == (
        'sys_platform == "win32" and (python_version == "2.7" '
        'or python_version == "2.6") and extra == "socks"')
예제 #8
0
def pool():
    pool = Pool()
    pool.add_repository(MockRepository())

    return pool