cleantest
A testing framework for developers who need clean environments in a hurry
Explore cleantest docs »
About
cleantest is a testing framework for quickly bringing up testing environments using the test authors hypervisor of choice. It was created out of NucciTheBoss's desire to efficiently test snap packages, Python code, and Juju charms without needing to make potentially system breaking modifications to the underlying host operating system.
Below is an outline of currently supported operating systems, Python versions, and hypervisors:
| Supported operating systems | |
| Supported python versions | |
| Supported hypervisors |
Getting started
Installing cleantest
The recommended way to install cleantest is by downloading the published package on PyPI:
pip install cleantest
For those who wish to use the latest, bleeding-edge, and potentially unstable version cleantest of cleantest, the following command can be used to install cleantest from the main branch of this repository:
git clone https://github.com/NucciTheBoss/cleantest.git
cd cleantest
python3 -m pip install .
Configuring a test environment provider
Before you can start using cleantest to run tests, you need to set up a test environment provider. Currently, the only supported environment provider is LXD. You can set LXD up on your system using the following commands:
sudo snap install lxd
lxd init --auto
Run your first test
You can use any testing framework of your choice with cleantest, but this example will use pytest:
pip install pytest
Here is a test written using cleantest that you can download:
:clipboard: test.py
#!/usr/bin/env python3
"""A basic test"""
from cleantest.provider import lxd
@lxd(preserve=False)
def do_something():
import sys
try:
import urllib
sys.exit(0)
except ImportError:
sys.exit(1)
class TestSuite:
def test_do_something(self) -> None:
result = do_something()
assert result.exit_code == 0
With the test file downloaded, run the test using pytest:
pytest test.py
Where to next?
Please the see the documentation for more information on all that you can do with cleantest.
Contributing
Please read through the contributing guidelines if you are interested in contributing to cleantest. Included are guidelines for opening issues, code formatting standards, and how to submit contributions to cleantest.
License
Code and documentation copyright © 2022 Jason C. Nucciarone, Canonical Ltd. Please see the Apache-2.0 license for more details.
Roadmap
Here are my (NucciTheBoss's) goals to get cleantest to release version 1.0.0:
Add support for injecting tests into LXD- Add support for multiple distros:
Ubuntu- Debian
- CentOS
- Rocky
- Fedora
- Arch
Enable support for running parallel tests with LXD- Better test logging capabilities
- Support for a select few popular packaging formats:
SnapPipCharm libraries- Debs, Rpms, Pacs, etc.
Apptainer
- Robust hook mechanism -> i.e. an actual specification for hooks.
- Comprehensive documentation
Metadata
Release files for cleantest 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cleantest-0.3.0.tar.gz | 35.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cleantest-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.8 kB
Release files / cleantest-0.3.0.tar.gz
| Download URL | cleantest-0.3.0.tar.gz |
|---|---|
| Size | 35.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e325e90fb37d03f207125aa210128c4accf15b2f72c697bc6b70c057941d77fe
|
|
BLAKE2b-256 checksum How to use checksums |
0e0c611c4d3bca318f2c679720c6ed43f4fa752c6fa97bcca81614651e317fc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Release files / cleantest-0.3.0-py3-none-any.whl
| Download URL | cleantest-0.3.0-py3-none-any.whl |
|---|---|
| Size | 50.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b01359065aa82c584101277045002561fa8ad70acd64784d17a12ae5d69df944
|
|
BLAKE2b-256 checksum How to use checksums |
15b2653cbba49b274df1a900eac227444f9d6cbf5a983d16fec8d5d561d8c080
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|