diff options
| -rw-r--r-- | nitrocli/src/tests/mod.rs | 20 | ||||
| -rw-r--r-- | nitrocli/src/tests/status.rs | 13 | 
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] | 
