Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_system_and_deploy_work(PipenvInstance, pypi):
with PipenvInstance(chdir=True, pypi=pypi) as p:
c = p.pipenv("install six requests")
assert c.return_code == 0
c = p.pipenv("--rm")
assert c.return_code == 0
c = delegator.run("virtualenv .venv")
assert c.return_code == 0
c = p.pipenv("install --system --deploy")
assert c.return_code == 0
c = p.pipenv("--rm")
assert c.return_code == 0
Path(p.pipfile_path).write_text(
u"""
[packages]
requests
""".strip()
)
c = p.pipenv("install --system")
assert c.return_code == 0
def test_timeout_short(self):
delegator.run('mkdir test_timeout_short')
os.chdir('test_timeout_short')
os.environ['PIPENV_VENV_IN_PROJECT'] = '1'
os.environ['PIPENV_TIMEOUT'] = '0'
assert delegator.run('copy /y nul Pipfile').return_code == 0
os.chdir('..')
shutil.rmtree('test_timeout_short')
del os.environ['PIPENV_TIMEOUT']
delegator.run('mkdir test_project')
os.chdir('test_project')
os.environ['PIPENV_VENV_IN_PROJECT'] = '1'
assert delegator.run('copy /y nul Pipfile').return_code == 0
assert delegator.run('pipenv install Werkzeug').return_code == 0
assert delegator.run('pipenv install pytest --dev').return_code == 0
assert delegator.run('pipenv install git+https://github.com/requests/requests.git@v2.18.4#egg=requests').return_code == 0
assert delegator.run('pipenv lock').return_code == 0
# Test uninstalling a package after locking.
assert delegator.run('pipenv uninstall Werkzeug').return_code == 0
pipfile_output = delegator.run('type Pipfile').out
lockfile_output = delegator.run('type Pipfile.lock').out
# Ensure uninstall works.
assert 'Werkzeug' not in pipfile_output
assert 'werkzeug' not in lockfile_output
# Ensure dev-packages work.
assert 'pytest' in pipfile_output
assert 'pytest' in lockfile_output
# Ensure vcs dependencies work.
assert 'requests' in pipfile_output
assert '"git": "https://github.com/requests/requests.git"' in lockfile_output
os.chdir('..')
shutil.rmtree('test_project')
def test_cli_usage(self):
delegator.run('mkdir test_project')
os.chdir('test_project')
os.environ['PIPENV_VENV_IN_PROJECT'] = '1'
assert delegator.run('copy /y nul Pipfile').return_code == 0
assert delegator.run('pipenv install Werkzeug').return_code == 0
assert delegator.run('pipenv install pytest --dev').return_code == 0
assert delegator.run('pipenv install git+https://github.com/requests/requests.git@v2.18.4#egg=requests').return_code == 0
assert delegator.run('pipenv lock').return_code == 0
# Test uninstalling a package after locking.
assert delegator.run('pipenv uninstall Werkzeug').return_code == 0
pipfile_output = delegator.run('type Pipfile').out
lockfile_output = delegator.run('type Pipfile.lock').out
# Ensure uninstall works.
assert 'Werkzeug' not in pipfile_output
assert 'werkzeug' not in lockfile_output
def test_timeout_long(self):
delegator.run('mkdir test_timeout_long')
os.chdir('test_timeout_long')
os.environ['PIPENV_VENV_IN_PROJECT'] = '1'
os.environ['PIPENV_TIMEOUT'] = '60'
assert delegator.run('copy /y nul Pipfile').return_code == 0
os.chdir('..')
shutil.rmtree('test_timeout_long')
del os.environ['PIPENV_TIMEOUT']
os.environ['PIPENV_VENV_IN_PROJECT'] = '1'
os.environ['PIPENV_MAX_DEPTH'] = '1'
with open('requirements.txt', 'w') as f:
f.write('requests[socks]==2.18.1\n'
'git+https://github.com/kennethreitz/records.git@v0.5.0#egg=records\n'
'-e git+https://github.com/kennethreitz/maya.git@v0.3.2#egg=maya\n'
'six==1.10.0\n')
assert delegator.run('pipenv install').return_code == 0
print(delegator.run('pipenv lock').err)
assert delegator.run('pipenv lock').return_code == 0
pipfile_output = delegator.run('type Pipfile').out
lockfile_output = delegator.run('type Pipfile.lock').out
# Ensure extras work.
assert 'socks' in pipfile_output
assert 'pysocks' in lockfile_output
# Ensure vcs dependencies work.
assert 'records' in pipfile_output
assert '"git": "https://github.com/kennethreitz/records.git"' in lockfile_output
# Ensure editable packages work.
assert 'ref = "v0.3.2"' in pipfile_output
assert '"editable": true' in lockfile_output
# Ensure BAD_PACKAGES aren't copied into Pipfile from requirements.txt.
assert 'six = "==1.10.0"' not in pipfile_output
catch_exceptions = kwargs.pop("catch_exceptions", True)
if isinstance(cmd, (six.string_types, list, tuple)):
cmd = Script.parse(cmd)
if not isinstance(cmd, Script):
raise TypeError("Command input must be a string, list or tuple")
if "env" not in kwargs:
kwargs["env"] = os.environ.copy()
kwargs["env"]["PYTHONIOENCODING"] = "UTF-8"
try:
cmd_string = cmd.cmdify()
except TypeError:
click_echo("Error turning command into string: {0}".format(cmd), err=True)
sys.exit(1)
if environments.is_verbose():
click_echo("Running command: $ {0}".format(cmd_string, err=True))
c = delegator.run(cmd_string, *args, **kwargs)
return_code = c.return_code
if environments.is_verbose():
click_echo("Command output: {0}".format(
crayons.blue(decode_for_output(c.out))
), err=True)
if not c.ok and catch_exceptions:
raise PipenvCmdError(cmd_string, c.out, c.err, return_code)
return c
def do_clean(
three=None, python=None, dry_run=False, bare=False, verbose=False,
):
# Ensure that virtualenv is available.
ensure_project(three=three, python=python, validate=False)
ensure_lockfile()
installed_package_names = []
pip_freeze_command = delegator.run('{0} freeze'.format(which_pip()))
for line in pip_freeze_command.out.split('\n'):
installed = line.strip()
if not installed or installed.startswith('#'): # Comment or empty.
continue
r = requirementslib.Requirement.from_line(installed).requirement
# Ignore editable installations.
if not r.editable:
installed_package_names.append(r.name.lower())
else:
if verbose:
click.echo('Ignoring {0}.'.format(repr(r.name)), err=True)
# Remove known "bad packages" from the list.
for bad_package in BAD_PACKAGES:
if bad_package in installed_package_names:
if verbose:
click.echo('Ignoring {0}.'.format(repr(bad_package)), err=True)
else:
# Tell the user we're installing Python.
click.echo(
u'{0} {1} {2} {3}{4}'.format(
crayons.normal(u'Installing', bold=True),
crayons.green(
u'CPython {0}'.format(version), bold=True
),
crayons.normal(u'with pyenv', bold=True),
crayons.normal(u'(this may take a few minutes)'),
crayons.normal(u'...', bold=True),
)
)
with spinner():
# Install Python.
c = delegator.run(
'pyenv install {0} -s'.format(version),
timeout=PIPENV_INSTALL_TIMEOUT,
block=False,
)
# Wait until the process has finished...
c.block()
try:
assert c.return_code == 0
except AssertionError:
click.echo(u'Something went wrong...')
click.echo(crayons.blue(c.err), err=True)
# Print the results, in a beautiful blue...
click.echo(crayons.blue(c.out), err=True)
# Add new paths to PATH.
activate_pyenv()
# Find the newly installed Python, hopefully.