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.4 (2016-11-14)
* Bugfix for pymongo extra dependency
### 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.4 (2016-11-14)
* Bugfix for pymongo extra dependency
### 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.4.tar.gz
(16.3 kB
view details)
Built Distributions
pytest_shutil-1.2.4-py2.7.egg
(11.8 kB
view details)
File details
Details for the file pytest-shutil-1.2.4.tar.gz
.
File metadata
- Download URL: pytest-shutil-1.2.4.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3fc464033dc39396a67eac9e228a0682e866654b8017819b2511bdbd8ed751f |
|
MD5 | cd643dd4e5a9eef3719f6e7f0e336f70 |
|
BLAKE2b-256 | 977c3926d28a3c51a5d3dcd1ff1a3dab30cf5d55312f3161d1cdb676048ef682 |
Provenance
File details
Details for the file pytest_shutil-1.2.4-py2.7.egg
.
File metadata
- Download URL: pytest_shutil-1.2.4-py2.7.egg
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebf168b72bf307961563143a54a8d4ce5ac5f11209b40bd8db56cec84a76c1bd |
|
MD5 | 9a83b79ba1a840af32beb6350876faec |
|
BLAKE2b-256 | 3dea674a676f5bb88c722abe62eed1594ab5ec82441ac59a82f13b8a03bc29ba |
Provenance
File details
Details for the file pytest_shutil-1.2.4-py2-none-any.whl
.
File metadata
- Download URL: pytest_shutil-1.2.4-py2-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2000ff29297e6e88fda22721630b6402e6a0f7f4b41e43c192dced8657cd2060 |
|
MD5 | 415bea039b8f7a9757a62f15c1fce143 |
|
BLAKE2b-256 | 6f3f4e8f6af9eac5bd1e16e2654de84d82f5a25df34f5d853ac595fb2a342ec9 |