mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
Try to address these sproadic test failures without skipping the test.
This commit is contained in:
@@ -756,7 +756,6 @@ def requirements(state, dev=False, dev_only=False, hash=False, exclude_markers=F
|
||||
pip_deps = convert_deps_to_pip(
|
||||
deps,
|
||||
project=None,
|
||||
r=False,
|
||||
include_index=False,
|
||||
include_hashes=hash,
|
||||
include_markers=not exclude_markers,
|
||||
|
||||
+1
-1
@@ -2048,7 +2048,7 @@ def do_install(
|
||||
if not is_star(section[package__name]) and is_star(package__val):
|
||||
# Support for VCS dependencies.
|
||||
package_args[i] = convert_deps_to_pip(
|
||||
{package__name: section[package__name]}, project=project, r=False
|
||||
{package__name: section[package__name]}, project=project
|
||||
)[0]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import os
|
||||
from contextlib import contextmanager
|
||||
from tempfile import NamedTemporaryFile
|
||||
from typing import Mapping, Sequence
|
||||
|
||||
from pipenv.patched.pip._vendor.packaging.markers import Marker
|
||||
from pipenv.patched.pip._vendor.packaging.version import parse
|
||||
from pipenv.vendor.requirementslib.models.requirements import Requirement
|
||||
|
||||
from .constants import SCHEME_LIST, VCS_LIST
|
||||
from .shell import temp_path
|
||||
@@ -245,14 +245,11 @@ def is_pinned_requirement(ireq):
|
||||
def convert_deps_to_pip(
|
||||
deps,
|
||||
project=None,
|
||||
r=True,
|
||||
include_index=True,
|
||||
include_hashes=True,
|
||||
include_markers=True,
|
||||
):
|
||||
""" "Converts a Pipfile-formatted dependency to a pip-formatted one."""
|
||||
from pipenv.vendor.requirementslib.models.requirements import Requirement
|
||||
|
||||
dependencies = []
|
||||
for dep_name, dep in deps.items():
|
||||
if project:
|
||||
@@ -268,14 +265,7 @@ def convert_deps_to_pip(
|
||||
include_markers=include_markers,
|
||||
).strip()
|
||||
dependencies.append(req)
|
||||
if not r:
|
||||
return dependencies
|
||||
|
||||
# Write requirements.txt to tmp directory.
|
||||
f = NamedTemporaryFile(suffix="-requirements.txt", delete=False)
|
||||
f.write("\n".join(dependencies).encode("utf-8"))
|
||||
f.close()
|
||||
return f.name
|
||||
return dependencies
|
||||
|
||||
|
||||
def get_constraints_from_deps(deps):
|
||||
|
||||
@@ -1027,7 +1027,7 @@ def venv_resolve_deps(
|
||||
# dependency resolution on them, so we are including this step inside the
|
||||
# spinner context manager for the UX improvement
|
||||
sp.write(decode_for_output("Building requirements..."))
|
||||
deps = convert_deps_to_pip(deps, project, r=False, include_index=True)
|
||||
deps = convert_deps_to_pip(deps, project, include_index=True)
|
||||
constraints = set(deps)
|
||||
os.environ["PIPENV_PACKAGES"] = str("\n".join(constraints))
|
||||
sp.write(decode_for_output("Resolving dependencies..."))
|
||||
|
||||
@@ -15,8 +15,6 @@ from pipenv.exceptions import PipenvUsageError
|
||||
|
||||
# Pipfile format <-> requirements.txt format.
|
||||
DEP_PIP_PAIRS = [
|
||||
({"requests": "*"}, "requests"),
|
||||
({"requests": {"extras": ["socks"], "version": "*"}}, "requests[socks]"),
|
||||
({"django": ">1.10"}, "django>1.10"),
|
||||
({"Django": ">1.10"}, "Django>1.10"),
|
||||
({"requests": {"extras": ["socks"], "version": ">1.10"}}, "requests[socks]>1.10"),
|
||||
@@ -89,7 +87,25 @@ def mock_unpack(link, source_dir, download_dir, only_download=False, session=Non
|
||||
def test_convert_deps_to_pip(deps, expected):
|
||||
if expected.startswith("Django"):
|
||||
expected = expected.lower()
|
||||
assert dependencies.convert_deps_to_pip(deps, r=False) == [expected]
|
||||
assert dependencies.convert_deps_to_pip(deps) == [expected]
|
||||
|
||||
|
||||
@flaky
|
||||
@pytest.mark.utils
|
||||
@pytest.mark.needs_internet
|
||||
def test_convert_deps_to_pip_flaky():
|
||||
deps = {"requests": "*"}
|
||||
expected = "requests"
|
||||
assert dependencies.convert_deps_to_pip(deps) == [expected]
|
||||
|
||||
|
||||
@flaky
|
||||
@pytest.mark.utils
|
||||
@pytest.mark.needs_internet
|
||||
def test_convert_deps_to_pip_flaky2():
|
||||
deps = {"requests": {"extras": ["socks"], "version": "*"}}
|
||||
expected = "requests[socks]"
|
||||
assert dependencies.convert_deps_to_pip(deps) == [expected]
|
||||
|
||||
|
||||
@flaky
|
||||
@@ -97,8 +113,6 @@ def test_convert_deps_to_pip(deps, expected):
|
||||
@pytest.mark.parametrize(
|
||||
"deps, expected",
|
||||
[
|
||||
# This one should be collapsed and treated as {'requests': '*'}.
|
||||
({"requests": {}}, "requests"),
|
||||
# Hash value should be passed into the result.
|
||||
(
|
||||
{
|
||||
@@ -132,24 +146,34 @@ def test_convert_deps_to_pip(deps, expected):
|
||||
],
|
||||
)
|
||||
def test_convert_deps_to_pip_one_way(deps, expected):
|
||||
assert dependencies.convert_deps_to_pip(deps, r=False) == [expected.lower()]
|
||||
assert dependencies.convert_deps_to_pip(deps) == [expected.lower()]
|
||||
|
||||
|
||||
@flaky
|
||||
@pytest.mark.utils
|
||||
def test_convert_deps_to_pip_one_way_flaky():
|
||||
deps = {"requests": dict()}
|
||||
expected = "requests"
|
||||
assert dependencies.convert_deps_to_pip(deps) == [expected.lower()]
|
||||
|
||||
|
||||
@pytest.mark.utils
|
||||
@pytest.mark.parametrize(
|
||||
"deps, expected",
|
||||
[
|
||||
({"requests": {}}, ["requests"]),
|
||||
({"FooProject": {"path": ".", "editable" : "true"}}, []),
|
||||
({"FooProject": {"path": ".", "editable": "true"}}, []),
|
||||
({"FooProject": {"version": "==1.2"}}, ["fooproject==1.2"]),
|
||||
({"requests": {"extras": ["security"]}}, []),
|
||||
({"requests": {"extras": []}}, ["requests"]),
|
||||
({"extras" : {}}, ["extras"]),
|
||||
({"uvicorn[standard]" : {}}, [])
|
||||
({"extras": {}}, ["extras"]),
|
||||
({"uvicorn[standard]": {}}, [])
|
||||
],
|
||||
)
|
||||
def test_get_constraints_from_deps(deps, expected):
|
||||
assert dependencies.get_constraints_from_deps(deps) == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize("line,result", [
|
||||
("-i https://example.com/simple/", ("https://example.com/simple/", None, None, [])),
|
||||
("--extra-index-url=https://example.com/simple/", (None, "https://example.com/simple/", None, [])),
|
||||
|
||||
Reference in New Issue
Block a user