1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
import os
import sys
import pytest
@pytest.mark.categories
@pytest.mark.install
def test_basic_category_install(pipenv_instance_private_pypi):
with pipenv_instance_private_pypi() as p:
c = p.pipenv("install six --categories prereq")
assert c.returncode == 0
assert "six" not in p.pipfile["packages"]
assert "six" not in p.lockfile["default"]
assert "six" in p.pipfile["prereq"]
assert "six" in p.lockfile["prereq"]
@pytest.mark.categories
@pytest.mark.install
@pytest.mark.requirements
def test_basic_category_install_from_requirements(pipenv_instance_private_pypi):
with pipenv_instance_private_pypi(pipfile=False) as p:
# Write a requirements file
with open("requirements.txt", "w") as f:
f.write("six==1.16.0")
c = p.pipenv("install --categories prereq")
assert c.returncode == 0
os.unlink("requirements.txt")
print(c.stdout)
print(c.stderr)
# assert stuff in pipfile
assert c.returncode == 0
assert "six" not in p.pipfile["packages"]
assert "six" not in p.lockfile["default"]
assert "six" in p.pipfile["prereq"]
assert "six" in p.lockfile["prereq"]
@pytest.mark.categories
@pytest.mark.install
@pytest.mark.parametrize("categories", ["prereq other", "prereq, other"])
def test_multiple_category_install(pipenv_instance_private_pypi, categories):
with pipenv_instance_private_pypi() as p:
c = p.pipenv('install six --categories="prereq other"')
assert c.returncode == 0
assert "six" not in p.pipfile["packages"]
assert "six" not in p.lockfile["default"]
assert "six" in p.pipfile["prereq"]
assert "six" in p.lockfile["prereq"]
assert "six" in p.lockfile["other"]
assert "six" in p.lockfile["other"]
@pytest.mark.categories
@pytest.mark.install
@pytest.mark.requirements
def test_multiple_category_install_from_requirements(pipenv_instance_private_pypi):
with pipenv_instance_private_pypi(pipfile=False) as p:
# Write a requirements file
with open("requirements.txt", "w") as f:
f.write("six==1.16.0")
c = p.pipenv('install --categories="prereq other"')
assert c.returncode == 0
os.unlink("requirements.txt")
print(c.stdout)
print(c.stderr)
# assert stuff in pipfile
assert c.returncode == 0
assert "six" not in p.pipfile["packages"]
assert "six" not in p.lockfile["default"]
assert "six" in p.pipfile["prereq"]
assert "six" in p.lockfile["prereq"]
assert "six" in p.pipfile["other"]
assert "six" in p.lockfile["other"]
@pytest.mark.extras
@pytest.mark.install
@pytest.mark.local
@pytest.mark.skipif(sys.version_info >= (3, 12), reason="test is not 3.12 compatible")
def test_multiple_category_install_proceeds_in_order_specified(pipenv_instance_private_pypi):
"""Ensure -e .[extras] installs.
"""
with pipenv_instance_private_pypi() as p:
setup_py = os.path.join(p.path, "setup.py")
with open(setup_py, "w") as fh:
contents = """
import six
from setuptools import setup
setup(
name='testpipenv',
version='0.1',
description='Pipenv Test Package',
author='Pipenv Test',
author_email='test@pipenv.package',
license='MIT',
packages=[],
install_requires=['six', 'setuptools'],
zip_safe=False
)
""".strip()
fh.write(contents)
with open(os.path.join(p.path, 'Pipfile'), 'w') as fh:
fh.write("""
[packages]
testpipenv = {path = ".", editable = true, skip_resolver = true}
[prereq]
six = "*"
""".strip())
c = p.pipenv("lock -v")
assert c.returncode == 0
assert "testpipenv" in p.lockfile["default"]
assert "testpipenv" not in p.lockfile["prereq"]
assert "six" in p.lockfile["prereq"]
c = p.pipenv('sync --categories="prereq packages" --extra-pip-args="--no-build-isolation" -v')
assert c.returncode == 0
|