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.2 (2016-10-2r70)
* 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.2 (2016-10-2r70)
* 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.2.tar.gz
(16.2 kB
view details)
Built Distributions
pytest_shutil-1.2.2-py2.7.egg
(11.7 kB
view details)
File details
Details for the file pytest-shutil-1.2.2.tar.gz
.
File metadata
- Download URL: pytest-shutil-1.2.2.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a267a5864d094522f58192b8485f1fc05c2faba418497d718b09d5062a456d5 |
|
MD5 | aaa0166ab10043c491ab734c142127d5 |
|
BLAKE2b-256 | 81277c0d277487eb731cd9e730d922d1accba1f0b5d9ccdfdccdf029a3a9d051 |
Provenance
File details
Details for the file pytest_shutil-1.2.2-py2.7.egg
.
File metadata
- Download URL: pytest_shutil-1.2.2-py2.7.egg
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c598f68c2a1bd75d30fc0ce17ef20c168c059da0b92d2d544b07c0a712d8a2a |
|
MD5 | 904e5b2e1f7166ee1167b6fdcf3edff2 |
|
BLAKE2b-256 | bc63edba872676eda01100f1f5d5daf7b4b624142d781797358f28b91d82c0bd |
Provenance
File details
Details for the file pytest_shutil-1.2.2-py2-none-any.whl
.
File metadata
- Download URL: pytest_shutil-1.2.2-py2-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80ebf1138203c0495247eedffd2f566e1107a3b5d8a38a170a84979eff910ce4 |
|
MD5 | 4284938aa340ee92353e966dc445a89f |
|
BLAKE2b-256 | 6aefc52b40dc2d8301a04d78364f25166dc045cc09714036604ffded5eab387a |