aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2019-01-28 19:45:40 +0000
committerRobin Krahl <robin.krahl@ireas.org>2019-01-28 19:48:33 +0000
commitd1262390573b758ac4aa610eff96a1b5dcb9f3d6 (patch)
tree445a3251f134c1794aabf587a7ef1ced01b960ea
parent52df93249f27ae803bada0451d7380bc3d596007 (diff)
downloadnitrokey-rs-d1262390573b758ac4aa610eff96a1b5dcb9f3d6.tar.gz
nitrokey-rs-d1262390573b758ac4aa610eff96a1b5dcb9f3d6.tar.bz2
Add assert_any_ok macro to unit tests
Sometimes we cannot use assert_ok! as we can’t compare the Ok value (or do not want to). For these cases, this patch adds the new assert_any_ok macro to use instead of assert!(x.is_ok()). The advantage is that the error information is not discarded but printed in a helpful error message.
-rw-r--r--tests/device.rs12
-rw-r--r--tests/pws.rs4
-rw-r--r--tests/util/mod.rs15
3 files changed, 23 insertions, 8 deletions
diff --git a/tests/device.rs b/tests/device.rs
index 67c2713..306b33f 100644
--- a/tests/device.rs
+++ b/tests/device.rs
@@ -55,9 +55,9 @@ fn connect_pro(device: Pro) {
assert_eq!(device.get_model(), nitrokey::Model::Pro);
drop(device);
- assert!(nitrokey::connect().is_ok());
- assert!(nitrokey::connect_model(nitrokey::Model::Pro).is_ok());
- assert!(nitrokey::Pro::connect().is_ok());
+ assert_any_ok!(nitrokey::connect());
+ assert_any_ok!(nitrokey::connect_model(nitrokey::Model::Pro));
+ assert_any_ok!(nitrokey::Pro::connect());
}
#[test_device]
@@ -65,9 +65,9 @@ fn connect_storage(device: Storage) {
assert_eq!(device.get_model(), nitrokey::Model::Storage);
drop(device);
- assert!(nitrokey::connect().is_ok());
- assert!(nitrokey::connect_model(nitrokey::Model::Storage).is_ok());
- assert!(nitrokey::Storage::connect().is_ok());
+ assert_any_ok!(nitrokey::connect());
+ assert_any_ok!(nitrokey::connect_model(nitrokey::Model::Storage));
+ assert_any_ok!(nitrokey::Storage::connect());
}
fn assert_empty_serial_number() {
diff --git a/tests/pws.rs b/tests/pws.rs
index 3ec7e38..32dc8f7 100644
--- a/tests/pws.rs
+++ b/tests/pws.rs
@@ -46,12 +46,12 @@ fn enable(device: DeviceWrapper) {
CommandError::WrongPassword,
device.get_password_safe(&(USER_PASSWORD.to_owned() + "123"))
);
- assert!(device.get_password_safe(USER_PASSWORD).is_ok());
+ assert_any_ok!(device.get_password_safe(USER_PASSWORD));
assert_cmd_err!(
CommandError::WrongPassword,
device.get_password_safe(ADMIN_PASSWORD)
);
- assert!(device.get_password_safe(USER_PASSWORD).is_ok());
+ assert_any_ok!(device.get_password_safe(USER_PASSWORD));
}
#[test_device]
diff --git a/tests/util/mod.rs b/tests/util/mod.rs
index 2bda9ba..bd207a9 100644
--- a/tests/util/mod.rs
+++ b/tests/util/mod.rs
@@ -22,6 +22,21 @@ macro_rules! unwrap_ok {
}
#[macro_export]
+macro_rules! assert_any_ok {
+ ($val:expr) => {{
+ match &$val {
+ Ok(_) => {}
+ Err(err) => panic!(
+ r#"assertion failed: `(left == right)`
+ left: `Ok(_)`,
+ right: `Err({:?})`"#,
+ err
+ ),
+ }
+ }};
+}
+
+#[macro_export]
macro_rules! assert_ok {
($left:expr, $right:expr) => {{
match &$right {