123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- [tasks.rust_unit_test]
- run_task = { name = ["rust_lib_unit_test", "shared_lib_unit_test"] }
- [tasks.rust_lib_unit_test]
- description = "Run rust-lib unit tests"
- script = '''
- cd rust-lib
- RUST_LOG=info cargo test --no-default-features --features="sync"
- '''
- [tasks.shared_lib_unit_test]
- description = "Run shared-lib unit test"
- script = '''
- cd ../shared-lib
- RUST_LOG=info cargo test --no-default-features
- '''
- [tasks.check_grcov]
- description = "Check if `grcov` is installled"
- script_runner = "@shell"
- script = '''
- export PATH=$PATH:"$HOME/.cargo/bin/"
- if command -v grcov > /dev/null; then
- echo "Found 'grcov' executable."
- else
- echo "[!] Could not find 'grcov' executable."
- echo "[!] Please install 'grcov' by running 'cargo install grcov'."
- echo "[!] You may also need to install 'llvm-tools-preview' using 'rustup component add llvm-tools-preview'."
- echo "[!] If installed, check if 'grcov' is in PATH."
- echo "[!] Exiting..."
- exit -1
- fi
- '''
- [tasks.clean_profraw_files]
- description = "Cleans profraw files that are created by `cargo test`"
- script_runner = "@duckscript"
- script = [
- """
- rust_lib_profs = glob_array ./rust-lib/**/*.profraw
- for prof in ${rust_lib_profs}
- full_path = canonicalize ${prof}
- rm ${full_path}
- end
- shared_lib_profs = glob_array ../shared-lib/**/*.profraw
- for prof in ${shared_lib_profs}
- full_path = canonicalize ${prof}
- rm ${full_path}
- end
- """
- ]
- [tasks.run_rustlib_coverage_tests]
- description = "Run tests with coverage instrumentation"
- script_runner = "@shell"
- script = [
- """
- echo --- Running coverage tests ---
- # Install Protobuf compiler
- cargo make install_protobuf_compiler
- export PATH="$PATH":"$HOME/.pub-cache/bin"
- export PATH="$PATH":"$HOME/.cargo/bin/"
- cd rust-lib/
- CARGO_INCREMENTAL=0 \
- RUSTFLAGS='-C instrument-coverage' \
- LLVM_PROFILE_FILE='prof-%p-%m.profraw' \
- cargo test --no-default-features --features="sync"
- """
- ]
- [tasks.run_sharedlib_coverage_tests]
- description = "Run tests with coverage instrumentation"
- script_runner = "@shell"
- script = [
- """
- echo --- Running coverage tests ---
- # Install Protobuf compiler
- cargo make install_protobuf_compiler
- export PATH="$PATH":"$HOME/.pub-cache/bin"
- export PATH="$PATH":"$HOME/.cargo/bin/"
- cd ../shared-lib
- CARGO_INCREMENTAL=0 \
- RUSTFLAGS='-C instrument-coverage' \
- LLVM_PROFILE_FILE='prof-%p-%m.profraw' \
- cargo test --no-default-features
- """
- ]
- [tasks.get_rustlib_grcov_report]
- description = "Get `grcov` HTML report for test coverage for rust-lib"
- script_runner = "@shell"
- script = [
- """
- echo --- Getting 'grcov' results for 'rust-lib' ---
- cd rust-lib/
- grcov . \
- --binary-path target/debug/deps \
- --source-dir . \
- --output-type html \
- --branch \
- --ignore-not-existing \
- --log-level WARN \
- --output-path target/coverage-html
- echo "--- Done! Generated HTML report under 'target/coverage-html' for rustlib."
- """
- ]
- [tasks.get_sharedlib_grcov_report]
- description = "Get `grcov` HTML report for test coverage shared-lib"
- script_runner = "@shell"
- script = [
- """
- echo --- Getting 'grcov' results 'shared-lib' ---
- cd ../shared-lib
- grcov . \
- --binary-path target/debug/deps \
- --source-dir . \
- --output-type html \
- --branch \
- --ignore-not-existing \
- --log-level WARN \
- --output-path target/coverage-html
- echo "--- Done! Generated HTML report under 'target/coverage-html' for sharedlib."
- """
- ]
- [tasks.get_grcov_report]
- description = "Get `grcov` HTML report for test coverage"
- run_task = { name = [
- "get_rustlib_grcov_report",
- "get_sharedlib_grcov_report"
- ], parallel = true }
- [tasks.get_sharedlib_lcov_report]
- description = "Generates `lcov` report for `shared-lib`"
- script_runner = "@shell"
- script = [
- """
- echo Getting 'lcov' results for 'shared-lib'
- cd ../shared-lib
- grcov . \
- --binary-path target/debug/deps \
- --source-dir . \
- --output-type lcov \
- --branch \
- --ignore-not-existing \
- --log-level WARN \
- --output-path target/coverage.lcov
- echo "--- Done! Generated 'target/coverage.lcov' sharedlib."
- """
- ]
- [tasks.get_rustlib_lcov_report]
- description = "Generates `lcov` report for `rust-lib`"
- script_runner = "@shell"
- script = [
- """
- echo Getting 'lcov' results for 'rust-lib'
- cd rust-lib/
- grcov . \
- --binary-path target/debug/deps \
- --source-dir . \
- --output-type lcov \
- --branch \
- --ignore-not-existing \
- --log-level WARN \
- --output-path target/coverage.lcov
- echo "--- Done! Generated 'target/coverage.lcov' for rustlib."
- """
- ]
- [tasks.get_lcov_report]
- description = "Get `lcov` reports for test coverage"
- run_task = { name = [
- "get_sharedlib_lcov_report",
- "get_rustlib_lcov_report"
- ], parallel = true }
- [tasks.get_ci_test_coverage]
- description = "Get LCOV coverage reports for CI"
- run_task = { name = [
- "check_grcov",
- "run_rustlib_coverage_tests",
- "run_sharedlib_coverage_tests",
- "get_lcov_report",
- "clean_profraw_files"
- ]}
- [tasks.get_test_coverage]
- description = "Get human readable test coverage reports"
- run_task = { name = [
- "check_grcov",
- "run_rustlib_coverage_tests",
- "run_sharedlib_coverage_tests",
- "get_grcov_report",
- "clean_profraw_files"
- ]}
|