Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
coverage:
status:
project:
default:
target: auto
threshold: 2%
patch:
default:
target: auto
threshold: 2%


comment:
layout: "diff, flags, files"
behavior: default
require_changes: true
show_carryforward_flags: true

flag_management:
default_rules:
carryforward: true

flags:
dashcore:
paths: [dash/src/]
dashcore_hashes:
paths: [hashes/src/]
dashcore-private:
paths: [internals/src/]
dash-network:
paths: [dash-network/src/]
dash-spv:
paths: [dash-spv/src/]
key-wallet:
paths: [key-wallet/src/]
key-wallet-manager:
paths: [key-wallet-manager/src/]
dash-network-ffi:
paths: [dash-network-ffi/src/]
dash-spv-ffi:
paths: [dash-spv-ffi/src/]
key-wallet-ffi:
paths: [key-wallet-ffi/src/]
dashcore-rpc:
paths: [rpc-client/src/]
dashcore-rpc-json:
paths: [rpc-json/src/]

ignore:
- "**/tests/**"
- "**/tests.rs"
- "**/test_utils/**"
- "**/test_utils.rs"
- "**/examples/**"
- "fuzz/**"
- "contrib/**"
14 changes: 13 additions & 1 deletion .github/scripts/ci_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,10 @@ def run_group_tests(args):

crates = groups[args.group] or []
failed = []
coverage = getattr(args, "coverage", False)

if coverage:
github_output("crate_flags", ",".join(crates))

for crate in crates:
# Skip dash-fuzz on Windows
Expand All @@ -182,7 +186,10 @@ def run_group_tests(args):

github_group_start(f"Testing {crate}")

cmd = ["cargo", "test", "-p", crate, "--all-features"]
if coverage:
cmd = ["cargo", "llvm-cov", "--no-report", "-p", crate, "--all-features"]
else:
cmd = ["cargo", "test", "-p", crate, "--all-features"]
result = subprocess.run(cmd)

github_group_end()
Expand Down Expand Up @@ -225,6 +232,11 @@ def main():
run_group_parser = subparsers.add_parser("run-group", help="Run tests for a group")
run_group_parser.add_argument("group", help="Group name")
run_group_parser.add_argument("--os", default="ubuntu-latest", help="OS name")
run_group_parser.add_argument(
"--coverage",
action="store_true",
help="Use cargo-llvm-cov for coverage collection",
)

args = parser.parse_args()

Expand Down
30 changes: 29 additions & 1 deletion .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ on:
groups:
required: true
type: string
coverage:
required: false
type: boolean
default: false

permissions:
contents: read
Expand All @@ -26,9 +30,33 @@ jobs:
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: ${{ inputs.coverage && 'llvm-tools' || '' }}
- uses: Swatinem/rust-cache@v2
with:
shared-key: "test-${{ inputs.os }}-${{ matrix.group }}"

- name: Install cargo-llvm-cov
if: inputs.coverage
uses: taiki-e/install-action@cargo-llvm-cov

- run: pip install pyyaml
- name: Run tests
run: python .github/scripts/ci_config.py run-group ${{ matrix.group }} --os ${{ inputs.os }}
id: tests
run: >
python .github/scripts/ci_config.py run-group ${{ matrix.group }}
--os ${{ inputs.os }}
${{ inputs.coverage && '--coverage' || '' }}

- name: Generate coverage report
if: inputs.coverage
run: cargo llvm-cov report --lcov --output-path lcov.info

- name: Upload coverage to Codecov
if: inputs.coverage
uses: codecov/codecov-action@v5
with:
files: lcov.info
flags: ${{ steps.tests.outputs.crate_flags }}
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
2 changes: 2 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ jobs:
with:
os: ubuntu-latest
groups: ${{ needs.verify-execution.outputs.groups }}
coverage: true
secrets: inherit

test-ubuntu-arm:
name: Ubuntu ARM
Expand Down
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,34 @@
<a href="https://crates.io/crates/dash"><img alt="Crate Info" src="https://img.shields.io/crates/v/dash.svg"/></a>
<a href="https://github.com/dashevo/rust-dashcore/blob/master/LICENSE"><img alt="MIT or Apache-2.0 Licensed" src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg"/></a>
<a href="https://github.com/dashevo/rust-dashcore/actions?query=workflow%3AContinuous%20integration"><img alt="CI Status" src="https://github.com/dashevo/rust-dashcore/workflows/Continuous%20integration/badge.svg"></a>
<a href="https://codecov.io/gh/dashpay/rust-dashcore/branch/master"><img alt="Coverage (master)" src="https://codecov.io/gh/dashpay/rust-dashcore/branch/master/graph/badge.svg"/></a>
<a href="https://codecov.io/gh/dashpay/rust-dashcore/branch/v0.42-dev"><img alt="Coverage (develop)" src="https://codecov.io/gh/dashpay/rust-dashcore/branch/v0.42-dev/graph/badge.svg"/></a>
<a href="https://docs.rs"><img alt="API Docs" src="https://img.shields.io/badge/docs.rs-rust--dashcore-green"/></a>
<a href="#minimum-supported-rust-version-msrv"><img alt="Rustc Version 1.89+" src="https://img.shields.io/badge/rustc-1.89%2B-lightgrey.svg"/></a>
<img alt="Lines of code" src="https://img.shields.io/tokei/lines/github/dashevo/rust-dashcore">
</p>
</div>

<details>
<summary>Per-crate coverage</summary>

| Crate | Coverage |
|-------|----------|
| dashcore | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dashcore)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dashcore) |
| dashcore_hashes | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dashcore_hashes)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dashcore_hashes) |
| dashcore-private | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dashcore-private)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dashcore-private) |
| dash-network | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dash-network)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dash-network) |
| dash-spv | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dash-spv)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dash-spv) |
| key-wallet | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=key-wallet)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=key-wallet) |
| key-wallet-manager | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=key-wallet-manager)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=key-wallet-manager) |
| dash-network-ffi | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dash-network-ffi)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dash-network-ffi) |
| dash-spv-ffi | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dash-spv-ffi)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dash-spv-ffi) |
| key-wallet-ffi | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=key-wallet-ffi)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=key-wallet-ffi) |
| dashcore-rpc | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dashcore-rpc)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dashcore-rpc) |
| dashcore-rpc-json | [![codecov](https://codecov.io/gh/dashpay/rust-dashcore/graph/badge.svg?flag=dashcore-rpc-json)](https://codecov.io/gh/dashpay/rust-dashcore?flags[0]=dashcore-rpc-json) |

</details>

For contributors: see CONTRIBUTING.md and AGENTS.md for branch policy and commands.

[Documentation](https://dashcore.readme.io/docs)
Expand Down
Loading