summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nitrocli/src/tests/mod.rs20
-rw-r--r--nitrocli/src/tests/status.rs13
2 files changed, 22 insertions, 11 deletions
diff --git a/nitrocli/src/tests/mod.rs b/nitrocli/src/tests/mod.rs
index 474b43c..cb0d09e 100644
--- a/nitrocli/src/tests/mod.rs
+++ b/nitrocli/src/tests/mod.rs
@@ -17,6 +17,8 @@
// * along with this program. If not, see <http://www.gnu.org/licenses/>. *
// *************************************************************************
+use std::fmt;
+
use nitrokey_test::test as test_device;
// TODO: This is a hack to make the nitrokey-test crate work across
@@ -63,6 +65,24 @@ impl IntoArg for nitrokey::DeviceWrapper {
}
}
+/// A trait simplifying checking for expected errors.
+pub trait UnwrapError {
+ /// Unwrap an Error::Error variant.
+ fn unwrap_str_err(self) -> String;
+}
+
+impl<T> UnwrapError for crate::Result<T>
+where
+ T: fmt::Debug,
+{
+ fn unwrap_str_err(self) -> String {
+ match self.unwrap_err() {
+ crate::Error::Error(err) => err,
+ err => panic!("Unexpected error variant found: {:?}", err),
+ }
+ }
+}
+
mod nitrocli {
use super::*;
diff --git a/nitrocli/src/tests/status.rs b/nitrocli/src/tests/status.rs
index e8a4f51..838ebc9 100644
--- a/nitrocli/src/tests/status.rs
+++ b/nitrocli/src/tests/status.rs
@@ -33,17 +33,8 @@ fn not_found_raw() {
#[test_device]
fn not_found() {
- match nitrocli::handle(NO_DEV, &["status"]) {
- Ok(_) => assert!(false),
- Err(err) => {
- // Unfortunately we can't directly compare against the error
- // because not all of the variants implement PartialEq.
- match err {
- crate::Error::Error(x) => assert_eq!(x, "Nitrokey device not found".to_string()),
- _ => assert!(false, err),
- }
- }
- }
+ let res = nitrocli::handle(NO_DEV, &["status"]);
+ assert_eq!(res.unwrap_str_err(), "Nitrokey device not found");
}
#[test_device]