Skip to content

Conversation

@xdustinface
Copy link
Collaborator

This is a general CI overhaul which will not pass yet but i will work on getting there while this stays a draft.

Summary

  • Add cargo-deny security audit for vulnerability and license checking
  • Add MSRV (1.89) verification job
  • Add documentation build check
  • Add Windows to tests and pre-commit
  • Rewrite test workflow with grouped multi-platform matrix (Linux x86/ARM, macOS, Windows)
  • Add verify-coverage job that fails if any crate isn't assigned to a test group
  • Drop the complex segfault detection logic in the SPV part which was actually hiding test failures
  • Add x86_64 runner to fuzz workflow alongside ARM for cross-architecture coverage
  • Add enable concurrency control in pre-commit.yml to cancel redundant runs

Test Groups

Tests are now organized in .github/ci-groups.yml. CI fails if a new crate is added without being assigned to a group.

Jobs: 4 → ~25 (parallel)

  • 20 test jobs (5 groups (core, spv, wallet, rpc, tools) × 4 platforms (ubuntu arm, ubuntu x86_64, macos, windows))
  • security, msrv, docs build, verify-coverage

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 7, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch ci/overhaul

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

This is a general CI overhaul which will not pass yet but i will work on getting there while this stays a draft.

### Summary

  - Add `cargo-deny` security audit for vulnerability and license checking
  - Add MSRV (1.89) verification job
  - Add documentation build check
  - Add Windows to tests and pre-commit
  - Rewrite test workflow with grouped multi-platform matrix (Linux x86/ARM, macOS, Windows)
  - Add `verify-coverage` job that fails if any crate isn't assigned to a test group
  - Drop the complex segfault detection logic in the SPV part which was actually hiding test failures
  - Add x86_64 runner to fuzz workflow alongside ARM for cross-architecture coverage
  - Add enable concurrency control in `pre-commit.yml` to cancel redundant runs

  ### Test Groups
  Tests are now organized in `.github/ci-groups.yml`. CI fails if a new crate is added without being assigned to a group.

  ### Jobs: 4 → ~25 (parallel)
  - 20 test jobs (5 groups (core, spv, wallet, rpc, tools) × 4 platforms (ubuntu arm, ubuntu x86_64, macos, windows))
  - security, msrv, docs build, verify-coverage
xdustinface added a commit that referenced this pull request Dec 26, 2025
Using `BlockHash::hash(&[0])` causes heap buffer overflow in sanitizer step
in the CI overhaul #253 because it tries to X11 hash a 1 byte input.
xdustinface added a commit that referenced this pull request Dec 27, 2025
Use underscore instead of colon or dots since they are not allowed in filenames in Windows.

This is are some of the fixes required for Windows support which gets introduced/tested in the CI overhaul PR #253.
xdustinface added a commit that referenced this pull request Dec 27, 2025
Use underscore instead of colon or dots since they are not allowed in filenames in Windows.

This is are some of the fixes required for Windows support which gets introduced/tested in the CI overhaul PR #253.
xdustinface added a commit that referenced this pull request Dec 27, 2025
Uses fully qualified syntax `<T as $crate::Hash>::method()` instead of relying on the `Hash` trait being in scope. This ensures `hash_newtype!` macros compile correctly when used with `--no-default-features` in CI overhaul PR #253.
xdustinface added a commit that referenced this pull request Dec 27, 2025
Adds `license = "CC0-1.0"` to `fuzz/Cargo.toml` and `rpc-integration-test/Cargo.toml` to pass cargo-deny license checks added in the CI overhaul PR #253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Use underscore instead of colon or dots since they are not allowed in filenames in Windows.

This is are some of the fixes required for Windows support which gets introduced/tested in the CI overhaul PR dashpay#253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Uses fully qualified syntax `<T as $crate::Hash>::method()` instead of relying on the `Hash` trait being in scope. This ensures `hash_newtype!` macros compile correctly when used with `--no-default-features` in CI overhaul PR dashpay#253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Adds `license = "CC0-1.0"` to `fuzz/Cargo.toml` and `rpc-integration-test/Cargo.toml` to pass cargo-deny license checks added in the CI overhaul PR dashpay#253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Fixes an issue encountered in the CI overhaul PR dashpay#253. Open lock file
with read+write access and add test-only `read_pid` function that reads
from the same file handle. This works on Windows where exclusive locks
prevent reading through another file handle:

```
thread 'storage::lockfile::tests::test_lock_file_contains_pid' (8952) panicked at dash-spv\src\storage\lockfile.rs:72:59:
Should read lock file: Os { code: 33, kind: Uncategorized, message: "The process cannot access the file because another process has locked a portion of the file." }
```
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
commit bf6389a
Author: xdustinface <xdustinfacex@gmail.com>
Date:   Sat Dec 27 11:38:02 2025 +0100

    fix: add license field to fuzz Cargo.toml template

commit c6f8398
Author: xdustinface <xdustinfacex@gmail.com>
Date:   Fri Dec 12 11:52:08 2025 +1100

    fix: add missing license fields for cargo-deny audit

    Adds `license = "CC0-1.0"` to `fuzz/Cargo.toml` and `rpc-integration-test/Cargo.toml` to pass cargo-deny license checks added in the CI overhaul PR dashpay#253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Fixes an issue encountered in the CI overhaul PR dashpay#253. Open lock file
with read+write access and add test-only `read_pid` function that reads
from the same file handle. This works on Windows where exclusive locks
prevent reading through another file handle:

```
thread 'storage::lockfile::tests::test_lock_file_contains_pid' (8952) panicked at dash-spv\src\storage\lockfile.rs:72:59:
Should read lock file: Os { code: 33, kind: Uncategorized, message: "The process cannot access the file because another process has locked a portion of the file." }
```
xdustinface added a commit that referenced this pull request Dec 27, 2025
Fixes an issue encountered in the CI overhaul PR #253. Open lock file
with read+write access and add test-only `read_pid` function that reads
from the same file handle. This works on Windows where exclusive locks
prevent reading through another file handle:

```
thread 'storage::lockfile::tests::test_lock_file_contains_pid' (8952) panicked at dash-spv\src\storage\lockfile.rs:72:59:
Should read lock file: Os { code: 33, kind: Uncategorized, message: "The process cannot access the file because another process has locked a portion of the file." }
```
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Fixes an issue encountered in the CI overhaul PR dashpay#253. Open lock file
with read+write access and add test-only `read_pid` function that reads
from the same file handle. This works on Windows where exclusive locks
prevent reading through another file handle:

```
thread 'storage::lockfile::tests::test_lock_file_contains_pid' (8952) panicked at dash-spv\src\storage\lockfile.rs:72:59:
Should read lock file: Os { code: 33, kind: Uncategorized, message: "The process cannot access the file because another process has locked a portion of the file." }
```
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Fixes an issue encountered in Windows support in CI overhaul PR dashpay#253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Properly keep track of all create wallets and wallet infos and clean them up at the end.
- Head allocate wallet infos like it would happen in real FFI usage and
  free them properly at the end.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Modified `set_error`, `set_success`, and `ffi_error_set` macro to
  free previous error messages before setting new ones
- Added `FFIError::free_message` helper for test cleanup
- Added cleanup in all relevalt tests
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Fixes an issue encountered in Windows support in CI overhaul PR dashpay#253.
xdustinface added a commit that referenced this pull request Dec 27, 2025
Uses one file handle for create/write/sync instead of separate write then reopen for sync, it just makes sense and it also avoids a race condition on Windows where the file may still be held briefly after closing which leads to test failures in the CI overhaul PR #253.
xdustinface added a commit that referenced this pull request Dec 27, 2025
Uses one file handle for create/write/sync instead of separate write then reopen for sync, it just makes sense and it also avoids a race condition on Windows where the file may still be held briefly after closing which leads to test failures in the CI overhaul PR #253.
xdustinface added a commit that referenced this pull request Dec 27, 2025
Uses one file handle for create/write/sync instead of separate write then reopen for sync, it just makes sense and it also avoids a race condition on Windows where the file may still be held briefly after closing which leads to test failures in the CI overhaul PR #253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Fix a bug in Windows discovered in CI overhaul PR dashpay#253 where `:9999` was being accepted as a valid peer address on Windows due to DNS resolution differences.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Properly keep track of all create wallets and wallet infos and clean them up at the end.
- Head allocate wallet infos like it would happen in real FFI usage and
  free them properly at the end.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Modified `set_error`, `set_success`, and `ffi_error_set` macro to
  free previous error messages before setting new ones
- Added `FFIError::free_message` helper for test cleanup
- Added cleanup in all relevalt tests
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Properly keep track of all create wallets and wallet infos and clean them up at the end.
- Head allocate wallet infos like it would happen in real FFI usage and
  free them properly at the end.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Modified `set_error`, `set_success`, and `ffi_error_set` macro to
  free previous error messages before setting new ones
- Added `FFIError::free_message` helper for test cleanup
- Added cleanup in all relevalt tests
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Properly keep track of all create wallets and wallet infos and clean them up at the end.
- Head allocate wallet infos like it would happen in real FFI usage and
  free them properly at the end.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Modified `set_error`, `set_success`, and `ffi_error_set` macro to
  free previous error messages before setting new ones
- Added `FFIError::free_message` helper for test cleanup
- Added cleanup in all relevalt tests
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
Fix a bug in Windows discovered in CI overhaul PR dashpay#253 where `:9999` was being accepted as a valid peer address on Windows due to DNS resolution differences.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Properly keep track of all create wallets and wallet infos and clean them up at the end.
- Head allocate wallet infos like it would happen in real FFI usage and
  free them properly at the end.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Modified `set_error`, `set_success`, and `ffi_error_set` macro to
  free previous error messages before setting new ones
- Added `FFIError::free_message` helper for test cleanup
- Added cleanup in all relevalt tests
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Properly keep track of all create wallets and wallet infos and clean them up at the end.
- Head allocate wallet infos like it would happen in real FFI usage and
  free them properly at the end.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 27, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Modified `set_error`, `set_success`, and `ffi_error_set` macro to
  free previous error messages before setting new ones
- Added `FFIError::free_message` helper for test cleanup
- Added cleanup in all relevalt tests
xdustinface added a commit that referenced this pull request Dec 27, 2025
Bumps `rs-x11-hash` to `0.1.9` which now supports windows build. This is one part of the puzzle for the Windows support in the CI overhaul PR #253.
xdustinface added a commit that referenced this pull request Dec 27, 2025
Bumps `rs-x11-hash` to `0.1.9` which now supports windows build. This is one part of the puzzle for the Windows support in the CI overhaul PR #253.
xdustinface added a commit that referenced this pull request Dec 28, 2025
`honggfuzz` doesn't support Windows, causing the `pre-commit` clippy step in #253 to fail. This excludes `dash-fuzz` from clippy on Windows only.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 28, 2025
Bumps `rs-x11-hash` to `0.1.9` which now supports windows build. This is one part of the puzzle for the Windows support in the CI overhaul PR dashpay#253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 28, 2025
`honggfuzz` doesn't support Windows, causing the `pre-commit` clippy step in dashpay#253 to fail. This excludes `dash-fuzz` from clippy on Windows only.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 28, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Properly keep track of all create wallets and wallet infos and clean them up at the end.
- Head allocate wallet infos like it would happen in real FFI usage and
  free them properly at the end.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 28, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Modified `set_error`, `set_success`, and `ffi_error_set` macro to
  free previous error messages before setting new ones
- Added `FFIError::free_message` helper for test cleanup
- Added cleanup in all relevalt tests
xdustinface added a commit that referenced this pull request Dec 28, 2025
This fixes the `mixed line ending` check for Windows in the `pre-commit` step in #253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 28, 2025
This fixes the `mixed line ending` check for Windows in the `pre-commit` step in dashpay#253.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 28, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Properly keep track of all create wallets and wallet infos and clean them up at the end.
- Head allocate wallet infos like it would happen in real FFI usage and
  free them properly at the end.
xdustinface added a commit to xdustinface/rust-dashcore that referenced this pull request Dec 28, 2025
This fixes a bunch of memory leaks in tests detected by sanitizer
in CI overhaul PR dashpay#253.

- Modified `set_error`, `set_success`, and `ffi_error_set` macro to
  free previous error messages before setting new ones
- Added `FFIError::free_message` helper for test cleanup
- Added cleanup in all relevalt tests
xdustinface added a commit that referenced this pull request Dec 28, 2025
Add `encoding='utf-8'` to all file open operations in the FFI documentation generation scripts
since the default Windows encoding doesnt seem to go well with it and lets the relevant `pre-commit` step fail for Windows in #253.

Also improved error visibility in `verify_ffi.py` by capturing stderr
when the subprocess fails.
xdustinface added a commit that referenced this pull request Dec 28, 2025
Add `encoding='utf-8'` to all file open operations in the FFI documentation generation scripts
since the default Windows encoding doesnt seem to go well with it and lets the relevant `pre-commit` step fail for Windows in #253.

Also improved error visibility in `verify_ffi.py` by capturing stderr
when the subprocess fails.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants