mirror of
https://github.com/unclebob/mutator.git
synced 2026-11-06 18:23:50 +00:00
Add a multi-language mutation tester that writes .metrics/mutate for uml-viewer.
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
from mutator.coverage import covered_lines
|
||||
|
||||
|
||||
def test_jacoco_marks_lines_with_covered_instructions(tmp_path):
|
||||
report = tmp_path / "target" / "site" / "jacoco" / "jacoco.xml"
|
||||
report.parent.mkdir(parents=True)
|
||||
report.write_text(
|
||||
"""<?xml version="1.0"?>
|
||||
<report name="demo">
|
||||
<package name="demo">
|
||||
<sourcefile name="Board.java">
|
||||
<line nr="3" mi="0" ci="2" mb="0" cb="0"/>
|
||||
<line nr="4" mi="4" ci="0" mb="1" cb="0"/>
|
||||
<line nr="5" mi="0" ci="0" mb="0" cb="1"/>
|
||||
</sourcefile>
|
||||
</package>
|
||||
</report>
|
||||
""",
|
||||
encoding="utf-8",
|
||||
)
|
||||
source = tmp_path / "src" / "demo" / "Board.java"
|
||||
source.parent.mkdir(parents=True)
|
||||
source.write_text("package demo;\nclass Board {}\n", encoding="utf-8")
|
||||
assert covered_lines(tmp_path, source, "java") == {3, 5}
|
||||
|
||||
|
||||
def test_go_profile_marks_hit_lines(tmp_path):
|
||||
profile = tmp_path / "target" / "coverage" / "go" / "coverage.out"
|
||||
profile.parent.mkdir(parents=True)
|
||||
profile.write_text(
|
||||
"mode: set\n"
|
||||
"demo/widget.go:2.1,4.2 1 1\n"
|
||||
"demo/widget.go:5.1,6.2 1 0\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
source = tmp_path / "demo" / "widget.go"
|
||||
source.parent.mkdir()
|
||||
source.write_text("package demo\nfunc Run() {}\n", encoding="utf-8")
|
||||
assert covered_lines(tmp_path, source, "go") == {2, 3, 4}
|
||||
assert covered_lines(tmp_path, tmp_path / "other" / "missing.go", "go") is None
|
||||
empty = tmp_path / "empty"
|
||||
empty.mkdir()
|
||||
assert covered_lines(empty, empty / "demo" / "widget.go", "go") is None
|
||||
|
||||
|
||||
def test_lcov_marks_executed_lines(tmp_path):
|
||||
report = tmp_path / "target" / "coverage" / "python" / "lcov.info"
|
||||
report.parent.mkdir(parents=True)
|
||||
report.write_text(
|
||||
"SF:src/demo/app.py\nDA:1,3\nDA:2,0\nend_of_record\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
source = tmp_path / "src" / "demo" / "app.py"
|
||||
source.parent.mkdir(parents=True)
|
||||
source.write_text("def place():\n return 1\n", encoding="utf-8")
|
||||
assert covered_lines(tmp_path, source, "python") == {1}
|
||||
assert covered_lines(tmp_path, source, "clojure") == {1}
|
||||
Reference in New Issue
Block a user