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
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)
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
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
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
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
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"')
def pool(): pool = Pool() pool.add_repository(MockRepository()) return pool