# Path: venv_update.py
# DEFAULT_VIRTUALENV_PATH = 'venv'
# DEFAULT_OPTION_VALUES = {
#     'venv=': (DEFAULT_VIRTUALENV_PATH,),
#     'install=': ('-r', 'requirements.txt',),
#     'pip-command=': ('pip-faster', 'install', '--upgrade', '--prune'),
#     'bootstrap-deps=': ('venv-update==' + __version__,),
# }
# def parseargs(argv):
# def timid_relpath(arg):
# def shellescape(args):
# def colorize(cmd):
# def run(cmd):
# def info(msg):
# def check_output(cmd):
# def samefile(file1, file2):
# def exec_(argv):  # never returns
#     def __init__(self):
# def exec_scratch_virtualenv(args):
# def get_original_path(venv_path):  # TODO-TEST: a unit test
# def get_python_version(interpreter):
# def invalid_virtualenv_reason(venv_path, source_python, destination_python, virtualenv_system_site_packages):
# def ensure_virtualenv(args, return_values):
# def wait_for_all_subprocesses():
# def touch(filename, timestamp):
# def mark_venv_valid(venv_path):
# def mark_venv_invalid(venv_path):
# def dotpy(filename):
# def venv_executable(venv_path, executable):
# def venv_python(venv_path):
# def user_cache_dir():
# def venv_update(
#         venv=DEFAULT_OPTION_VALUES['venv='],
#         install=DEFAULT_OPTION_VALUES['install='],
#         pip_command=DEFAULT_OPTION_VALUES['pip-command='],
#         bootstrap_deps=DEFAULT_OPTION_VALUES['bootstrap-deps='],
# ):
# def execfile_(filename):
# def pip_faster(venv_path, pip_command, install, bootstrap_deps):
# def raise_on_failure(mainfunc, ignore_return=False):
# def main():
# class Scratch(object):
#     class return_values(object):


import os
import pytest
from subprocess import CalledProcessError
from testing import cached_wheels
from testing import install_coverage
from testing import pip_freeze
from testing import requirements
from testing import run
from testing import strip_pip_warnings
from testing import TOP
from testing import uncolor
from venv_update import __version__
from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals





def it_shows_help_for_prune():
    out, err = run('pip-faster', 'install', '--help')
    assert '''
  --prune                     Uninstall any non-required packages.
  --no-prune                  Do not uninstall any non-required packages.

Package Index Options''' in out
    assert err == ''


@pytest.mark.usefixtures('pypi_server')
def it_installs_stuff(tmpdir):
    venv = tmpdir.join('venv')
    install_coverage(venv)

    assert pip_freeze(str(venv)) == '''\
coverage==ANY
coverage-enable-subprocess==1.0
'''

    pip = venv.join('bin/pip').strpath

# Path: venv_update.py
# DEFAULT_VIRTUALENV_PATH = 'venv'
# DEFAULT_OPTION_VALUES = {
#     'venv=': (DEFAULT_VIRTUALENV_PATH,),
#     'install=': ('-r', 'requirements.txt',),
#     'pip-command=': ('pip-faster', 'install', '--upgrade', '--prune'),
#     'bootstrap-deps=': ('venv-update==' + __version__,),
# }
# def parseargs(argv):
# def timid_relpath(arg):
# def shellescape(args):
# def colorize(cmd):
# def run(cmd):
# def info(msg):
# def check_output(cmd):
# def samefile(file1, file2):
# def exec_(argv):  # never returns
#     def __init__(self):
# def exec_scratch_virtualenv(args):
# def get_original_path(venv_path):  # TODO-TEST: a unit test
# def get_python_version(interpreter):
# def invalid_virtualenv_reason(venv_path, source_python, destination_python, virtualenv_system_site_packages):
# def ensure_virtualenv(args, return_values):
# def wait_for_all_subprocesses():
# def touch(filename, timestamp):
# def mark_venv_valid(venv_path):
# def mark_venv_invalid(venv_path):
# def dotpy(filename):
# def venv_executable(venv_path, executable):
# def venv_python(venv_path):
# def user_cache_dir():
# def venv_update(
#         venv=DEFAULT_OPTION_VALUES['venv='],
#         install=DEFAULT_OPTION_VALUES['install='],
#         pip_command=DEFAULT_OPTION_VALUES['pip-command='],
#         bootstrap_deps=DEFAULT_OPTION_VALUES['bootstrap-deps='],
# ):
# def execfile_(filename):
# def pip_faster(venv_path, pip_command, install, bootstrap_deps):
# def raise_on_failure(mainfunc, ignore_return=False):
# def main():
# class Scratch(object):
#     class return_values(object):


# Path: tests/functional/pip_faster.py
import os
import pytest
from subprocess import CalledProcessError
from testing import cached_wheels
from testing import install_coverage
from testing import pip_freeze
from testing import requirements
from testing import run
from testing import strip_pip_warnings
from testing import TOP
from testing import uncolor
from venv_update import __version__

from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals





def it_shows_help_for_prune():
    out, err = run('pip-faster', 'install', '--help')
    assert '''
  --prune                     Uninstall any non-required packages.
  --no-prune                  Do not uninstall any non-required packages.

Package Index Options''' in out
    assert err == ''


@pytest.mark.usefixtures('pypi_server')
def it_installs_stuff(tmpdir):
    venv = tmpdir.join('venv')
    install_coverage(venv)

    assert pip_freeze(str(venv)) == '''\
coverage==ANY
coverage-enable-subprocess==1.0
'''

    pip = venv.join('bin/pip').strpath

    run(pip, 'install', 'venv-update==' + __version__)