81 lines
2.4 KiB
Rust
81 lines
2.4 KiB
Rust
//
|
|
// imag - the personal information management suite for the commandline
|
|
// Copyright (C) 2015-2019 Matthias Beyer <mail@beyermatthias.de> and contributors
|
|
//
|
|
// This library is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
// License as published by the Free Software Foundation; version
|
|
// 2.1 of the License.
|
|
//
|
|
// This library is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
// Lesser General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
// License along with this library; if not, write to the Free Software
|
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
//
|
|
|
|
use std::process::Command;
|
|
|
|
use assert_cmd::prelude::*;
|
|
use assert_fs::fixture::TempDir;
|
|
|
|
/// Helper to call imag-init
|
|
pub fn call(tempdir: &TempDir) {
|
|
binary(tempdir).assert().success();
|
|
}
|
|
|
|
pub fn binary(tempdir: &TempDir) -> Command {
|
|
let path = tempdir.path()
|
|
.to_str()
|
|
.map(String::from)
|
|
.unwrap_or_else(|| panic!("Cannot create imag home path string"));
|
|
|
|
let mut cmd = Command::cargo_bin("imag-init").unwrap();
|
|
cmd.arg("--path");
|
|
cmd.arg(path);
|
|
cmd
|
|
}
|
|
|
|
|
|
#[test]
|
|
fn test_init_makes_imag_dir() {
|
|
crate::setup_logging();
|
|
let imag_home = crate::imag::make_temphome();
|
|
call(&imag_home);
|
|
assert!(imag_home.path().exists(), "imag dir does not exist");
|
|
}
|
|
|
|
#[test]
|
|
fn test_init_creates_default_config() {
|
|
use pretty_assertions::assert_eq;
|
|
|
|
crate::setup_logging();
|
|
let imag_home = crate::imag::make_temphome();
|
|
call(&imag_home);
|
|
|
|
const CONFIGURATION_STR : &str = include_str!("../../../imagrc.toml");
|
|
let config = std::fs::read_to_string({
|
|
let mut path = imag_home.path().to_path_buf();
|
|
path.push("imagrc.toml");
|
|
path
|
|
})
|
|
.unwrap();
|
|
|
|
// the imagrc is based on the example imagrc from this repository, but the one
|
|
// thing that differs is that the default level for logging output is "info" rather than
|
|
// "default"
|
|
CONFIGURATION_STR
|
|
.to_string()
|
|
.replace(
|
|
r#"level = "debug""#,
|
|
r#"level = "info""#
|
|
)
|
|
.lines()
|
|
.zip(config.lines())
|
|
.for_each(|(orig, created)| {
|
|
assert_eq!(orig, created);
|
|
});
|
|
}
|