diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml new file mode 100644 index 0000000..bf7c7d2 --- /dev/null +++ b/.github/workflows/tests.yaml @@ -0,0 +1,73 @@ +name: Tests +on: + workflow_dispatch: + pull_request: + paths: + - "yc_lockbox/**" + - "tests/**" + branches: + - master + - main + push: + paths: + - "yc_lockbox/**" + - "tests/**" + branches: + - master + - main + schedule: + - cron: '20 4 * * 6' + +jobs: + pytest: + name: pytest + runs-on: ${{matrix.os}} + strategy: + matrix: + python-version: + - "3.10" + - "3.11" + - "3.12" + os: + - ubuntu-latest + - windows-latest + - macos-latest + fail-fast: false + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + cache-dependency-path: '**/requirements*.txt' + - name: Install dependencies + run: | + python -W ignore -m pip install --upgrade pip + python -W ignore -m pip install -U pytest-cov + python -W ignore -m pip install -r requirements.txt + python -W ignore -m pip install -r requirements.dev.txt + python -W ignore -m pip install pytest-xdist[psutil] + + - name: Test with pytest + run: | + pytest -vv --cov=yc_lockbox --cov-append -n auto --junit-xml=.test_report.xml + env: + JOB_INDEX: ${{ strategy.job-index }} + + - name: Test Summary + id: test_summary + uses: test-summary/action@v2.1 + if: always() # always run, even if tests fail + with: + paths: | + .test_report.xml + + - name: Submit coverage + uses: codecov/codecov-action@v4.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + env_vars: OS,PYTHON + slug: akimrx/python-yc-lockbox + name: ${{ matrix.os }}-${{ matrix.python-version }} + fail_ci_if_error: true diff --git a/README.md b/README.md index 7f03ab7..2b28c68 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/yc-lockbox.svg)](https://pypi.org/project/yc-lockbox/) [![PyPi Package](https://img.shields.io/pypi/v/yc-lockbox.svg)](https://pypi.org/project/yc-lockbox/) +[![Codecov](https://codecov.io/gh/akimrx/yc-lockbox/branch/master/graph/badge.svg)](https://app.codecov.io/gh/akimrx/yc-lockbox) +[![Tests](https://github.com/akimrx/yc-lockbox/workflows/Tests/badge.svg)](https://github.com/akimrx/yc-lockbox) This library is a simple client for working with **[Yandex Lockbox](https://cloud.yandex.ru/en/docs/lockbox/)** over [REST API](https://cloud.yandex.ru/en/docs/lockbox/api-ref/), simplifying work with secrets and allowing you to work with them in the OOP paradigm.