-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
82 lines (76 loc) · 1.95 KB
/
pyproject.toml
File metadata and controls
82 lines (76 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# pyproject.toml — StoryForge project configuration
# Coverage config for Q1: Code Coverage Reporting
[tool.pytest.ini_options]
# Directories pytest discovers tests in
testpaths = ["tests"]
# Default options: coverage plugin with source dirs
addopts = [
"--cov=pipeline",
"--cov=services",
"--cov=api",
"--cov=middleware",
"--cov=errors",
"--cov=models",
"--cov-report=term-missing",
"--cov-report=html:htmlcov",
"--cov-report=xml:coverage.xml",
"--cov-fail-under=60",
]
# asyncio mode for async tests
asyncio_mode = "auto"
[tool.coverage.run]
# Source directories to measure
source = [
"pipeline",
"services",
"api",
"middleware",
"errors",
"models",
]
# Patterns to omit from measurement
omit = [
"tests/*",
"scripts/*",
"**/__pycache__/*",
"*.pyc",
"setup.py",
"conftest.py",
]
# Include branch coverage for more thorough reporting
branch = true
[tool.coverage.report]
# Coverage floor — raised to 60% as of P1 sprint
fail_under = 60
# Show lines that are not covered
show_missing = true
# Skip files with 100% coverage in the detailed report (reduces noise)
skip_covered = false
# Exclude lines matching these patterns from coverage counts
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if TYPE_CHECKING:",
"raise NotImplementedError",
"if __name__ == .__main__.:",
"pass",
"@(abc\\.)?abstractmethod",
]
# Minimum coverage per file (optional — comment out if too strict)
# precision = 2
[tool.coverage.html]
directory = "htmlcov"
title = "StoryForge Coverage Report"
[tool.coverage.xml]
output = "coverage.xml"
[tool.mutmut]
# Mutation testing configuration — see mutmut_config.py for hooks
paths_to_mutate = [
"services/auth.py",
"services/token_cost_tracker.py",
"middleware/rbac.py",
"pipeline/agents/debate_orchestrator.py",
]
tests_dir = "tests"
# Exclude vendor, data fixtures, and generated artefacts
runner = "python -m pytest -x -q"