From aeaffebcde16db3fa505935771b19cbae9a6f658 Mon Sep 17 00:00:00 2001
From: Robin Krahl <robin.krahl@ireas.org>
Date: Sun, 2 Feb 2020 12:15:27 +0100
Subject: Add config test case and example config file

This patch adds a simple configuration file that demonstrates the syntax
and contains some documentation.  We suggest to ship this file together
with nitrocli and to install it e.g., in the /usr/share/doc/nitrocli
directory.  This patch also adds a simple test case that makes sure that
the example file is parsed correctly.
---
 doc/config.example.toml | 10 ++++++++++
 src/tests/run.rs        | 12 ++++++++++++
 2 files changed, 22 insertions(+)
 create mode 100644 doc/config.example.toml

diff --git a/doc/config.example.toml b/doc/config.example.toml
new file mode 100644
index 0000000..a427749
--- /dev/null
+++ b/doc/config.example.toml
@@ -0,0 +1,10 @@
+# This is an example configuration file for nitrocli. To use it, place it at
+# ${XDG_CONFIG_HOME}/nitrocli/config.toml, where XDG_CONFIG_HOME defaults to
+# ${HOME}.
+
+# The model to connect to (string, "pro" or "storage", default: not set).
+model = "pro"
+# Do not cache secrets (boolean, default: false).
+no_cache = true
+# The log level (integer, default: 0).
+verbosity = 2
diff --git a/src/tests/run.rs b/src/tests/run.rs
index 22e7004..597e400 100644
--- a/src/tests/run.rs
+++ b/src/tests/run.rs
@@ -17,6 +17,8 @@
 // * along with this program.  If not, see <http://www.gnu.org/licenses/>. *
 // *************************************************************************
 
+use std::path;
+
 use super::*;
 
 #[test]
@@ -108,3 +110,13 @@ fn version_option() {
   test(&re, "--version");
   test(&re, "-V");
 }
+
+#[test]
+fn config_file() {
+  let config =
+    crate::config::read_config_file(&path::Path::new("doc/config.example.toml")).unwrap();
+
+  assert_eq!(Some(crate::args::DeviceModel::Pro), config.model);
+  assert_eq!(true, config.no_cache);
+  assert_eq!(2, config.verbosity);
+}
-- 
cgit v1.2.3