Metadata-Version: 1.1
Name: pytest-virtualenv
Version: 1.3.0
Summary: Virtualenv fixture for py.test
Home-page: https://github.com/manahl/pytest-plugins
Author: Edward Easton
Author-email: eeaston@gmail.com
License: MIT license
Description-Content-Type: UNKNOWN
Description: # Py.test Virtualenv Fixture
        
        Create a Python virtual environment in your test that cleans up on teardown. 
        The fixture has utility methods to install packages and list what's installed.
        
        ## Installation
        
        Install using your favourite package installer:
        ```bash
            pip install pytest-virtualenv
            # or
            easy_install pytest-virtualenv
        ```
            
        Enable the fixture explicitly in your tests or conftest.py (not required when using setuptools entry points):
        
        ```python
            pytest_plugins = ['pytest_virtualenv']
        ```
        
        ## Configuration
        
        This fixture is configured using the following evironment variables
        
        | Setting | Description | Default
        | ------- | ----------- | -------
        | VIRTUALENV_FIXTURE_EXECUTABLE | Which virtualenv executable will be used to create new venvs | `virtualenv`
        
        
        ## Fixture Attributes
        
        Here's a noddy test case to demonstrate the basic fixture attributes. 
        For more information on `path.py` see https://pythonhosted.org/path.py
        
        ```python
        def test_virtualenv(virtualenv):
            # the 'virtualenv' attribute is a `path.py` object for the root of the virtualenv
            dirnames = virtualenv.virtualenv.dirs()
            assert {'bin', 'include', 'lib'}.intersection(set(dirnames))
            
            # the 'python' attribute is a `path.py` object for the python executable
            assert virtualenv.python.endswith('/bin/python')
        ```
        
        ## Installing Packages
        
        You can install packages by name and query what's installed.
        
        ```python
        def test_installing(virtualenv):
            virtualenv.install_package('coverage', installer='pip')
            
            # installed_packages() will return a list of `PackageEntry` objects.
            assert 'coverage' in [i.name for i in virtualenv.installed_packages()]
        ```
        
        ## Developing Source Checkouts
        
        Any packages set up in the *test runner's* python environment (ie, the same runtime that 
        ``py.test`` is installed in) as source checkouts using `python setup.py develop` will be 
        detected as such and can be installed by name using `install_package`.
        By default they are installed into the virtualenv using `python setup.py develop`, there
        is an option to build and install an egg as well:
        
        ```python
        def test_installing_source(virtualenv):
            # Install a source checkout of my_package as an egg file
            virtualenv.install_package('my_package',  build_egg=True)
        ```
        
        
        ## Running Commands
        
        The test fixture has a `run` method which allows you to run commands with the correct
        paths set up as if you had activated the virtualenv first. 
        
        ```python
        def test_run(virtualenv):
            python_exe_path  = virtualenv.python
            runtime_exe = virtualenv.run("python -c 'import sys; print sys.executable'", capture=True)
            assert runtime_exe == python_exe_path
        ```
        
        ## Running Commands With Coverage
        
        The test fixture has a `run_with_coverage` method which is like `run` but runs the command
        under coverage *inside the virtualenv*. This is useful for capturing test coverage on 
        tools that are being tested outside the normal test runner environment.
        
        ```python
        def test_coverage(virtualenv):
            # You will have to install coverage first
            virtualenv.install_package(coverage)
            virtualenv.run_with_coverage(["my_entry_point", "--arg1", "--arg2"])
        ```
        
        ## Changelog
        
        ### 1.3.0 (2017-11-17)
         * Fixed workspace deletion when teardown is None
         * Fixed squash of root logger in pytest-listener
         * Added S3 Minio fixture (many thanks to Gavin Bisesi)
         * Added Postgres fixture (many thanks to Gavin Bisesi)
         * Use requests for server fixtures http gets as it handles redirects and proxies properly
        
        ### 1.2.12 (2017-8-1)
         * Fixed regression on cacheing ephemeral hostname, some clients were relying on this. This is now optional.
        
        ### 1.2.11 (2017-7-21)
         * Fix for OSX binding to illegal local IP range (Thanks to Gavin Bisesi)
         * Setup and Py3k fixes for pytest-profiling (Thanks to xoviat)
         * We no longer try and bind port 5000 when reserving a local IP host, as someone could have bound it to 0.0.0.0
         * Fix for #46 sourcing gprof2dot when the local venv has not been activated
        
        ### 1.2.10 (2017-2-23)
         * Handle custom Pytest test items in pytest-webdriver
        
        ### 1.2.9 (2017-2-23)
         * Add username into mongo server fixture tempdir path to stop collisions on shared multiuser filesystems
        
        ### 1.2.8 (2017-2-21)
         * Return function results in shutil.run.run_as_main
        
        ### 1.2.7 (2017-2-20)
         * More handling for older versions of path.py
         * Allow virtualenv argument passing in pytest-virtualenv
        
        ### 1.2.6 (2017-2-16 )
         * Updated devpi server server setup for devpi-server >= 2.0
         * Improvements for random port picking
         * HTTPD server now binds to 0.0.0.0 by default to aid Selenium-style testing
         * Updated mongodb server args for mongodb >= 3.2
         * Corrections for mongodb fixture config and improve startup logic
         * Added module-scoped mongodb fixture
         * Handling for older versions of path.py
         * Fix for #40 where tests that chdir break pytest-profiling
        
        ### 1.2.5 (2016-12-09)
         * Improvements for server runner host and port generation, now supports random local IPs
         * Bugfix for RethinkDB fixture config
        
        ### 1.2.4 (2016-11-14)
         * Bugfix for pymongo extra dependency
         * Windows compatibility fix for pytest-virtualenv (Thanks to Jean-Christophe Fillion-Robin for PR)
         * Fix symlink handling for pytest-shutil.cmdline.get_real_python_executable
        
        ### 1.2.3 (2016-11-7)
         * Improve resiliency of Mongo fixture startup checks
        
        ### 1.2.2 (2016-10-27)
         * Python 3 compatibility across most of the modules
         * Fixed deprecated Path.py imports (Thanks to Bryan Moscon)
         * Fixed deprecated multicall in pytest-profiling (Thanks to Paul van der Linden for PR)
         * Added devpi-server fixture to create an index per test function
         * Added missing licence file
         * Split up httpd server fixture config so child classes can override loaded modules easier
         * Added 'preserve_sys_path' argument to TestServer base class which exports the current python sys.path to subprocesses. 
         * Updated httpd, redis and jenkins runtime args and paths to current Ubuntu spec
         * Ignore errors when tearing down workspaces to avoid race conditions in 'shutil.rmtree' implementation
        
        ### 1.2.1 (2016-3-1)
         * Fixed pytest-verbose-parametrize for latest version of py.test
        
        ### 1.2.0 (2016-2-19)
         * New plugin: git repository fixture
        
        ### 1.1.1 (2016-2-16)
         * pytest-profiling improvement: escape illegal characters in .prof files (Thanks to Aarni Koskela for the PR)
        
        ### 1.1.0 (2016-2-15)
         
         * New plugin: devpi server fixture
         * pytest-profiling improvement: overly-long .prof files are saved as the short hash of the test name (Thanks to Vladimir Lagunov for PR)
         * Changed default behavior of workspace.run() to not use a subshell for security reasons
         * Corrected virtualenv.run() method to handle arguments the same as the parent method workspace.run()
         * Removed deprecated '--distribute' from virtualenv args
        
        ### 1.0.1 (2015-12-23)
        
         *  Packaging bugfix
        
        ### 1.0.0 (2015-12-21)
        
         *  Initial public release
        
        
Platform: unix
Platform: linux
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 5 - Production/Stable
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Utilities
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
