From 0432ba9086f634941514329120aa1a94ce87ee59 Mon Sep 17 00:00:00 2001 From: codingp110 Date: Tue, 22 Jul 2025 19:55:47 +0530 Subject: [PATCH 1/2] ci: add code coverage job Stolen from nymius's [pr](https://github.com/bitcoindevkit/bdk/pull/1986) on bitcoindevkit/bdk regarding the same. --- .github/workflows/code_coverage.yml | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/code_coverage.yml diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml new file mode 100644 index 0000000..b915a20 --- /dev/null +++ b/.github/workflows/code_coverage.yml @@ -0,0 +1,43 @@ +on: [push, pull_request] + +name: Code Coverage + +permissions: {} + +jobs: + Codecov: + name: Code Coverage + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Install lcov tools + run: sudo apt-get install lcov -y + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + override: true + profile: minimal + components: llvm-tools-preview + - name: Rust Cache + uses: Swatinem/rust-cache@v2.7.8 + - name: Install cargo-llvm-cov + run: if [[ ! -e ~/.cargo/bin/cargo-llvm-cov ]]; then cargo install cargo-llvm-cov; fi + - name: Make coverage directory + run: mkdir coverage + - name: Test and report coverage + run: cargo +nightly llvm-cov -q --doctests --branch --all-features --lcov --output-path ./coverage/lcov.info + - name: Generate HTML coverage report + run: genhtml -o coverage-report.html --ignore-errors unmapped ./coverage/lcov.info + - name: Coveralls upload + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: coverage-report + path: coverage-report.html \ No newline at end of file From 615439594a44b654e3bc683e6675e3fcc63187e3 Mon Sep 17 00:00:00 2001 From: codingp110 Date: Tue, 22 Jul 2025 21:08:43 +0530 Subject: [PATCH 2/2] feat: add justfile --- justfile | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 justfile diff --git a/justfile b/justfile new file mode 100644 index 0000000..a2fb5b3 --- /dev/null +++ b/justfile @@ -0,0 +1,50 @@ +alias b := build +alias c := check +alias f := fmt +alias t := test +alias p := pre-push + +default: + @just --list + +# Build the project +build: + cargo build + cargo build --no-default-features + +# Check code: formatting, compilation, linting, and commit signature +check: + cargo +nightly fmt -- --check + cargo check --all-features + cargo clippy --all-features --all-targets -- -D warnings + @[ "$(git log --pretty='format:%G?' -1 HEAD)" = "N" ] && \ + echo "\n⚠️ Unsigned commit: BDK requires that commits be signed." || \ + true + +# Format all code +fmt: + cargo +nightly fmt + +# Run all tests with all, default and no-default features +test: + cargo test --all-features + cargo test + cargo test --no-default-features + +# Generate doc +doc: + cargo doc --open --all-features + cargo doc --open + cargo doc --open --no-default-features + +# Generate code coverage +code_cov: + mkdir coverage + touch coverage/lcov.info + cargo +nightly llvm-cov -q --doctests --branch --all-features --lcov --output-path ./coverage/lcov.info + @genhtml -o coverage-report.html --ignore-errors unmapped ./coverage/lcov.info + open ./coverage-report.html/index.html + rm -rf coverage + +# Run pre-push suite: format, check, and test +pre-push: fmt check test \ No newline at end of file