update docs on coverage #164
10
README.md
10
README.md
@@ -51,16 +51,14 @@ usage examples.
|
|||||||
|
|
||||||
# Coverage
|
# Coverage
|
||||||
|
|
||||||
Coverage was generated using [`grcov`](https://github.com/mozilla/grcov). If you have not done so
|
Coverage can be generated using [`llvm-cov`](https://github.com/taiki-e/cargo-llvm-cov). If you have not done so
|
||||||
already, install the `llvm-tools-preview`:
|
already, install the tool:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
rustup component add llvm-tools-preview
|
cargo +stable install cargo-llvm-cov --locked
|
||||||
cargo install grcov --locked
|
|
||||||
```
|
```
|
||||||
|
|
||||||
After that, you can simply run `coverage.py` to test the project with coverage. You can optionally
|
After this, you can run `cargo llvm-cov nextest` to run all the tests and display coverage.
|
||||||
supply the `--open` flag to open the coverage report in your webbrowser.
|
|
||||||
|
|
||||||
# Miri
|
# Miri
|
||||||
|
|
||||||
|
|||||||
54
coverage.py
54
coverage.py
@@ -1,54 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
import os
|
|
||||||
import logging
|
|
||||||
import argparse
|
|
||||||
import webbrowser
|
|
||||||
|
|
||||||
|
|
||||||
_LOGGER = logging.getLogger()
|
|
||||||
|
|
||||||
|
|
||||||
def generate_cov_report(open_report: bool, format: str):
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
|
||||||
os.environ["RUSTFLAGS"] = "-Cinstrument-coverage"
|
|
||||||
os.environ["LLVM_PROFILE_FILE"] = "target/coverage/%p-%m.profraw"
|
|
||||||
_LOGGER.info("Executing tests with coverage")
|
|
||||||
os.system("cargo test --all-features")
|
|
||||||
|
|
||||||
out_path = "./target/debug/coverage"
|
|
||||||
if format == "lcov":
|
|
||||||
out_path = "./target/debug/lcov.info"
|
|
||||||
os.system(
|
|
||||||
f"grcov . -s . --binary-path ./target/debug/ -t {format} --branch --ignore-not-existing "
|
|
||||||
f"-o {out_path}"
|
|
||||||
)
|
|
||||||
if format == "lcov":
|
|
||||||
os.system(
|
|
||||||
"genhtml -o ./target/debug/coverage/ --show-details --highlight --ignore-errors source "
|
|
||||||
"--legend ./target/debug/lcov.info"
|
|
||||||
)
|
|
||||||
if open_report:
|
|
||||||
coverage_report_path = os.path.abspath("./target/debug/coverage/index.html")
|
|
||||||
webbrowser.open_new_tab(coverage_report_path)
|
|
||||||
_LOGGER.info("Done")
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description="Generate coverage report and optionally open it in a browser"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--open", action="store_true", help="Open the coverage report in a browser"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--format",
|
|
||||||
choices=["html", "lcov"],
|
|
||||||
default="html",
|
|
||||||
help="Choose report format (html or lcov)",
|
|
||||||
)
|
|
||||||
args = parser.parse_args()
|
|
||||||
generate_cov_report(args.open, args.format)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
Reference in New Issue
Block a user