-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Development v1.0.0
- Loading branch information
Showing
46 changed files
with
2,241 additions
and
269 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,82 @@ | ||
# Changelog | ||
## v0.1.0 | ||
- Add `lock` fixture | ||
- Add `lock.lock` method | ||
- Add cli argument `--lock` to pytest | ||
- Add functionality, if a test have `lock` fixture, then compare the result of the test with the result in the cache file | ||
- Add functionality, if a test have `lock` and `--lock` cli argument, then lock the result of the test to a cache file | ||
- Add functionality, if a test have `lock` and `--simulate` cli argument, then simulate the result of the test, not write to the cache file | ||
- Add functionality, if a test have `lock` and `--only-skip` cli argument, then don't update lock if the result was not locked | ||
- Add functionality, if a test have `lock` and `--lock-date` cli argument, then lock the result of the test to a cache file with the date of the lock, if date was expired, then the test is failed | ||
|
||
## Version v1.0.0 | ||
* **Date:** _2024-02-03_ | ||
* **Version:** _>=3.8 and <=3.12_ | ||
* Note : this version break major versioning, because old acceptation test fail for this reason | ||
|
||
### branch: *"feature/lock-fixture"* | ||
|
||
* **Status:** _Finish_ | ||
* **Note:** Branch containing the base of the pytest fixture 'lock', it must be able to easily integrate new functions, CLI arguments, etc… | ||
|
||
- [X] Modified `--lock` argument, now target only test with `lock` fixture | ||
- [X] The tests with the `lock` fixture had `skipped` status, now they have `passed` status | ||
- [X] The tests without the `lock` fixture had `passed` status, now they have `skipped` status | ||
|
||
### branch: *"feature/fixture-lock-pickle"* | ||
|
||
* **Status:** _Finish_ | ||
* **Note:** This branch requires that the branch "feature/fixture-lock-method" be finalized. | ||
|
||
- [X] Add `pickle` extension for `lock.lock` to support more types of data | ||
- [X] Now `pickle` is the default extension for `lock.lock` if no extension is specified | ||
|
||
### branch: *"feature/fixture-lock-clean"* | ||
|
||
* **Status:** _Start_ | ||
* **Note:** This branch requires that the branch "feature/fixture-lock-method" be finalized. | ||
|
||
- [X] If test use `--lock` and `--clean` argument, then clean all unused cache files | ||
- [X] If test use `--lock` and `--clean` argument and `--only-skip` argument, then do anything, it's certainly a mistake (why clean only test with existing lock ?) | ||
- [X] If test use `--lock` and `--clean` argument and `--simulate` argument, list all unused cache files who will be removed without remove them. | ||
- [X] If test use `--lock` and `--clean` argument and `--lock-date` argument, thrown exception (can't lock a remove cache file) | ||
|
||
|
||
## Version v0.1.2 | ||
* **Date:** _2024-01-27_ | ||
* **Version:** _>=3.8 and <=3.12_ | ||
|
||
### branch: *"feature/lock-fixture"* | ||
|
||
* **Status:** _Finish_ | ||
* **Note:** Branch containing the base of the pytest fixture 'lock', it must be able to easily integrate new functions, CLI arguments, etc… | ||
|
||
- [X] Add fixtures `lock` | ||
|
||
|
||
### branch: *"feature/fixtures-lock-method"* | ||
|
||
* **Status:** _Finish_ | ||
* **Note:** This branch requires that the branch "feature/lock-fixture" be finalized. | ||
|
||
- [X] Add fixtures method `lock.lock` to lock the result of a test to a cache file | ||
|
||
- [X] If test use `lock.lock` and result was not locked, exception is thrown | ||
- [X] If test use `lock.lock` result is in the cache file and is the same as the result of the test, test is valid | ||
- [X] If test use `lock.lock` result is in the cache file and is not the same as the result of the test, test is invalid (failed) | ||
|
||
- [X] If test use `lock.lock` and `--lock` in cli argument, then start test and lock the result in cache file. | ||
- [X] If test use `lock.lock` and `--simulate` in cli argument, then simulate the result of the test, not write to the cache file. | ||
- [X] If test use `lock.lock` and `--only-skip` in cli argument, then don't update lock if the result was not locked. | ||
- [X] If test use `lock.lock` and `--lock-date` in cli argument, then lock the result of the test to a cache file with the date of the lock, if date was expired, then the test is failed | ||
|
||
- [X] If test use `--simulate` argument and not `--lock` argument, then it's invalid, throw exception | ||
- [X] If test use `--lock-date` argument and not `--lock` argument, then it's invalid, throw exception | ||
- [X] If test use `--only-skip` argument and not `--lock` argument, then it's invalid, throw exception | ||
|
||
### branch: *"feature/fixture-lock-date-support"* | ||
|
||
* **Status:** _Finish_ | ||
* **Note:** This branch requires that the branch "feature/fixture-lock-method" be finalized. | ||
|
||
- [X] Add support for `pytest --lock --lock-date 13/12/2023`, if test has `lock` fixture, then lock the result of the | ||
test to a cache file with the date of the lock, if date was expired, then the test is skipped | ||
|
||
--- | ||
|
||
## Version v0.1.0 | ||
* **Date:** _2024-01-xx_ | ||
* **Version:** _xxxxxx_ | ||
|
||
The package upload tests on Pypi were awkwardly carried out with version `v0.1.0` and `v0.1.1`, the package being defective, these were removed but Pypi refuses to change the package contents even after use, even if no download has been made. The first version is therefore `v0.1.2`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
# pytest-lock | ||
|
||
## Overview | ||
[![License MIT](https://img.shields.io/badge/license-MIT-blue)](https://codecov.io/gh/athroniaeth/pytest-lock) | ||
[![Python versions](https://img.shields.io/pypi/pyversions/bandit.svg)](https://pypi.python.org/pypi/bandit) | ||
[![PyPI version](https://badge.fury.io/py/pytest-lock.svg)](https://pypi.org/project/pytest-lock/) | ||
[![codecov](https://codecov.io/gh/Athroniaeth/pytest-lock/graph/badge.svg?token=28E1OZ144W)](https://codecov.io/gh/Athroniaeth/pytest-lock) | ||
[![Workflow](https://img.shields.io/github/actions/workflow/status/Athroniaeth/pytest-lock/release.yml)]("https://github.com/Athroniaeth/pytest-lock/actions/workflows/release.yml") | ||
[![Documentation Status](https://readthedocs.org/projects/pytest-lock/badge/?version=latest)](https://pytest-lock.readthedocs.io/en/latest/) | ||
[![Security: Bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit) | ||
|
||
**pytest-lock** is a pytest plugin that allows you to "lock" the results of unit tests, storing them in a local cache. | ||
This is particularly useful for tests that are resource-intensive or don't need to be run every time. When the tests are | ||
run subsequently. **pytest-lock** will compare the current results with the locked results and issue a warning if there | ||
are any discrepancies. | ||
|
||
* Free software: Apache license | ||
* Documentation: https://pytest-lock.readthedocs.io/en/latest/ | ||
* Source: https://github.com/Athroniaeth/pytest-lock | ||
* Bugs: https://github.com/Athroniaeth/pytest-lock/issues | ||
* Contributing: https://github.com/Athroniaeth/pytest-lock/blob/main/CONTRIBUTING.md | ||
|
||
|
||
## Installation | ||
|
||
To install pytest-lock, you can use pip: | ||
|
||
```bash | ||
pip install pytest-lock | ||
``` | ||
|
||
## Usage | ||
|
||
### Locking Tests | ||
|
||
To lock a test, use the lock fixture. Here's an example: | ||
|
||
```python | ||
from pytest_lock import FixtureLock | ||
|
||
|
||
def test_lock_sum(lock: FixtureLock): | ||
args = [1, 2, 3] | ||
lock.lock(sum, (args,)) | ||
... | ||
``` | ||
|
||
Run pytest with the `--lock` option to generate the lock files: | ||
|
||
```bash | ||
pytest --lock | ||
``` | ||
|
||
This will generate JSON files in a `.pytest-lock` directory, storing the results of the locked tests. | ||
|
||
### Running Tests | ||
|
||
Simply run pytest as you normally would: | ||
|
||
```bash | ||
pytest | ||
``` | ||
|
||
If pytest detect the presence of lock fixtures in your tests, it will compare the results of the tests with the locked | ||
If a test result differs from its locked value, a warning will be issued. | ||
|
||
### Configuration | ||
|
||
The locked test results are stored in a `.pytest-lock` directory at the root of your project. You can delete this | ||
directory to reset all locks. | ||
|
||
## Contributing | ||
|
||
Contributions are welcome! Please read the contributing guidelines to get started. | ||
|
||
## License | ||
|
||
This project is licensed under the MIT License - see the LICENSE.md file for details. |
Oops, something went wrong.