Compare commits

..

2 Commits

Author SHA1 Message Date
c28999f270 fix: use single quotes in DOT renderer (#212)
Some checks failed
Test / pytest (pull_request) Failing after 52s
2026-04-21 11:18:11 +00:00
39905d92aa fix: escape quotes in DOT renderer strings (#212)
Some checks failed
Test / pytest (pull_request) Failing after 25s
2026-04-21 11:14:58 +00:00
2 changed files with 5 additions and 5 deletions

View File

@@ -149,8 +149,8 @@ def to_dot(graph: dict) -> str:
"""Generate DOT format output.""" """Generate DOT format output."""
lines = ["digraph dependencies {"] lines = ["digraph dependencies {"]
lines.append(" rankdir=LR;") lines.append(" rankdir=LR;")
lines.append(" node [shape=box, style=filled, fillcolor="#1a1a2e", fontcolor="#e6edf3"];") lines.append(' node [shape=box, style=filled, fillcolor="#1a1a2e", fontcolor="#e6edf3"];')
lines.append(" edge [color="#4a4a6a"];") lines.append(' edge [color="#4a4a6a"];')
lines.append("") lines.append("")
for repo, data in sorted(graph.items()): for repo, data in sorted(graph.items()):

View File

@@ -113,7 +113,7 @@ def find_slow_tests_by_scan(repo_path: str) -> List[Bottleneck]:
(r"time\.sleep\((\d+(?:\.\d+)?)\)", "Contains time.sleep() — consider using mock or async wait"), (r"time\.sleep\((\d+(?:\.\d+)?)\)", "Contains time.sleep() — consider using mock or async wait"),
(r"subprocess\.run\(.*timeout=(\d+)", "Subprocess with timeout — may block test"), (r"subprocess\.run\(.*timeout=(\d+)", "Subprocess with timeout — may block test"),
(r"requests\.(get|post|put|delete)\(", "Real HTTP call — mock with responses or httpretty"), (r"requests\.(get|post|put|delete)\(", "Real HTTP call — mock with responses or httpretty"),
(r"open\\([^)]*['\"]w['\"]", "File I/O in test - use tmp_path fixture"), (r"open\([^)]*['"]w['"]", "File I/O in test use tmp_path fixture"),
] ]
for root, dirs, files in os.walk(repo_path): for root, dirs, files in os.walk(repo_path):
@@ -506,8 +506,8 @@ def format_markdown(report: PerfReport) -> str:
lines.append(f"- {icon} {b.name}{loc} — ~{b.duration_s:.1f}s — {b.recommendation}") lines.append(f"- {icon} {b.name}{loc} — ~{b.duration_s:.1f}s — {b.recommendation}")
lines.append(f"") lines.append(f"")
return "\n".join(lines) return "
".join(lines)
# ── Main ─────────────────────────────────────────────────────────── # ── Main ───────────────────────────────────────────────────────────