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

@tvpetertvpeter 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
  • Fixed saving proxy_opts for esplora and electrum clients to wallet config and reusing saved values
  • fixed prepare_home_dir utility helper
  • limit the number of threads for running tests in parallel to 2

Checklists

All Submissions:

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

@codecov

codecovBot 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 linesPatch %Lines
src/main.rs0.00%8 Missing ⚠️
src/handlers/repl.rs33.33%4 Missing ⚠️
src/config.rs96.66%1 Missing ⚠️
src/utils/runtime.rs93.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 
FlagCoverage Δ
rust56.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
tvpeterforce-pushed the test/integration-tests branch from b3ffd2d to 0329928CompareJune 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeterforce-pushed the test/integration-tests branch from 0329928 to dfeb580CompareJune 24, 2026 04:45
@tvpetertvpeter self-assigned this Jun 28, 2026
@tvpetertvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpetertvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpetertvpeter moved this to Ready to Review in BDK-CLIJun 28, 2026
@tvpeter
tvpeterforce-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933bCompareJuly 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
tvpeterforce-pushed the test/integration-tests branch from 5ea933b to 6000dd5CompareJuly 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:masterJul 8, 2026
9 checks passed
@github-project-automationgithub-project-automationBot moved this from Ready to Review to Done in BDK-CLIJul 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
This was referenced Jul 19, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testUnit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@tvpeter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
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

@tvpetertvpeter 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
  • Fixed saving proxy_opts for esplora and electrum clients to wallet config and reusing saved values
  • fixed prepare_home_dir utility helper
  • limit the number of threads for running tests in parallel to 2

Checklists

All Submissions:

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

@codecov

codecovBot 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 linesPatch %Lines
src/main.rs0.00%8 Missing ⚠️
src/handlers/repl.rs33.33%4 Missing ⚠️
src/config.rs96.66%1 Missing ⚠️
src/utils/runtime.rs93.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 
FlagCoverage Δ
rust56.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
tvpeterforce-pushed the test/integration-tests branch from b3ffd2d to 0329928CompareJune 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeterforce-pushed the test/integration-tests branch from 0329928 to dfeb580CompareJune 24, 2026 04:45
@tvpetertvpeter self-assigned this Jun 28, 2026
@tvpetertvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpetertvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpetertvpeter moved this to Ready to Review in BDK-CLIJun 28, 2026
@tvpeter
tvpeterforce-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933bCompareJuly 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
tvpeterforce-pushed the test/integration-tests branch from 5ea933b to 6000dd5CompareJuly 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:masterJul 8, 2026
9 checks passed
@github-project-automationgithub-project-automationBot moved this from Ready to Review to Done in BDK-CLIJul 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
This was referenced Jul 19, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testUnit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@tvpeter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@tvpetertvpeter 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
  • Fixed saving proxy_opts for esplora and electrum clients to wallet config and reusing saved values
  • fixed prepare_home_dir utility helper
  • limit the number of threads for running tests in parallel to 2

Checklists

All Submissions:

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

@codecov

codecovBot 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 linesPatch %Lines
src/main.rs0.00%8 Missing ⚠️
src/handlers/repl.rs33.33%4 Missing ⚠️
src/config.rs96.66%1 Missing ⚠️
src/utils/runtime.rs93.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 
FlagCoverage Δ
rust56.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
tvpeterforce-pushed the test/integration-tests branch from b3ffd2d to 0329928CompareJune 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeterforce-pushed the test/integration-tests branch from 0329928 to dfeb580CompareJune 24, 2026 04:45
@tvpetertvpeter self-assigned this Jun 28, 2026
@tvpetertvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpetertvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpetertvpeter moved this to Ready to Review in BDK-CLIJun 28, 2026
@tvpeter
tvpeterforce-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933bCompareJuly 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
tvpeterforce-pushed the test/integration-tests branch from 5ea933b to 6000dd5CompareJuly 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:masterJul 8, 2026
9 checks passed
@github-project-automationgithub-project-automationBot moved this from Ready to Review to Done in BDK-CLIJul 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
This was referenced Jul 19, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testUnit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@tvpeter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@tvpetertvpeter 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
  • Fixed saving proxy_opts for esplora and electrum clients to wallet config and reusing saved values
  • fixed prepare_home_dir utility helper
  • limit the number of threads for running tests in parallel to 2

Checklists

All Submissions:

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

@codecov

codecovBot 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 linesPatch %Lines
src/main.rs0.00%8 Missing ⚠️
src/handlers/repl.rs33.33%4 Missing ⚠️
src/config.rs96.66%1 Missing ⚠️
src/utils/runtime.rs93.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 
FlagCoverage Δ
rust56.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
tvpeterforce-pushed the test/integration-tests branch from b3ffd2d to 0329928CompareJune 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeterforce-pushed the test/integration-tests branch from 0329928 to dfeb580CompareJune 24, 2026 04:45
@tvpetertvpeter self-assigned this Jun 28, 2026
@tvpetertvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpetertvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpetertvpeter moved this to Ready to Review in BDK-CLIJun 28, 2026
@tvpeter
tvpeterforce-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933bCompareJuly 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
tvpeterforce-pushed the test/integration-tests branch from 5ea933b to 6000dd5CompareJuly 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:masterJul 8, 2026
9 checks passed
@github-project-automationgithub-project-automationBot moved this from Ready to Review to Done in BDK-CLIJul 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
This was referenced Jul 19, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testUnit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@tvpeter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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

@tvpetertvpeter 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
  • Fixed saving proxy_opts for esplora and electrum clients to wallet config and reusing saved values
  • fixed prepare_home_dir utility helper
  • limit the number of threads for running tests in parallel to 2

Checklists

All Submissions:

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

@codecov

codecovBot 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 linesPatch %Lines
src/main.rs0.00%8 Missing ⚠️
src/handlers/repl.rs33.33%4 Missing ⚠️
src/config.rs96.66%1 Missing ⚠️
src/utils/runtime.rs93.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 
FlagCoverage Δ
rust56.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
tvpeterforce-pushed the test/integration-tests branch from b3ffd2d to 0329928CompareJune 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeterforce-pushed the test/integration-tests branch from 0329928 to dfeb580CompareJune 24, 2026 04:45
@tvpetertvpeter self-assigned this Jun 28, 2026
@tvpetertvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpetertvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpetertvpeter moved this to Ready to Review in BDK-CLIJun 28, 2026
@tvpeter
tvpeterforce-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933bCompareJuly 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
tvpeterforce-pushed the test/integration-tests branch from 5ea933b to 6000dd5CompareJuly 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:masterJul 8, 2026
9 checks passed
@github-project-automationgithub-project-automationBot moved this from Ready to Review to Done in BDK-CLIJul 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
This was referenced Jul 19, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testUnit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@tvpeter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@tvpetertvpeter 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
  • Fixed saving proxy_opts for esplora and electrum clients to wallet config and reusing saved values
  • fixed prepare_home_dir utility helper
  • limit the number of threads for running tests in parallel to 2

Checklists

All Submissions:

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

@codecov

codecovBot 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 linesPatch %Lines
src/main.rs0.00%8 Missing ⚠️
src/handlers/repl.rs33.33%4 Missing ⚠️
src/config.rs96.66%1 Missing ⚠️
src/utils/runtime.rs93.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 
FlagCoverage Δ
rust56.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
tvpeterforce-pushed the test/integration-tests branch from b3ffd2d to 0329928CompareJune 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeterforce-pushed the test/integration-tests branch from 0329928 to dfeb580CompareJune 24, 2026 04:45
@tvpetertvpeter self-assigned this Jun 28, 2026
@tvpetertvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpetertvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpetertvpeter moved this to Ready to Review in BDK-CLIJun 28, 2026
@tvpeter
tvpeterforce-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933bCompareJuly 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
tvpeterforce-pushed the test/integration-tests branch from 5ea933b to 6000dd5CompareJuly 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:masterJul 8, 2026
9 checks passed
@github-project-automationgithub-project-automationBot moved this from Ready to Review to Done in BDK-CLIJul 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
This was referenced Jul 19, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testUnit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@tvpeter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

@tvpetertvpeter 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
  • Fixed saving proxy_opts for esplora and electrum clients to wallet config and reusing saved values
  • fixed prepare_home_dir utility helper
  • limit the number of threads for running tests in parallel to 2

Checklists

All Submissions:

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

@codecov

codecovBot 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 linesPatch %Lines
src/main.rs0.00%8 Missing ⚠️
src/handlers/repl.rs33.33%4 Missing ⚠️
src/config.rs96.66%1 Missing ⚠️
src/utils/runtime.rs93.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 
FlagCoverage Δ
rust56.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
tvpeterforce-pushed the test/integration-tests branch from b3ffd2d to 0329928CompareJune 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeterforce-pushed the test/integration-tests branch from 0329928 to dfeb580CompareJune 24, 2026 04:45
@tvpetertvpeter self-assigned this Jun 28, 2026
@tvpetertvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpetertvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpetertvpeter moved this to Ready to Review in BDK-CLIJun 28, 2026
@tvpeter
tvpeterforce-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933bCompareJuly 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
tvpeterforce-pushed the test/integration-tests branch from 5ea933b to 6000dd5CompareJuly 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:masterJul 8, 2026
9 checks passed
@github-project-automationgithub-project-automationBot moved this from Ready to Review to Done in BDK-CLIJul 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
This was referenced Jul 19, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testUnit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@tvpeter
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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

@tvpetertvpeter 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
  • Fixed saving proxy_opts for esplora and electrum clients to wallet config and reusing saved values
  • fixed prepare_home_dir utility helper
  • limit the number of threads for running tests in parallel to 2

Checklists

All Submissions:

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

@codecov

codecovBot 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 linesPatch %Lines
src/main.rs0.00%8 Missing ⚠️
src/handlers/repl.rs33.33%4 Missing ⚠️
src/config.rs96.66%1 Missing ⚠️
src/utils/runtime.rs93.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 
FlagCoverage Δ
rust56.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
tvpeterforce-pushed the test/integration-tests branch from b3ffd2d to 0329928CompareJune 22, 2026 21:53
@tvpeter
tvpeter marked this pull request as ready for review June 22, 2026 21:56
@tvpeter
tvpeterforce-pushed the test/integration-tests branch from 0329928 to dfeb580CompareJune 24, 2026 04:45
@tvpetertvpeter self-assigned this Jun 28, 2026
@tvpetertvpeter added the test Unit and Integration testing label Jun 28, 2026
@tvpetertvpeter added this to the CLI 4.0.0 milestone Jun 28, 2026
@tvpetertvpeter moved this to Ready to Review in BDK-CLIJun 28, 2026
@tvpeter
tvpeterforce-pushed the test/integration-tests branch 4 times, most recently from ff42ff3 to 5ea933bCompareJuly 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
tvpeterforce-pushed the test/integration-tests branch from 5ea933b to 6000dd5CompareJuly 8, 2026 21:49
@tvpeter
tvpeter merged commit 32e6115 into bitcoindevkit:masterJul 8, 2026
9 checks passed
@github-project-automationgithub-project-automationBot moved this from Ready to Review to Done in BDK-CLIJul 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
This was referenced Jul 19, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testUnit and Integration testing

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@tvpeter