diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 000000000..5a0a37805 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,16 @@ +[run] +source = python/sglang/srt +omit = + */test/* + */__pycache__/* + +[report] +show_missing = true +exclude_lines = + pragma: no cover + if __name__ == .__main__.: + raise NotImplementedError + if TYPE_CHECKING + +[html] +directory = htmlcov diff --git a/python/pyproject.toml b/python/pyproject.toml index 9b2613ddb..6a05dbf7d 100755 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -141,6 +141,8 @@ test = [ "parameterized", "peft", "pytest", + "pytest-cov", + "diff-cover", "sentence_transformers", "tabulate", ] diff --git a/test/registered/unit/README.md b/test/registered/unit/README.md index e2d6aa5dd..ec8dc218b 100644 --- a/test/registered/unit/README.md +++ b/test/registered/unit/README.md @@ -22,6 +22,15 @@ Tests can use CPU or GPU — the key criterion is **no server process**. pytest test/registered/unit/ -v # all unit tests pytest test/registered/unit/mem_cache/ -v # one module ``` +5. Run with coverage: + ```bash + # summary + pytest test/registered/unit/ --cov --cov-config=.coveragerc -v + + # PR incremental check (require ≥60% on changed lines) + pytest test/registered/unit/ --cov --cov-config=.coveragerc --cov-report=xml + diff-cover coverage.xml --compare-branch=origin/main --fail-under=60 + ``` ## Example