Add code coverage to ci
This commit is contained in:
parent
5614803938
commit
12dbe5f23c
@ -1,6 +1,12 @@
|
||||
FROM docker.io/library/rust:1.75
|
||||
|
||||
RUN rustup component add clippy rustfmt
|
||||
RUN rustup component add \
|
||||
clippy \
|
||||
llvm-tools-preview \
|
||||
rustfmt
|
||||
|
||||
RUN cargo install \
|
||||
grcov
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
beets \
|
||||
|
23
.gitea/scripts/coverage.py
Normal file
23
.gitea/scripts/coverage.py
Normal file
@ -0,0 +1,23 @@
|
||||
import argparse
|
||||
import json
|
||||
|
||||
|
||||
def main(coverage_file, fail_under):
|
||||
with open(coverage_file, encoding="utf-8") as f:
|
||||
coverage_json = json.load(f)
|
||||
coverage = float(coverage_json["message"][:-1])
|
||||
return coverage >= fail_under
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Check coverage output by grcov")
|
||||
|
||||
parser.add_argument("--coverage-file", type=str, required=True,
|
||||
help="Path to the coverage.json file output by grcov")
|
||||
parser.add_argument("--fail-under", type=float, default=100.,
|
||||
help="Threshold under which coverage is insufficient")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if not main(args.coverage_file, args.fail_under):
|
||||
exit(2)
|
@ -7,8 +7,10 @@ on:
|
||||
branches: [ main ]
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
BEETSDIR: ./
|
||||
CARGO_TERM_COLOR: always
|
||||
LLVM_PROFILE_FILE: target/debug/profraw/musichoard-%p-%m.profraw
|
||||
RUSTFLAGS: -C instrument-coverage
|
||||
|
||||
jobs:
|
||||
build_and_test:
|
||||
@ -18,6 +20,21 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
- run: cargo build --verbose --all-features --all-targets
|
||||
- run: cargo test --verbose --all-features --all-targets --no-fail-fast
|
||||
- run: >-
|
||||
grcov codecov/debug/profraw
|
||||
--binary-path ./target/debug/
|
||||
--output-types html
|
||||
--source-dir .
|
||||
--ignore-not-existing
|
||||
--ignore "tests/*"
|
||||
--ignore "src/main.rs"
|
||||
--excl-start "GRCOV_EXCL_START|mod tests \{"
|
||||
--excl-stop "GRCOV_EXCL_STOP"
|
||||
--output-path ./target/debug/coverage/
|
||||
- run: >-
|
||||
python3 .gitea/scripts/coverage.py
|
||||
--coverage-file ./target/debug/coverage/coverage.json
|
||||
--fail-under 100.00
|
||||
|
||||
lint:
|
||||
name: Lint
|
||||
|
Loading…
Reference in New Issue
Block a user