pytestを修正
Some checks failed
Python Test / python-test (push) Failing after 9s

This commit is contained in:
ry.yamafuji 2025-12-04 02:37:00 +09:00
parent 4b64ffcb4c
commit 0db4e51cae
2 changed files with 94 additions and 1 deletions

View File

@ -40,7 +40,7 @@ jobs:
run: | run: |
coverage-badge -o coverage.svg coverage-badge -o coverage.svg
python - <<EOF python - <<EOF
from src.lib.generate_coverage import GenerateCoverage from scripts.generate_coverage import GenerateCoverage
generate_coverage = GenerateCoverage() generate_coverage = GenerateCoverage()
generate_coverage.save_table() generate_coverage.save_table()
EOF EOF

View File

@ -0,0 +1,93 @@
import re
class GenerateCoverage:
def __init__(self, coverage_file="pytest-coverage.txt", output_file="coverage_table.md"):
"""
初期化
:param coverage_file: カバレッジ結果のテキストファイル
:param output_file: 出力する Markdown ファイル
"""
self.coverage_file = coverage_file
self.output_file = output_file
self.coverage_data = []
self.markdown_table = None
def parse_coverage(self):
"""
coverage.txt のデータを解析してカバレッジ情報を抽出
"""
with open(self.coverage_file, "r") as f:
lines = f.readlines()
coverage_info = []
in_coverage_section = False
for line in lines:
# Coverage セクションの始まりを検出
if "---------- coverage" in line:
in_coverage_section = True
continue
# Coverage セクションの終わりを検出
if in_coverage_section and line.strip() == "":
# Coverage セクションが終了したと判断
break
# Coverage データを抽出
if in_coverage_section:
match = re.match(
r"(.+?)\s+(\d+)\s+(\d+)\s+(\d+%)\s*(.*)", line)
if match:
filename = match.group(1).strip()
statements = match.group(2).strip()
missed = match.group(3).strip()
coverage = match.group(4).strip()
missing_lines = match.group(
5).strip() if match.group(5) else "-"
coverage_info.append({
"filename": filename,
"statements": statements,
"missed": missed,
"coverage": coverage,
"missing_lines": missing_lines
})
self.coverage_data = coverage_info
def generate_table(self):
"""
Markdown テーブルを生成
"""
if not self.coverage_data:
self.parse_coverage()
# Markdown テーブルヘッダー
table_header = "| File | Statements | Missed | Coverage | Missing Lines |\n"
table_header += "|------|------------|--------|----------|---------------|\n"
# テーブル行を生成
table_rows = [
f"| {data['filename']} | {data['statements']} | {data['missed']} | {data['coverage']} | {data['missing_lines']} |"
for data in self.coverage_data
]
self.markdown_table = table_header + "\n".join(table_rows)
def print_table(self):
"""
テーブルをコンソールに出力
"""
if self.markdown_table is None:
self.generate_table()
print(self.markdown_table)
def save_table(self):
"""
テーブルをファイルに保存
"""
if self.markdown_table is None:
self.generate_table()
with open(self.output_file, "w", encoding="utf-8") as f:
print(f"Markdown table has been saved to {self.output_file}")
f.write(self.markdown_table)