hal: remove the crate::workflow::testing re-export
What changed, and why it matters
This commit is a simple internal cleanup in the BitBox02 firmware's Rust code. It removes a shortcut (a 're-export') that made test-only user-interface helpers available under an old module path, and updates all test files to import those helpers directly from their new location. There is no change to the actual device behavior, no bug fix, and no security impact.
No security action needed. This is a refactoring commit affecting only test imports.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change deletes src/rust/bitbox02-rust/src/workflow/testing.rs, which only contained re-exports of crate::hal::testing::ui items (TestingUi, Screen, etc.). It removes the corresponding pub mod testing declaration from workflow.rs and updates #[cfg(test)] modules across 22 files to import from crate::hal::testing::ui instead of crate::workflow::testing. All modifications are inside test code (mod tests) and gated by the testing feature; production code paths are untouched.
Changed components
src/rust/bitbox02-rust/src/workflow/testing.rssrc/rust/bitbox02-rust/src/workflow.rstest modules in hww, hww/api, reset, workflow subsystemsInspect captured patch +31 / −36
diff --git a/src/rust/bitbox02-rust/src/hww.rs b/src/rust/bitbox02-rust/src/hww.rs
index 653b193..1ad553b 100644
--- a/src/rust/bitbox02-rust/src/hww.rs
+++ b/src/rust/bitbox02-rust/src/hww.rs
@@ -133,7 +133,7 @@ mod tests {
extern crate std;
use crate::hal::testing::TestingHal;
- use crate::workflow::testing::Screen;
+ use crate::hal::testing::ui::Screen;
use bitbox02::testing::mock_memory;
use util::bb02_async::block_on;
@@ -382,7 +382,7 @@ mod tests {
.unwrap();
assert!(!crate::keystore::is_locked());
assert!(!mock_hal.memory.is_initialized());
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
make_request(
&mut mock_hal,
(crate::pb::Request {
@@ -423,7 +423,7 @@ mod tests {
// Can't reboot when initialized but locked.
crate::keystore::lock();
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
let response_encoded =
make_request(&mut mock_hal, &reboot_request.encode_to_vec()).unwrap();
let response = crate::pb::Response::decode(&response_encoded[..]).unwrap();
@@ -436,7 +436,7 @@ mod tests {
);
// Unlock.
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
mock_hal
.ui
.set_enter_string(Box::new(|_params| Ok("password".into())));
@@ -448,7 +448,7 @@ mod tests {
// Since in the previous request the msg was encrypted but not decrypted (query was
// rejected), the noise states are out of sync and we need to make a new channel.
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
let mut make_request = init_noise();
let reboot_called = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| {
make_request(&mut mock_hal, reboot_request.encode_to_vec().as_ref()).unwrap();
@@ -509,7 +509,7 @@ mod tests {
}]
);
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
make_request(
&mut mock_hal,
(crate::pb::Request {
@@ -541,7 +541,7 @@ mod tests {
let seed = crate::keystore::copy_seed(&mut mock_hal).unwrap();
assert_eq!(seed.len(), host_entropy.len());
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
assert!(matches!(
crate::pb::Response::decode(
make_request(
@@ -566,7 +566,7 @@ mod tests {
));
assert_eq!(mock_hal.ui.screens, vec![]);
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
make_request(
&mut mock_hal,
(crate::pb::Request {
@@ -593,7 +593,7 @@ mod tests {
]
);
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
assert!(matches!(
crate::pb::Response::decode(
make_request(
@@ -618,7 +618,7 @@ mod tests {
));
assert_eq!(mock_hal.ui.screens, vec![]);
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
let backup_id = match crate::pb::Response::decode(
make_request(
&mut mock_hal,
@@ -655,7 +655,7 @@ mod tests {
};
assert_eq!(mock_hal.ui.screens, vec![]);
- mock_hal.ui = crate::workflow::testing::TestingUi::new();
+ mock_hal.ui = crate::hal::testing::TestingUi::new();
mock_hal
.ui
.set_enter_string(Box::new(|_params| Ok("password".into())));
diff --git a/src/rust/bitbox02-rust/src/hww/api/backup.rs b/src/rust/bitbox02-rust/src/hww/api/backup.rs
index 7a583e7..550e7e1 100644
--- a/src/rust/bitbox02-rust/src/hww/api/backup.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/backup.rs
@@ -151,8 +151,8 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::{mock_unlocked, mock_unlocked_using_mnemonic};
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use bitbox02::testing::mock_memory;
use util::bb02_async::block_on;
diff --git a/src/rust/bitbox02-rust/src/hww/api/bitcoin.rs b/src/rust/bitbox02-rust/src/hww/api/bitcoin.rs
index 9f4e40e..23f6d3f 100644
--- a/src/rust/bitbox02-rust/src/hww/api/bitcoin.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/bitcoin.rs
@@ -322,9 +322,9 @@ mod tests {
use super::*;
use crate::bip32::parse_xpub;
+ use crate::hal::testing::ui::Screen;
use crate::hal::{Memory, testing::TestingHal};
use crate::keystore::testing::{TEST_MNEMONIC, mock_unlocked, mock_unlocked_using_mnemonic};
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use alloc::vec::Vec;
use bitbox02::testing::mock_memory;
diff --git a/src/rust/bitbox02-rust/src/hww/api/bitcoin/signmsg.rs b/src/rust/bitbox02-rust/src/hww/api/bitcoin/signmsg.rs
index 3d5733b..9b60184 100644
--- a/src/rust/bitbox02-rust/src/hww/api/bitcoin/signmsg.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/bitcoin/signmsg.rs
@@ -126,8 +126,8 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::mock_unlocked;
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use util::bb02_async::block_on;
use util::bip32::HARDENED;
diff --git a/src/rust/bitbox02-rust/src/hww/api/bitcoin/signtx.rs b/src/rust/bitbox02-rust/src/hww/api/bitcoin/signtx.rs
index f3cad9d..c4c3c6c 100644
--- a/src/rust/bitbox02-rust/src/hww/api/bitcoin/signtx.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/bitcoin/signtx.rs
@@ -1288,9 +1288,9 @@ pub async fn process(
mod tests {
use super::*;
use crate::bip32::parse_xpub;
+ use crate::hal::testing::ui::Screen;
use crate::hal::{Memory, testing::TestingHal};
use crate::keystore::testing::{mock_unlocked, mock_unlocked_using_mnemonic};
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use bitbox02::testing::mock_memory;
use hex_lit::hex;
diff --git a/src/rust/bitbox02-rust/src/hww/api/cardano/address.rs b/src/rust/bitbox02-rust/src/hww/api/cardano/address.rs
index 9b8c224..343f0d0 100644
--- a/src/rust/bitbox02-rust/src/hww/api/cardano/address.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/cardano/address.rs
@@ -395,8 +395,8 @@ pub async fn process(
mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::mock_unlocked;
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use util::bb02_async::block_on;
use util::bip32::HARDENED;
diff --git a/src/rust/bitbox02-rust/src/hww/api/cardano/sign_transaction.rs b/src/rust/bitbox02-rust/src/hww/api/cardano/sign_transaction.rs
index f94f94c..37c9c38 100644
--- a/src/rust/bitbox02-rust/src/hww/api/cardano/sign_transaction.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/cardano/sign_transaction.rs
@@ -324,8 +324,8 @@ pub async fn process(
mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::mock_unlocked;
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use util::bb02_async::block_on;
use util::bip32::HARDENED;
diff --git a/src/rust/bitbox02-rust/src/hww/api/change_password.rs b/src/rust/bitbox02-rust/src/hww/api/change_password.rs
index 09045a6..26e92bb 100644
--- a/src/rust/bitbox02-rust/src/hww/api/change_password.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/change_password.rs
@@ -37,8 +37,9 @@ pub async fn process(hal: &mut impl crate::hal::Hal) -> Result<Response, Error>
mod tests {
use super::*;
+ use crate::hal::testing::ui::Screen;
use crate::hal::{Memory, testing::TestingHal};
- use crate::workflow::{testing::Screen, unlock};
+ use crate::workflow::unlock;
use alloc::boxed::Box;
use bitbox02::testing::mock_memory;
use hex_lit::hex;
diff --git a/src/rust/bitbox02-rust/src/hww/api/ethereum/pubrequest.rs b/src/rust/bitbox02-rust/src/hww/api/ethereum/pubrequest.rs
index d3323e2..d873496 100644
--- a/src/rust/bitbox02-rust/src/hww/api/ethereum/pubrequest.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/ethereum/pubrequest.rs
@@ -93,8 +93,8 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::mock_unlocked;
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use util::bb02_async::block_on;
use util::bip32::HARDENED;
diff --git a/src/rust/bitbox02-rust/src/hww/api/ethereum/sign.rs b/src/rust/bitbox02-rust/src/hww/api/ethereum/sign.rs
index b9b2590..b668780 100644
--- a/src/rust/bitbox02-rust/src/hww/api/ethereum/sign.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/ethereum/sign.rs
@@ -426,8 +426,8 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::mock_unlocked;
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use util::bb02_async::block_on;
use util::bip32::HARDENED;
diff --git a/src/rust/bitbox02-rust/src/hww/api/ethereum/sign_typed_msg.rs b/src/rust/bitbox02-rust/src/hww/api/ethereum/sign_typed_msg.rs
index b97a810..6b9f5eb 100644
--- a/src/rust/bitbox02-rust/src/hww/api/ethereum/sign_typed_msg.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/ethereum/sign_typed_msg.rs
@@ -588,8 +588,8 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::mock_unlocked;
- use crate::workflow::testing::Screen;
use util::bb02_async::block_on;
use util::bip32::HARDENED;
diff --git a/src/rust/bitbox02-rust/src/hww/api/ethereum/signmsg.rs b/src/rust/bitbox02-rust/src/hww/api/ethereum/signmsg.rs
index ab398d7..11e9f05 100644
--- a/src/rust/bitbox02-rust/src/hww/api/ethereum/signmsg.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/ethereum/signmsg.rs
@@ -93,8 +93,8 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::mock_unlocked;
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use util::bb02_async::block_on;
use util::bip32::HARDENED;
diff --git a/src/rust/bitbox02-rust/src/hww/api/reset.rs b/src/rust/bitbox02-rust/src/hww/api/reset.rs
index 349e0d6..1d506c9 100644
--- a/src/rust/bitbox02-rust/src/hww/api/reset.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/reset.rs
@@ -27,8 +27,8 @@ pub async fn process(hal: &mut impl crate::hal::Hal) -> Result<Response, Error>
mod tests {
use super::*;
+ use crate::hal::testing::ui::Screen;
use crate::hal::{Memory, testing::TestingHal};
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use bitbox02::testing::mock_memory;
use util::bb02_async::block_on;
diff --git a/src/rust/bitbox02-rust/src/hww/api/set_device_name.rs b/src/rust/bitbox02-rust/src/hww/api/set_device_name.rs
index d6c975c..2fa6973 100644
--- a/src/rust/bitbox02-rust/src/hww/api/set_device_name.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/set_device_name.rs
@@ -35,7 +35,7 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
- use crate::workflow::testing::Screen;
+ use crate::hal::testing::ui::Screen;
use alloc::boxed::Box;
use bitbox02::testing::mock_memory;
use util::bb02_async::block_on;
diff --git a/src/rust/bitbox02-rust/src/hww/api/set_mnemonic_passphrase_enabled.rs b/src/rust/bitbox02-rust/src/hww/api/set_mnemonic_passphrase_enabled.rs
index 359a17f..c94d210 100644
--- a/src/rust/bitbox02-rust/src/hww/api/set_mnemonic_passphrase_enabled.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/set_mnemonic_passphrase_enabled.rs
@@ -37,7 +37,7 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
- use crate::workflow::testing::Screen;
+ use crate::hal::testing::ui::Screen;
use alloc::boxed::Box;
use bitbox02::testing::mock_memory;
use util::bb02_async::block_on;
diff --git a/src/rust/bitbox02-rust/src/hww/api/show_mnemonic.rs b/src/rust/bitbox02-rust/src/hww/api/show_mnemonic.rs
index da423a5..1ee7649 100644
--- a/src/rust/bitbox02-rust/src/hww/api/show_mnemonic.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/show_mnemonic.rs
@@ -60,7 +60,7 @@ mod tests {
use alloc::boxed::Box;
use crate::hal::testing::TestingHal;
- use crate::workflow::testing::Screen;
+ use crate::hal::testing::ui::Screen;
use bitbox02::testing::mock_memory;
use util::bb02_async::block_on;
diff --git a/src/rust/bitbox02-rust/src/hww/api/system.rs b/src/rust/bitbox02-rust/src/hww/api/system.rs
index b32ab80..7360236 100644
--- a/src/rust/bitbox02-rust/src/hww/api/system.rs
+++ b/src/rust/bitbox02-rust/src/hww/api/system.rs
@@ -35,7 +35,7 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
- use crate::workflow::testing::Screen;
+ use crate::hal::testing::ui::Screen;
use alloc::boxed::Box;
use util::bb02_async::block_on;
diff --git a/src/rust/bitbox02-rust/src/reset.rs b/src/rust/bitbox02-rust/src/reset.rs
index f0cdf7f..7337e61 100644
--- a/src/rust/bitbox02-rust/src/reset.rs
+++ b/src/rust/bitbox02-rust/src/reset.rs
@@ -73,9 +73,9 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore;
use crate::keystore::testing::mock_unlocked;
- use crate::workflow::testing::Screen;
use bitbox02::testing::mock_memory;
use util::bb02_async::block_on;
diff --git a/src/rust/bitbox02-rust/src/workflow.rs b/src/rust/bitbox02-rust/src/workflow.rs
index 1f2f84e..b71f8e1 100644
--- a/src/rust/bitbox02-rust/src/workflow.rs
+++ b/src/rust/bitbox02-rust/src/workflow.rs
@@ -13,8 +13,6 @@ pub mod pairing;
pub mod password;
pub mod sdcard;
pub mod status;
-#[cfg(feature = "testing")]
-pub mod testing;
pub mod transaction;
pub mod trinary_choice;
pub mod trinary_input_string;
diff --git a/src/rust/bitbox02-rust/src/workflow/pairing.rs b/src/rust/bitbox02-rust/src/workflow/pairing.rs
index 5fcebfe..1300217 100644
--- a/src/rust/bitbox02-rust/src/workflow/pairing.rs
+++ b/src/rust/bitbox02-rust/src/workflow/pairing.rs
@@ -37,7 +37,7 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
- use crate::workflow::testing::Screen;
+ use crate::hal::testing::ui::Screen;
use util::bb02_async::block_on;
use alloc::boxed::Box;
diff --git a/src/rust/bitbox02-rust/src/workflow/testing.rs b/src/rust/bitbox02-rust/src/workflow/testing.rs
deleted file mode 100644
index a590b14..0000000
--- a/src/rust/bitbox02-rust/src/workflow/testing.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-pub use crate::hal::testing::ui::TestingUi as Ui;
-pub use crate::hal::testing::ui::*;
diff --git a/src/rust/bitbox02-rust/src/workflow/unlock.rs b/src/rust/bitbox02-rust/src/workflow/unlock.rs
index 32a807b..6711f9b 100644
--- a/src/rust/bitbox02-rust/src/workflow/unlock.rs
+++ b/src/rust/bitbox02-rust/src/workflow/unlock.rs
@@ -208,8 +208,8 @@ mod tests {
use super::*;
use crate::hal::testing::TestingHal;
+ use crate::hal::testing::ui::Screen;
use crate::keystore::testing::{mock_unlocked, mock_unlocked_using_mnemonic};
- use crate::workflow::testing::Screen;
use alloc::boxed::Box;
use util::bb02_async::block_on;
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.