Skip to content

chore(ci): generate pytest summary #148

chore(ci): generate pytest summary

chore(ci): generate pytest summary #148

Workflow file for this run

name: Test
on:
push:
branches:
- "main"
pull_request:
types: [opened, synchronize, reopened]
paths:
- "src/**"
- "tests/**"
jobs:
check:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
cache-dependency-path: "requirements-dev.txt"
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements-dev.txt
- name: Run pytest and capture output (Linux/macOS)
if: runner.os != 'Windows'
run: |
pytest --color=no --cov --cov-report=xml | tee pytest_output.txt
# 检查 pytest 的退出状态码
if test ${PIPESTATUS[0]} -eq 0; then
echo '<details><summary>Test Output</summary>' >> $GITHUB_STEP_SUMMARY
echo '```python' >> $GITHUB_STEP_SUMMARY
cat pytest_output.txt >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
echo '</details>' >> $GITHUB_STEP_SUMMARY
else
echo "## Tests Failed" >> $GITHUB_STEP_SUMMARY
echo '<details><summary>Test Output</summary>' >> $GITHUB_STEP_SUMMARY
echo '```python' >> $GITHUB_STEP_SUMMARY
cat pytest_output.txt >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
echo '</details>' >> $GITHUB_STEP_SUMMARY
exit 1
fi
- name: Run pytest and capture output (Windows)
if: runner.os == 'Windows'
run: |
pytest --color=no --cov --cov-report=xml | Out-File -FilePath pytest_output.txt -Encoding utf8
# 检查 pytest 的退出状态码
if ($?) {
echo '```python' >> $env:GITHUB_STEP_SUMMARY
Get-Content pytest_output.txt | Out-File -Append -FilePath $env:GITHUB_STEP_SUMMARY
echo '```' >> $env:GITHUB_STEP_SUMMARY
}
else {
echo "## Tests Failed" >> $env:GITHUB_STEP_SUMMARY
echo '```python' >> $env:GITHUB_STEP_SUMMARY
Get-Content pytest_output.txt | Out-File -Append -FilePath $env:GITHUB_STEP_SUMMARY
echo '```' >> $env:GITHUB_STEP_SUMMARY
exit 1
}
- name: Upload results to Codecov
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
uses: codecov/codecov-action@v4
with:
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}