Skip to content

test: Implement integration tests #289

Merged
tvpeter merged 14 commits into
bitcoindevkit:masterfrom
tvpeter:test/integration-tests
Jul 8, 2026
Merged

test: Implement integration tests #289
tvpeter merged 14 commits into
bitcoindevkit:masterfrom
tvpeter:test/integration-tests

Conversation

@tvpeter

@tvpeter tvpeter commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

Description

This PR builds on #278 and introduces integration tests for bdk-cli. It replaces manual std::process::Command boilerplate with the assert_cmd library, allowing us to perform black-box testing against the compiled binary.

Features covered so far include:

  • key: generate, derive, and restore
  • wallets: list wallets
  • wallet config: save config, read config.
  • descriptor: generate descriptor
  • compile: policy compiler
  • offline wallet operations: new_address, unused_address, balance, unspent, transactions, policies, public_descriptor, create_tx, combine_psbt

Notes to the reviewers

Changelog notice

  • Introduces the BdkCli helper struct to inject context state into base commands.
  • Dropped verbose flag from wallets as it was applicable to only Pbst

Checklists

All Submissions:

  • I've signed all my commits
  • I followed the contribution guidelines
  • I ran cargo fmt and cargo clippy before committing

@codecov

codecov Bot commented Jun 12, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 82.50000% with 14 lines in your changes missing coverage. Please review.
✅ Project coverage is 56.89%. Comparing base (63f769a) to head (6000dd5).
⚠️ Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
src/main.rs 0.00% 8 Missing ⚠️
src/handlers/repl.rs 33.33% 4 Missing ⚠️
src/config.rs 96.66% 1 Missing ⚠️
src/utils/runtime.rs 93.33% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           master     #289       +/-   ##
===========================================
+ Coverage   24.79%   56.89%   +32.10%     
===========================================
  Files          22       22               
  Lines        3678     3661       -17     
===========================================
+ Hits          912     2083     +1171     
+ Misses       2766     1578     -1188     
Flag Coverage Δ
rust 56.89% <82.50%> (+32.10%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tvpeter
tvpeter force-pushed the test/integration-tests branch from b3ffd2d to 0329928 Compare June 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeter force-pushed the test/integration-tests branch from 0329928 to dfeb580 Compare June 24, 2026 04:45
@tvpeter
tvpeter requested a review from notmandatory June 24, 2026 11:23
@tvpeter tvpeter self-assigned this Jun 28, 2026
@tvpeter tvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpeter tvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpeter tvpeter moved this to Ready to Review in BDK-CLI Jun 28, 2026
@tvpeter
tvpeter force-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933b Compare July 8, 2026 20:59
tvpeter added 14 commits July 8, 2026 22:49
- add BdkCli helper struct and impl methods
- add integration tests for the key subcommand
operations
- Add integration tests for wallets, descriptor,
compile and config modules
- add integration tests for offline wallet
operations
- Add test for creating, signing, broadcasting tx
- Add test for combining psbt, fee bump and other
psbt related commands
- Add bip322 tests
- add saving proxy_opts for electrum and esplora
clients to config and reading values
- fix prepare_home_dir util fn
Multi-line description of commit,
feel free to be detailed.

[Ticket: X]
- add tests for OP_RETURN in createtx
- add tests for coin selection in createtx
- add test for esplora client full_scan
- fix clippy issues
- The problem: When running `cargo test --all-
features`, the backends (electrum, rpc, esplora
from TestEnv) run in parallel at the number of
cpus available and exhaust the processes/ports
available, thereby resulting in os error 35.

This fix limits the number of threads that are
available for the tests to run in parallel.
@tvpeter
tvpeter force-pushed the test/integration-tests branch from 5ea933b to 6000dd5 Compare July 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:master Jul 8, 2026
9 checks passed
@github-project-automation github-project-automation Bot moved this from Ready to Review to Done in BDK-CLI Jul 8, 2026
tvpeter added a commit that referenced this pull request Jul 18, 2026
…t locked UTXOs

7c2dfac feat(utxo-locking): Limit locking to known utxos (Vihiga Tyonum)
90270f7 fix(bip322): Re-enable bip322 feature (Vihiga Tyonum)
aba6c66 feat(utxo-locking): Add tests for utxo locking (Vihiga Tyonum)
d3dde30 fix(bip322): disable bip322 feature (Vihiga Tyonum)
242d4da feat(utxo-locking): Add wallet locking commands (Vihiga Tyonum)
205d46c feat(cbf): Update bdk_kyoto to v0.17.0 (Vihiga Tyonum)
d89a08d feat(wallet-3.1.0): Update Wallet to v3.1.0 (Vihiga Tyonum)
cbee8a0 fix(proxy_opts): add saving and reading proxy_opts (Vihiga Tyonum)
eec81e2 ref(verbose): Dropped `verbose` flag from tests (Vihiga Tyonum)
dfeb580 test(online): Add test transaction full cycle (Vihiga Tyonum)
ae0c32a test: Add integration tests for offline wallet ops (Vihiga Tyonum)
b8761bc test: Add wallets, descriptor, compile & config (Vihiga Tyonum)
38a709f test: Add helper fns & integration tests for key (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description
  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  This PR updates the Wallet API to v3.1.0 and adds wallet subcommands to lock and unlock UTXOs.  Locked outpoints are excluded from coin selection, and the lock state is stored in the wallet. It also updates the `bdk_redb` to v0.2.0 and `bdk_kyoto` to v0.17.0.

  Fixes #293 and builds upon #289 and #278

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->
  - Update bdk_wallet to v3.1.0
  - Add wallet `lock_utxo` command
  - Add wallet `unlock_utxo` command
  - Add wallet `locked_uxtos` command
  - Update bdk_redb to v0.2.0
  - Update bdk_kyoto to v0.17.0
  - Replace `Network` enum with `NetworkKind`
  - Replace `include_output_redeem_witness_script` with `add_global_xpubs` in TxBuilder
  - Replace `submit_package` with `broadcast_random` for broadcasting transactions in KyotoClient

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [ ] I've added docs for the new feature
  * [ ] I've updated `CHANGELOG.md`

Top commit has no ACKs.

Tree-SHA512: df9291a93f2231408981d5a90b6164a75e6ca4b6c73e5638fe1c18323ea2be1c1b485bddc86efbfc64620087238df19dcb5274272a1ea27cd8b5dac0f08e6b6b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test Unit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant