A goodie-bag of unix shell and environment tools for py.test
Project description
# 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::
```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::
```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://pythonhosted.org/path.py)
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.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
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::
```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::
```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://pythonhosted.org/path.py)
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.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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pytest-shutil-1.2.11.tar.gz
(18.3 kB
view hashes)
Built Distributions
pytest_shutil-1.2.11-py2.7.egg
(12.4 kB
view hashes)
Close
Hashes for pytest_shutil-1.2.11-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58685bb8f20ec606490766973024be019f16c8d9413b7e8d86c54fdb16630823 |
|
MD5 | 2d733645329c9f35eb784a2a98e5cd20 |
|
BLAKE2b-256 | dbfe69ad888c6aee325f2a4b581b853db6e64c9ceda8585e9690847293b828eb |