diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..df7781f --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,48 @@ +name: Tests + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest pytest-cov coverage-badge + + - name: Run tests with pytest and generate coverage + run: | + pytest --cov=penify_hook tests/ --cov-report=xml --cov-report=term + + - name: Generate coverage badge + run: | + coverage-badge -o coverage.svg -f + + - name: Commit coverage badge + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master' + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add coverage.svg + git diff --quiet && git diff --staged --quiet || git commit -m "Update coverage badge" -a + + - name: Push coverage badge + if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master' + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ github.ref }} diff --git a/README.md b/README.md index b431ac7..db0ad8c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,17 @@ # Penify CLI Tool +![Tests](https://github.com/yourorganization/penify-cli/workflows/Tests/badge.svg) +![Coverage](./coverage.svg) + A CLI tool to generate smart commit messages, code documentation, and more. +## Features + +- Automatically generate documentation for your code +- Support for multiple programming languages +- Git hook integration for automatic documentation on commits +- Folder and file analysis + ## Installation Install from PyPI: @@ -129,6 +139,12 @@ To set up the development environment: pip install -e . ``` +### Running Tests + +```bash +pytest +``` + ## License This project is licensed under the MIT License. diff --git a/pytest.ini b/pytest.ini index 51e40e5..3ce8914 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,5 +1,8 @@ [pytest] +testpaths = tests python_files = test_*.py python_classes = Test* python_functions = test_* -testpaths = tests + +# Coverage settings +addopts = --cov=penify_hook --cov-report=term --cov-report=xml diff --git a/requirements.txt b/requirements.txt index f2991f4..0679314 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,10 @@ -# requirements.txt +# Basic requirements +requests>=2.25.0 +gitpython>=3.1.0 +tqdm>=4.62.0 -requests -GitPython \ No newline at end of file +# Testing requirements +pytest>=7.0.0 +pytest-cov>=4.0.0 +coverage>=6.0.0 +coverage-badge>=1.1.0 \ No newline at end of file