Try to address these sproadic test failures without skipping the test.

This commit is contained in:
Matt Davis
2022-08-28 18:22:29 -04:00
committed by Oz N Tiram
parent be85c33ea2
commit bac7b68e4a
5 changed files with 37 additions and 24 deletions
-1
View File
@@ -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
View File
@@ -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
+2 -12
View File
@@ -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):
+1 -1
View File
@@ -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..."))
+33 -9
View File
@@ -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, [])),