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.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.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.6.tar.gz
(16.9 kB
view details)
Built Distributions
pytest_shutil-1.2.6-py2.7.egg
(12.1 kB
view details)
File details
Details for the file pytest-shutil-1.2.6.tar.gz
.
File metadata
- Download URL: pytest-shutil-1.2.6.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b622570ba859b24607f65e6a4839214887d85e405c6d94acb72f30d9acf1d6f2 |
|
MD5 | a900064cc3525defbf0e5001730a0a47 |
|
BLAKE2b-256 | f46cc536c7bf1bd1d6a385eef074f581d513b4a5525b2bd5cc763f4870d66516 |
Provenance
File details
Details for the file pytest_shutil-1.2.6-py2.7.egg
.
File metadata
- Download URL: pytest_shutil-1.2.6-py2.7.egg
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 62f15c032134fe3486b18294955af9937f87a8f6b6a314b2e2a39275eec988df |
|
MD5 | a410dfb9a589d167524d79441c012b75 |
|
BLAKE2b-256 | 7fda05c3b7a61653cc197cb3f4f0fd518cdb05b667728b3ec6ac874b1e155131 |
Provenance
File details
Details for the file pytest_shutil-1.2.6-py2-none-any.whl
.
File metadata
- Download URL: pytest_shutil-1.2.6-py2-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | af8437f315a767b694601b8d08420a827a371fd4c43ee767fc511dc5a4af4733 |
|
MD5 | b0fc69d0c7da8edebf6c1ca82dbd8220 |
|
BLAKE2b-256 | b8cf689bf8db2c5bbb34a6514ea36b965454da5aa3d4ec22895080c83d27aaa1 |