aboutsummaryrefslogtreecommitdiff
path: root/nitrocli/src/tests/mod.rs
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2019-01-08 20:55:33 -0800
committerDaniel Mueller <deso@posteo.net>2019-01-08 20:55:33 -0800
commit17203a1a5d91a1749adeca0f108aad8efa979ff3 (patch)
tree23de871a4e76802de0568304b667f21493bcfa1f /nitrocli/src/tests/mod.rs
parentf01d63d978505badf3400df54b592e51dc0f7654 (diff)
downloadnitrocli-17203a1a5d91a1749adeca0f108aad8efa979ff3.tar.gz
nitrocli-17203a1a5d91a1749adeca0f108aad8efa979ff3.tar.bz2
Introduce UnwrapError trait to simplify error testing
For testing purposes it is beneficial to be able to check for expected errors with the least amount of boiler plate code possible. This change attempts to be a first step into this direction. It introduces a test-only trait that can be used to directly unwrap a specific error from a Result<T, crate::error::Error>.
Diffstat (limited to 'nitrocli/src/tests/mod.rs')
-rw-r--r--nitrocli/src/tests/mod.rs20
1 files changed, 20 insertions, 0 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::*;