mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
6ac1451ec8
* Move away from requirementslib models * Revise test since PEP-440 does not support wildcard versions but does support equivalent compatible release specifiers. * simplify and remove dead code * Ensure the os_name marker is AND with the other markers. * Move what we still need from requirementslib into the pipenv utils and stop vendoring it. * Remove requirementslib. * force upgrade of virtualenv for python 3.12 * remove virtualenv-clone * Update vcs specifiers documentation; infer name from specific pip line formats where possible. * Provide helpful text and error for recently removed commands * Set the right log levels and verbosity to show users the errors generated by pip resolver when supplying -v flag * Fix the collection of all matching package hashes for non-pypi indexes. Plus lesson from testing torch which contains local identifiers.
82 lines
4.2 KiB
Python
82 lines
4.2 KiB
Python
import os
|
|
import tempfile
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
from pipenv.patched.pip._internal.operations.prepare import File
|
|
|
|
from pipenv.utils.requirements import import_requirements
|
|
from pipenv.project import Project
|
|
|
|
|
|
@pytest.mark.cli
|
|
@pytest.mark.deploy
|
|
@pytest.mark.system
|
|
@mock.patch("pipenv.utils.dependencies.unpack_url", mock.MagicMock(return_value=File("/some/path/to/project", content_type=None)))
|
|
@mock.patch("pipenv.utils.dependencies.find_package_name_from_directory")
|
|
def test_auth_with_pw_redacted(mock_find_package_name_from_directory, pipenv_instance_pypi):
|
|
mock_find_package_name_from_directory.return_value = "myproject"
|
|
with pipenv_instance_pypi() as p:
|
|
p.pipenv("run shell")
|
|
project = Project()
|
|
requirements_file = tempfile.NamedTemporaryFile(mode="w+", delete=False)
|
|
requirements_file.write("""git+https://${AUTH_USER}:mypw1@github.com/user/myproject.git@main#egg=myproject""")
|
|
requirements_file.close()
|
|
import_requirements(project, r=requirements_file.name)
|
|
os.unlink(requirements_file.name)
|
|
assert p.pipfile["packages"]["myproject"] == {'git': 'git+https://${AUTH_USER}:****@github.com/user/myproject.git', 'ref': 'main'}
|
|
|
|
|
|
@pytest.mark.cli
|
|
@pytest.mark.deploy
|
|
@pytest.mark.system
|
|
@mock.patch("pipenv.utils.dependencies.unpack_url", mock.MagicMock(return_value=File("/some/path/to/project", content_type=None)))
|
|
@mock.patch("pipenv.utils.dependencies.find_package_name_from_directory")
|
|
def test_auth_with_username_redacted(mock_find_package_name_from_directory, pipenv_instance_pypi):
|
|
mock_find_package_name_from_directory.return_value = "myproject"
|
|
with pipenv_instance_pypi() as p:
|
|
p.pipenv("run shell")
|
|
project = Project()
|
|
requirements_file = tempfile.NamedTemporaryFile(mode="w+", delete=False)
|
|
requirements_file.write("""git+https://username@github.com/user/myproject.git@main#egg=myproject""")
|
|
requirements_file.close()
|
|
import_requirements(project, r=requirements_file.name)
|
|
os.unlink(requirements_file.name)
|
|
assert p.pipfile["packages"]["myproject"] == {'git': 'git+https://****@github.com/user/myproject.git', 'ref': 'main'}
|
|
|
|
|
|
@pytest.mark.cli
|
|
@pytest.mark.deploy
|
|
@pytest.mark.system
|
|
@mock.patch("pipenv.utils.dependencies.unpack_url", mock.MagicMock(return_value=File("/some/path/to/project", content_type=None)))
|
|
@mock.patch("pipenv.utils.dependencies.find_package_name_from_directory")
|
|
def test_auth_with_pw_are_variables_passed_to_pipfile(mock_find_package_name_from_directory, pipenv_instance_pypi):
|
|
mock_find_package_name_from_directory.return_value = "myproject"
|
|
with pipenv_instance_pypi() as p:
|
|
p.pipenv("run shell")
|
|
project = Project()
|
|
requirements_file = tempfile.NamedTemporaryFile(mode="w+", delete=False)
|
|
requirements_file.write("""git+https://${AUTH_USER}:${AUTH_PW}@github.com/user/myproject.git@main#egg=myproject""")
|
|
requirements_file.close()
|
|
import_requirements(project, r=requirements_file.name)
|
|
os.unlink(requirements_file.name)
|
|
assert p.pipfile["packages"]["myproject"] == {'git': 'git+https://${AUTH_USER}:${AUTH_PW}@github.com/user/myproject.git', 'ref': 'main'}
|
|
|
|
@pytest.mark.cli
|
|
@pytest.mark.deploy
|
|
@pytest.mark.system
|
|
@mock.patch("pipenv.utils.dependencies.unpack_url", mock.MagicMock(return_value=File("/some/path/to/project", content_type=None)))
|
|
@mock.patch("pipenv.utils.dependencies.find_package_name_from_directory")
|
|
def test_auth_with_only_username_variable_passed_to_pipfile(mock_find_package_name_from_directory, pipenv_instance_pypi):
|
|
mock_find_package_name_from_directory.return_value = "myproject"
|
|
with pipenv_instance_pypi() as p:
|
|
p.pipenv("run shell")
|
|
project = Project()
|
|
requirements_file = tempfile.NamedTemporaryFile(mode="w+", delete=False)
|
|
requirements_file.write("""git+https://${AUTH_USER}@github.com/user/myproject.git@main#egg=myproject""")
|
|
requirements_file.close()
|
|
import_requirements(project, r=requirements_file.name)
|
|
os.unlink(requirements_file.name)
|
|
assert p.pipfile["packages"]["myproject"] == {'git': 'git+https://${AUTH_USER}@github.com/user/myproject.git', 'ref': 'main'}
|