name: Pytest on: [pull_request] jobs: test: runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Set up python id: setup-python uses: actions/setup-python@v5 with: python-version: "3.12.7" - name: Install Poetry uses: snok/install-poetry@v1 with: version: 1.8.4 virtualenvs-create: true virtualenvs-in-project: true - name: Load cached venv id: cached-pip-wheels uses: actions/cache@v4 with: path: ~/.cache key: venv-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }} - name: Install dependencies run: cd backend && poetry install --no-interaction --no-root - name: Install library run: cd backend && poetry install --no-interaction - name: Acquire Database URL from Railway env: RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }} SERVICE_ID: Postgres ENVIRONMENT_ID: development run: | bash <(curl -fsSL cli.new) DATABASE_URL=$(railway variables --service $SERVICE_ID --environment $ENVIRONMENT_ID --json | jq -cMr .DATABASE_PUBLIC_URL) echo "::add-mask::$DATABASE_URL" echo "DATABASE_URL=$DATABASE_URL" >> "$GITHUB_ENV" - name: Pytest run: | cd backend set -o pipefail # otherwise 'tee' will eat the exit code poetry run pytest --color=yes --cov=linkpulse --cov-report=term-missing:skip-covered --junitxml=pytest.xml | tee pytest-coverage.txt - name: Pytest coverage comment id: coverageComment uses: MishaKav/pytest-coverage-comment@main with: pytest-coverage-path: ./pytest-coverage.txt junitxml-path: ./pytest.xml - name: Check the output coverage run: | echo "Coverage Percentage - ${{ steps.coverageComment.outputs.coverage }}" echo "Coverage Color - ${{ steps.coverageComment.outputs.color }}" echo "Coverage Html - ${{ steps.coverageComment.outputs.coverageHtml }}" echo "Summary Report - ${{ steps.coverageComment.outputs.summaryReport }}" echo "Coverage Warnings - ${{ steps.coverageComment.outputs.warnings }}" echo "Coverage Errors - ${{ steps.coverageComment.outputs.errors }}" echo "Coverage Failures - ${{ steps.coverageComment.outputs.failures }}" echo "Coverage Skipped - ${{ steps.coverageComment.outputs.skipped }}" echo "Coverage Tests - ${{ steps.coverageComment.outputs.tests }}" echo "Coverage Time - ${{ steps.coverageComment.outputs.time }}" echo "Not Success Test Info - ${{ steps.coverageComment.outputs.notSuccessTestInfo }}"