Metadata-Version: 2.1
Name: pytest-shutil
Version: 1.7.0
Summary: A goodie-bag of unix shell and environment tools for py.test
Home-page: https://github.com/manahl/pytest-plugins
Author: Edward Easton
Author-email: eeaston@gmail.com
License: MIT license
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
Classifier: Programming Language :: Python :: 3.7
License-File: LICENSE

pytest-shutil
=============

This library is a goodie-bag of Unix shell and environment management
tools for automated tests. A summary of the available functions is
below, look at the source for the full listing.

Installation
------------

Install using your favourite package manager::

.. code:: bash

       pip install pytest-shutil
       #  or..
       easy_install pytest-shutil

Workspace Fixture
-----------------

The workspace fixture is simply a temporary directory at function-scope
with a few bells and whistles::

.. code:: python

       # Enable the fixture explicitly in your tests or conftest.py (not required when using setuptools entry points)
       pytest_plugins = ['pytest_shutil']
       
       def test_something(workspace):
           # Workspaces contain a handle to the path.py path object (see https://pathpy.readthedocs.io/)
           path = workspace.workspace         
           script = path / 'hello.sh'
           script.write_text('#!/bin/sh\n echo hello world!')
           
           # There is a 'run' method to execute things relative to the workspace root
           workspace.run('hello.sh')

``pytest_shutil.env``: Shell helpers
------------------------------------

========= ==================================================
function  description
========= ==================================================
set_env   contextmanager to set env vars
unset_env contextmanager to unset env vars
no_env    contextmanager to unset a single env var
no_cov    contextmanager to disable coverage in subprocesses
========= ==================================================

``pytest_shutil.cmdline``: Command-line helpers
-----------------------------------------------

+-------------------------------+--------------------------------------+
| function                      | description                          |
+===============================+======================================+
| umask                         | contextmanager to set the umask      |
+-------------------------------+--------------------------------------+
| chdir                         | contextmanager to change to a        |
|                               | directory                            |
+-------------------------------+--------------------------------------+
| TempDir                       | contextmanager for a temporary       |
|                               | directory                            |
+-------------------------------+--------------------------------------+
| PrettyFormatter               | simple text formatter for drawing    |
|                               | title, paragrahs, hrs.               |
+-------------------------------+--------------------------------------+
| copy_files                    | copy all files from one directory to |
|                               | another                              |
+-------------------------------+--------------------------------------+
| getch                         | cross-platform read of a single      |
|                               | character from the screen            |
+-------------------------------+--------------------------------------+
| which                         | analoge of unix ``which``            |
+-------------------------------+--------------------------------------+
| get_real_python_executable    | find our system Python, useful when  |
|                               | running under virtualenv             |
+-------------------------------+--------------------------------------+

``pytest_shutil.run``: Running things in subprocesses
-----------------------------------------------------

+-------------------------------+--------------------------------------+
| function                      | description                          |
+===============================+======================================+
| run                           | run a command, with options for      |
|                               | capturing output, checking return    |
|                               | codes.                               |
+-------------------------------+--------------------------------------+
| run_as_main                   | run a function as if it was the      |
|                               | system entry point                   |
+-------------------------------+--------------------------------------+
| run_module_as_main            | run a module as if it was the system |
|                               | entry point                          |
+-------------------------------+--------------------------------------+
| run_in_subprocess             | run a function in a subprocess       |
+-------------------------------+--------------------------------------+
| run_with_coverage             | run a command with coverage enabled  |
+-------------------------------+--------------------------------------+

Changelog
---------

1.7.0
~~~~~

-  All: Support pytest >= 4.0.0
-  All: Support Python 3.7
-  pytest-server-fixtures: if host not defined on your machine, default
   to localhost
-  pytest-server-fixture: Pin to rethinkdb < 2.4.0 due to upstream API
   changes
-  pytest-verbose-parametrize: Add support for revamped marker
   infrastructure
-  pytest-verbose-parametrize: Fix integration tests to support pytest
   >= 4.1.0
-  pytest-virtualenv: Add virtualenv as install requirement. Fixes #122
-  pytest-webdriver: Fix RemovedInPytest4Warning using getfixturevalue
-  circleci: Fix checks by skipping coverall submission for developer
   without push access
-  wheels: Generate universal wheels installable with both python 2.x
   and 3.x
-  dist: Remove support for building and distributing \*.egg files
-  VagrantFile: Install python 3.7 and initialize python 3.7 by default
-  Fix DeprecationWarning warnings using “logger.warning()” function

.. _section-1:

1.6.2 (2019-02-21)
~~~~~~~~~~~~~~~~~~

-  pytest-server-fixtures: suppress stacktrace if kill() is called
-  pytest-server-fixtures: fix random port logic in TestServerV2

.. _section-2:

1.6.1 (2019-02-12)
~~~~~~~~~~~~~~~~~~

-  pytest-server-fixtures: fix exception when attempting to access
   hostname while server is not started

.. _section-3:

1.6.0 (2019-02-12)
~~~~~~~~~~~~~~~~~~

-  pytest-server-fixtures: added previously removed TestServerV2.kill()
   function
-  pytest-profiling: pin more-itertools==5.0.0 in integration tests, as
   that’s a PY3 only release

.. _section-4:

1.5.1 (2019-01-24)
~~~~~~~~~~~~~~~~~~

-  pytest-verbose-parametrize: fixed unicode parameters when using
   ``@pytest.mark.parametrize``

.. _section-5:

1.5.0 (2019-01-23)
~~~~~~~~~~~~~~~~~~

-  pytest-server-fixtures: made postgres fixtures and its tests
   optional, like all other fixtures
-  pytest-server-fixtures: reverted a fix for pymongo deprecation
   warning, as this will break compatibility with pymongo 3.6.0
-  pytest-server-fixtures: dropped RHEL5 support in httpd

.. _section-6:

1.4.1 (2019-01-18)
~~~~~~~~~~~~~~~~~~

-  pytest-server-fixtures: server fixture binary path specified in ENV
   now only affect server class ‘thread’

.. _section-7:

1.4.0 (2019-01-15)
~~~~~~~~~~~~~~~~~~

-  Fixing python 3 compatibility in Simple HTTP Server fixture
-  Fixed broken tests in pytest-profiling
-  Pinned pytest<4.0.0 until all deprecation warnings are fixed.
-  pytest-webdriver: replaced deprecated phantomjs with headless Google
   Chrome.
-  Add Vagrantfile to project to make test environment portable.
-  Add .editorconfig file to project.
-  pytest-server-fixtures: add TestServerV2 with Docker and Kubernetes
   support.
-  pytest-server-fixtures: fix for an issue where MinioServer is not
   cleaned up after use.
-  pytest-server-fixtures: fix deprecation warnings when calling
   pymongo.
-  pytest-server-fixtures: close pymongo client on MongoTestServer
   teardown.
-  pytest-server-fixtures: upgrade Mongo, Redis and RethinkDB to
   TestServerV2.
-  coveralls: fix broken coveralls

.. _section-8:

1.3.1 (2018-06-28)
~~~~~~~~~~~~~~~~~~

-  Use pymongo list_database_names() instead of the deprecated
   database_names(), added pymongo>=3.6.0 dependency

.. _section-9:

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

.. _section-10:

1.2.12 (2017-8-1)
~~~~~~~~~~~~~~~~~

-  Fixed regression on cacheing ephemeral hostname, some clients were
   relying on this. This is now optional.

.. _section-11:

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

.. _section-12:

1.2.10 (2017-2-23)
~~~~~~~~~~~~~~~~~~

-  Handle custom Pytest test items in pytest-webdriver

.. _section-13:

1.2.9 (2017-2-23)
~~~~~~~~~~~~~~~~~

-  Add username into mongo server fixture tempdir path to stop
   collisions on shared multiuser filesystems

.. _section-14:

1.2.8 (2017-2-21)
~~~~~~~~~~~~~~~~~

-  Return function results in shutil.run.run_as_main

.. _section-15:

1.2.7 (2017-2-20)
~~~~~~~~~~~~~~~~~

-  More handling for older versions of path.py
-  Allow virtualenv argument passing in pytest-virtualenv

.. _section-16:

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

.. _section-17:

1.2.5 (2016-12-09)
~~~~~~~~~~~~~~~~~~

-  Improvements for server runner host and port generation, now supports
   random local IPs
-  Bugfix for RethinkDB fixture config

.. _section-18:

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

.. _section-19:

1.2.3 (2016-11-7)
~~~~~~~~~~~~~~~~~

-  Improve resiliency of Mongo fixture startup checks

.. _section-20:

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

.. _section-21:

1.2.1 (2016-3-1)
~~~~~~~~~~~~~~~~

-  Fixed pytest-verbose-parametrize for latest version of py.test

.. _section-22:

1.2.0 (2016-2-19)
~~~~~~~~~~~~~~~~~

-  New plugin: git repository fixture

.. _section-23:

1.1.1 (2016-2-16)
~~~~~~~~~~~~~~~~~

-  pytest-profiling improvement: escape illegal characters in .prof
   files (Thanks to Aarni Koskela for the PR)

.. _section-24:

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

.. _section-25:

1.0.1 (2015-12-23)
~~~~~~~~~~~~~~~~~~

-  Packaging bugfix

.. _section-26:

1.0.0 (2015-12-21)
~~~~~~~~~~~~~~~~~~

-  Initial public release


