2020-03-20 12:00:07 +01:00
|
|
|
import json
|
2020-03-20 12:12:38 +01:00
|
|
|
|
2020-03-20 12:00:07 +01:00
|
|
|
from tests.lib import create_basic_wheel_for_package
|
|
|
|
|
|
|
|
|
|
|
|
def assert_installed(script, **kwargs):
|
|
|
|
ret = script.pip('list', '--format=json')
|
|
|
|
installed = set(
|
|
|
|
(val['name'], val['version'])
|
|
|
|
for val in json.loads(ret.stdout)
|
|
|
|
)
|
2020-03-25 18:47:22 +01:00
|
|
|
assert all(item in installed for item in kwargs.items()), \
|
|
|
|
"{!r} not all in {!r}".format(kwargs, installed)
|
|
|
|
|
|
|
|
|
|
|
|
def assert_not_installed(script, *args):
|
|
|
|
ret = script.pip("list", "--format=json")
|
|
|
|
installed = set(val["name"] for val in json.loads(ret.stdout))
|
|
|
|
assert all(a not in installed for a in args), \
|
|
|
|
"{!r} contained in {!r}".format(args, installed)
|
2020-03-20 12:12:38 +01:00
|
|
|
|
2020-03-20 12:00:07 +01:00
|
|
|
|
|
|
|
def test_new_resolver_can_install(script):
|
2020-03-20 12:12:38 +01:00
|
|
|
create_basic_wheel_for_package(
|
2020-03-20 12:00:07 +01:00
|
|
|
script,
|
|
|
|
"simple",
|
|
|
|
"0.1.0",
|
|
|
|
)
|
|
|
|
script.pip(
|
|
|
|
"install", "--unstable-feature=resolver",
|
|
|
|
"--no-cache-dir", "--no-index",
|
|
|
|
"--find-links", script.scratch_path,
|
|
|
|
"simple"
|
|
|
|
)
|
|
|
|
assert_installed(script, simple="0.1.0")
|
|
|
|
|
|
|
|
|
|
|
|
def test_new_resolver_can_install_with_version(script):
|
2020-03-20 12:12:38 +01:00
|
|
|
create_basic_wheel_for_package(
|
2020-03-20 12:00:07 +01:00
|
|
|
script,
|
|
|
|
"simple",
|
|
|
|
"0.1.0",
|
|
|
|
)
|
|
|
|
script.pip(
|
|
|
|
"install", "--unstable-feature=resolver",
|
|
|
|
"--no-cache-dir", "--no-index",
|
|
|
|
"--find-links", script.scratch_path,
|
|
|
|
"simple==0.1.0"
|
|
|
|
)
|
|
|
|
assert_installed(script, simple="0.1.0")
|
|
|
|
|
|
|
|
|
|
|
|
def test_new_resolver_picks_latest_version(script):
|
2020-03-20 12:12:38 +01:00
|
|
|
create_basic_wheel_for_package(
|
2020-03-20 12:00:07 +01:00
|
|
|
script,
|
|
|
|
"simple",
|
|
|
|
"0.1.0",
|
|
|
|
)
|
2020-03-20 12:12:38 +01:00
|
|
|
create_basic_wheel_for_package(
|
2020-03-20 12:00:07 +01:00
|
|
|
script,
|
|
|
|
"simple",
|
|
|
|
"0.2.0",
|
|
|
|
)
|
|
|
|
script.pip(
|
|
|
|
"install", "--unstable-feature=resolver",
|
|
|
|
"--no-cache-dir", "--no-index",
|
|
|
|
"--find-links", script.scratch_path,
|
|
|
|
"simple"
|
|
|
|
)
|
|
|
|
assert_installed(script, simple="0.2.0")
|
|
|
|
|
2020-03-20 12:12:38 +01:00
|
|
|
|
2020-03-20 12:00:07 +01:00
|
|
|
def test_new_resolver_installs_dependencies(script):
|
2020-03-20 12:12:38 +01:00
|
|
|
create_basic_wheel_for_package(
|
2020-03-20 12:00:07 +01:00
|
|
|
script,
|
|
|
|
"base",
|
|
|
|
"0.1.0",
|
|
|
|
depends=["dep"],
|
|
|
|
)
|
2020-03-20 12:12:38 +01:00
|
|
|
create_basic_wheel_for_package(
|
2020-03-20 12:00:07 +01:00
|
|
|
script,
|
|
|
|
"dep",
|
|
|
|
"0.1.0",
|
|
|
|
)
|
|
|
|
script.pip(
|
|
|
|
"install", "--unstable-feature=resolver",
|
|
|
|
"--no-cache-dir", "--no-index",
|
|
|
|
"--find-links", script.scratch_path,
|
|
|
|
"base"
|
|
|
|
)
|
|
|
|
assert_installed(script, base="0.1.0", dep="0.1.0")
|
2020-03-20 14:32:20 +01:00
|
|
|
|
|
|
|
|
2020-03-25 18:48:47 +01:00
|
|
|
def test_new_resolver_ignore_dependencies(script):
|
|
|
|
create_basic_wheel_for_package(
|
|
|
|
script,
|
|
|
|
"base",
|
|
|
|
"0.1.0",
|
|
|
|
depends=["dep"],
|
|
|
|
)
|
|
|
|
create_basic_wheel_for_package(
|
|
|
|
script,
|
|
|
|
"dep",
|
|
|
|
"0.1.0",
|
|
|
|
)
|
|
|
|
script.pip(
|
|
|
|
"install", "--unstable-feature=resolver",
|
|
|
|
"--no-cache-dir", "--no-index", "--no-deps",
|
|
|
|
"--find-links", script.scratch_path,
|
|
|
|
"base"
|
|
|
|
)
|
|
|
|
assert_installed(script, base="0.1.0")
|
|
|
|
assert_not_installed(script, "dep")
|
2020-03-26 16:49:43 +01:00
|
|
|
|
|
|
|
|
2020-03-20 14:32:20 +01:00
|
|
|
def test_new_resolver_installs_extras(script):
|
|
|
|
create_basic_wheel_for_package(
|
|
|
|
script,
|
|
|
|
"base",
|
|
|
|
"0.1.0",
|
|
|
|
extras={"add": ["dep"]},
|
|
|
|
)
|
|
|
|
create_basic_wheel_for_package(
|
|
|
|
script,
|
|
|
|
"dep",
|
|
|
|
"0.1.0",
|
|
|
|
)
|
2020-03-26 15:53:24 +01:00
|
|
|
result = script.pip(
|
2020-03-20 14:32:20 +01:00
|
|
|
"install", "--unstable-feature=resolver",
|
|
|
|
"--no-cache-dir", "--no-index",
|
|
|
|
"--find-links", script.scratch_path,
|
2020-03-26 15:53:24 +01:00
|
|
|
"base[add,missing]",
|
|
|
|
expect_stderr=True,
|
2020-03-20 14:32:20 +01:00
|
|
|
)
|
2020-03-26 15:53:24 +01:00
|
|
|
assert "WARNING: Invalid extras specified" in result.stderr, str(result)
|
|
|
|
assert ": missing" in result.stderr, str(result)
|
2020-03-20 14:32:20 +01:00
|
|
|
assert_installed(script, base="0.1.0", dep="0.1.0")
|