テストコードを設定
Some checks failed
Python Test / python-test (push) Failing after 8s

This commit is contained in:
ry.yamafuji 2025-12-04 04:12:08 +09:00
parent 0819ec4d7d
commit a8b6eff343
2 changed files with 42 additions and 15 deletions

View File

@ -5,7 +5,7 @@ on:
push: push:
branches: branches:
- main - main
- develop # - develop
paths: paths:
- 'src/**' - 'src/**'
- 'tests/**' - 'tests/**'
@ -37,6 +37,7 @@ jobs:
- name: Coverage Report - name: Coverage Report
id: CoverageReport id: CoverageReport
if: success() # テスト成功時のみ実行
run: | run: |
coverage-badge -o coverage.svg coverage-badge -o coverage.svg
python - <<EOF python - <<EOF
@ -45,6 +46,17 @@ jobs:
generate_coverage.save_table() generate_coverage.save_table()
EOF EOF
- name: Generate coverage-report Branch AND README.md
id: generateCoverageReportBranch
if: success() # テスト成功時のみ実行
run: |
# coverage-report ブランチが存在しない場合は作成 あればチェックアウト
if ! git ls-remote --exit-code origin coverage-report; then
git checkout --orphan coverage-report
else
git checkout coverage-report
fi
- name: Update Readme - name: Update Readme
id: updateReadme id: updateReadme
run: | run: |
@ -56,13 +68,15 @@ jobs:
cat README.md cat README.md
- name: Check files before upload - name: Check files before upload
id: checkFiles
run: ls -l README.md coverage.svg run: ls -l README.md coverage.svg
- name: Upload artifact - name: Commit Test Report To coverage-report Branch
uses: actions/upload-artifact@v3 id: commitTestReport
with: if: success() # テスト成功時のみ実行
name: ret-artifact run: |
path: | git config --global user.name "github-actions[bot]"
README.md git config --global user.email "github-actions[bot]@users.noreply.github.com"
coverage.svg git add README.md coverage.svg table.md
git commit -m "Update coverage report"
git push https://actions-bot:${{ secrets.CICD_GITEA_TOKEN }}@${{ gitea.server_url }}/${{ gitea.repository }} HEAD:coverage-report --force

View File

@ -2,7 +2,9 @@ import re
class GenerateCoverage: class GenerateCoverage:
def __init__(self, coverage_file="pytest-coverage.txt", output_file="coverage_table.md"): def __init__(self,
coverage_file="pytest-coverage.txt",
output_file="coverage_table.md"):
""" """
初期化 初期化
@ -26,12 +28,14 @@ class GenerateCoverage:
for line in lines: for line in lines:
# Coverage セクションの始まりを検出 # Coverage セクションの始まりを検出
if "---------- coverage" in line: if "Name" in line and "Stmts" in line and "Miss" in line:
in_coverage_section = True in_coverage_section = True
continue continue
# Coverage セクションの終わりを検出 # セパレーター行をスキップ
if in_coverage_section and line.strip() == "": if in_coverage_section and line.strip().startswith("---"):
# Coverage セクションが終了したと判断 continue
# Coverage セクションの終わりを検出TOTAL行の次の空行
if in_coverage_section and (line.strip().startswith("TOTAL") or line.strip().startswith("=")):
break break
# Coverage データを抽出 # Coverage データを抽出
if in_coverage_section: if in_coverage_section:
@ -60,6 +64,7 @@ class GenerateCoverage:
""" """
if not self.coverage_data: if not self.coverage_data:
self.parse_coverage() self.parse_coverage()
print("Parsed coverage data.")
# Markdown テーブルヘッダー # Markdown テーブルヘッダー
table_header = "| File | Statements | Missed | Coverage | Missing Lines |\n" table_header = "| File | Statements | Missed | Coverage | Missing Lines |\n"
@ -67,7 +72,9 @@ class GenerateCoverage:
# テーブル行を生成 # テーブル行を生成
table_rows = [ table_rows = [
f"| {data['filename']} | {data['statements']} | {data['missed']} | {data['coverage']} | {data['missing_lines']} |" (f"| {data['filename']} | {data['statements']} | "
f"{data['missed']} | {data['coverage']} | "
f"{data['missing_lines']} |")
for data in self.coverage_data for data in self.coverage_data
] ]
@ -91,3 +98,9 @@ class GenerateCoverage:
with open(self.output_file, "w", encoding="utf-8") as f: with open(self.output_file, "w", encoding="utf-8") as f:
print(f"Markdown table has been saved to {self.output_file}") print(f"Markdown table has been saved to {self.output_file}")
f.write(self.markdown_table) f.write(self.markdown_table)
if __name__ == "__main__":
generator = GenerateCoverage()
generator.generate_table()
generator.save_table()