Merge branch 'ui-testing' into master
This commit is contained in:
commit
7b6e5eafba
35 changed files with 1275 additions and 0 deletions
|
@ -61,4 +61,6 @@ members = [
|
||||||
"lib/etc/libimaginteraction",
|
"lib/etc/libimaginteraction",
|
||||||
"lib/etc/libimagtimeui",
|
"lib/etc/libimagtimeui",
|
||||||
"lib/etc/libimagutil",
|
"lib/etc/libimagutil",
|
||||||
|
|
||||||
|
"tests/ui",
|
||||||
]
|
]
|
||||||
|
|
22
tests/ui/Cargo.toml
Normal file
22
tests/ui/Cargo.toml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
[package]
|
||||||
|
name = "tests-ui"
|
||||||
|
version = "0.10.0"
|
||||||
|
authors = ["Matthias Beyer <mail@beyermatthias.de>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# We do not publish this crate because it contains tests which should only be
|
||||||
|
# available during development and CI runs, but there's nothing that a user of
|
||||||
|
# any imag command might need, ever.
|
||||||
|
publish = false
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
assert_cmd = "0.11"
|
||||||
|
assert_fs = "0.11"
|
||||||
|
duct = "0.13"
|
||||||
|
env_logger = "0.7"
|
||||||
|
log = "0.4"
|
||||||
|
predicates = "1"
|
||||||
|
pretty_assertions = "0.6"
|
||||||
|
semver = "0.9"
|
||||||
|
version = "3"
|
||||||
|
|
13
tests/ui/README.md
Normal file
13
tests/ui/README.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# UI testing
|
||||||
|
|
||||||
|
This crate is just a helper crate for CI runs and development. It contains
|
||||||
|
test code which tests the actual imag binaries and their user interfaces and
|
||||||
|
behaviour.
|
||||||
|
|
||||||
|
Tests are automatically done in temporary directories.
|
||||||
|
The test setup removes these testing directories after tests have run.
|
||||||
|
To prevent this, set `IMAG_UI_TEST_PERSIST`.
|
||||||
|
|
||||||
|
Use the normal `RUST_LOG` functionality for logging (or see the documentation
|
||||||
|
for the `env_logger` crate).
|
||||||
|
|
86
tests/ui/src/imag.rs
Normal file
86
tests/ui/src/imag.rs
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
//
|
||||||
|
// 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 std::path::PathBuf;
|
||||||
|
|
||||||
|
use assert_fs::fixture::TempDir;
|
||||||
|
use assert_cmd::prelude::*;
|
||||||
|
use assert_cmd::assert::Assert;
|
||||||
|
|
||||||
|
pub fn make_temphome() -> TempDir {
|
||||||
|
TempDir::new().unwrap().persist_if(std::env::var("IMAG_UI_TEST_PERSIST").is_ok())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn binary(tempdir: &TempDir, binary_name: &str) -> 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(binary_name).unwrap();
|
||||||
|
cmd.arg("--rtp");
|
||||||
|
cmd.arg(path);
|
||||||
|
cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Run the passed command and get the stdout of it.
|
||||||
|
///
|
||||||
|
/// This function does _not_ ensure that stdin is inherited.
|
||||||
|
pub fn stdout_of_command(mut command: Command) -> Vec<String> {
|
||||||
|
let assert = command.assert();
|
||||||
|
let lines = String::from_utf8(assert.get_output().stdout.clone())
|
||||||
|
.unwrap()
|
||||||
|
.lines()
|
||||||
|
.map(String::from)
|
||||||
|
.collect();
|
||||||
|
assert.success();
|
||||||
|
lines
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Run the passed command and get the stderr of it.
|
||||||
|
///
|
||||||
|
/// This function does _not_ ensure that stdin is inherited.
|
||||||
|
pub fn stderr_of_command(command: &mut Command) -> (Assert, Vec<String>) {
|
||||||
|
let assert = command.assert();
|
||||||
|
let lines = String::from_utf8(assert.get_output().stderr.clone())
|
||||||
|
.unwrap()
|
||||||
|
.lines()
|
||||||
|
.map(String::from)
|
||||||
|
.collect();
|
||||||
|
(assert, lines)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Create a PathBuf for a file in a TempDir
|
||||||
|
pub fn file_path(tempdir: &TempDir, path_elements: &[&str]) -> PathBuf {
|
||||||
|
create_path_for(tempdir.path().to_path_buf(), path_elements)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn store_path(tempdir: &TempDir, path_elements: &[&str]) -> PathBuf {
|
||||||
|
let mut path = tempdir.path().to_path_buf();
|
||||||
|
path.push("store");
|
||||||
|
create_path_for(path, path_elements)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_path_for(mut path: PathBuf, path_elements: &[&str]) -> PathBuf {
|
||||||
|
path_elements.iter().for_each(|el| path.push(el));
|
||||||
|
debug!("Calculated path = {:?}", path);
|
||||||
|
path
|
||||||
|
}
|
||||||
|
|
19
tests/ui/src/imag_annotate.rs
Normal file
19
tests/ui/src/imag_annotate.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_bookmark.rs
Normal file
19
tests/ui/src/imag_bookmark.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_calendar.rs
Normal file
19
tests/ui/src/imag_calendar.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
70
tests/ui/src/imag_category.rs
Normal file
70
tests/ui/src/imag_category.rs
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
//
|
||||||
|
// 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_fs::fixture::TempDir;
|
||||||
|
|
||||||
|
pub fn binary(tempdir: &TempDir) -> Command {
|
||||||
|
crate::imag::binary(tempdir, "imag-category")
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn call(tmpdir: &TempDir, args: &[&str]) -> Vec<String> {
|
||||||
|
let mut binary = binary(tmpdir);
|
||||||
|
binary.stdin(std::process::Stdio::inherit());
|
||||||
|
binary.arg("--ignore-ids");
|
||||||
|
binary.args(args);
|
||||||
|
debug!("Command = {:?}", binary);
|
||||||
|
crate::imag::stdout_of_command(binary)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_new_entry_has_no_category() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
|
||||||
|
let (assert, stderr_output) = {
|
||||||
|
let mut binary = binary(&imag_home);
|
||||||
|
binary.stdin(std::process::Stdio::inherit());
|
||||||
|
binary.args(&["--ignore-ids", "get", "test"]);
|
||||||
|
crate::imag::stderr_of_command(&mut binary)
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.failure();
|
||||||
|
assert!(stderr_output.iter().any(|substr| substr.contains("Category name missing")));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_after_setting_a_new_category_there_is_a_category() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
|
||||||
|
let _ = call(&imag_home, &["create-category", "cat"]);
|
||||||
|
let _ = call(&imag_home, &["set", "cat", "test"]);
|
||||||
|
let output = call(&imag_home, &["get", "test"]);
|
||||||
|
debug!("output = {:?}", output);
|
||||||
|
assert!(!output.is_empty());
|
||||||
|
assert_eq!(output.len(), 1);
|
||||||
|
assert_eq!(output[0], "cat");
|
||||||
|
}
|
||||||
|
|
19
tests/ui/src/imag_contact.rs
Normal file
19
tests/ui/src/imag_contact.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
76
tests/ui/src/imag_create.rs
Normal file
76
tests/ui/src/imag_create.rs
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
//
|
||||||
|
// 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-create
|
||||||
|
pub fn call(tempdir: &TempDir, targets: &[&str]) {
|
||||||
|
let mut bin = binary(tempdir);
|
||||||
|
|
||||||
|
// ensure that stdin is not used by the child process
|
||||||
|
bin.stdin(std::process::Stdio::inherit());
|
||||||
|
|
||||||
|
for target in targets.iter() {
|
||||||
|
bin.arg(target);
|
||||||
|
}
|
||||||
|
debug!("Command = {:?}", bin);
|
||||||
|
|
||||||
|
bin.assert().success();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn binary(tempdir: &TempDir) -> Command {
|
||||||
|
crate::imag::binary(tempdir, "imag-create")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_creating_works() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
|
||||||
|
call(&imag_home, &["test"]);
|
||||||
|
|
||||||
|
let entry_path = crate::imag::store_path(&imag_home, &["test"]);
|
||||||
|
|
||||||
|
assert!(entry_path.exists(), "Entry was not created: {:?}", entry_path);
|
||||||
|
assert!(entry_path.is_file() , "Entry is not a file: {:?}", entry_path);
|
||||||
|
|
||||||
|
let contents = std::fs::read_to_string(entry_path).unwrap();
|
||||||
|
let mut lines = contents.lines();
|
||||||
|
|
||||||
|
assert_eq!(lines.next(), Some("---"));
|
||||||
|
assert_eq!(lines.next(), Some("[imag]"));
|
||||||
|
{
|
||||||
|
let version_line = lines.next().unwrap();
|
||||||
|
assert!(version_line.starts_with("version = '"));
|
||||||
|
assert!(version_line.ends_with("'"));
|
||||||
|
let version = version_line.replace("version = '", "").replace("'", "");
|
||||||
|
let semver = semver::Version::parse(&version);
|
||||||
|
assert!(semver.is_ok());
|
||||||
|
assert!(!semver.unwrap().is_prerelease()); // we only want full versions in the header
|
||||||
|
|
||||||
|
}
|
||||||
|
assert_eq!(lines.next(), Some("---"));
|
||||||
|
assert_eq!(lines.next(), None);
|
||||||
|
}
|
||||||
|
|
19
tests/ui/src/imag_diagnostics.rs
Normal file
19
tests/ui/src/imag_diagnostics.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_diary.rs
Normal file
19
tests/ui/src/imag_diary.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_edit.rs
Normal file
19
tests/ui/src/imag_edit.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_git.rs
Normal file
19
tests/ui/src/imag_git.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_gps.rs
Normal file
19
tests/ui/src/imag_gps.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
119
tests/ui/src/imag_grep.rs
Normal file
119
tests/ui/src/imag_grep.rs
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
//
|
||||||
|
// 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 std::io::Write;
|
||||||
|
|
||||||
|
use assert_fs::fixture::TempDir;
|
||||||
|
|
||||||
|
pub fn call(tempdir: &TempDir, pattern: &str) -> Vec<String> {
|
||||||
|
let mut binary = binary(tempdir);
|
||||||
|
binary.arg("--ignore-ids");
|
||||||
|
binary.arg(pattern);
|
||||||
|
|
||||||
|
// ensure that stdin is not used by the child process
|
||||||
|
binary.stdin(std::process::Stdio::inherit());
|
||||||
|
crate::imag::stdout_of_command(binary)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn binary(tempdir: &TempDir) -> Command {
|
||||||
|
crate::imag::binary(tempdir, "imag-grep")
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_grepping_in_empty_store() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
|
||||||
|
let output = call(&imag_home, "something");
|
||||||
|
assert_eq!(output[0], "Processed 0 files, 0 matches, 0 nonmatches");
|
||||||
|
assert_eq!(output.len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_grepping_nonempty_store() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["something"]);
|
||||||
|
|
||||||
|
let output = call(&imag_home, "something");
|
||||||
|
assert_eq!(output[0], "Processed 1 files, 0 matches, 1 nonmatches");
|
||||||
|
assert_eq!(output.len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_grepping_not_available_string() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
|
||||||
|
let filename = &["something"];
|
||||||
|
crate::imag_create::call(&imag_home, filename);
|
||||||
|
let filepath = crate::imag::store_path(&imag_home, filename);
|
||||||
|
|
||||||
|
{
|
||||||
|
debug!("Appending to file = {}", filepath.display());
|
||||||
|
let mut file = ::std::fs::OpenOptions::new()
|
||||||
|
.append(true)
|
||||||
|
.create(false)
|
||||||
|
.open(&filepath)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let _ = writeln!(file, "unavailable").unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
let output = call(&imag_home, "something");
|
||||||
|
assert_eq!(output[0], "Processed 1 files, 0 matches, 1 nonmatches");
|
||||||
|
assert_eq!(output.len(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_grepping_available_string() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
|
||||||
|
let filename = &["something"];
|
||||||
|
crate::imag_create::call(&imag_home, filename);
|
||||||
|
let filepath = crate::imag::store_path(&imag_home, filename);
|
||||||
|
|
||||||
|
let filetext = "some text is here";
|
||||||
|
{
|
||||||
|
debug!("Appending to file = {}", filepath.display());
|
||||||
|
let mut file = ::std::fs::OpenOptions::new()
|
||||||
|
.append(true)
|
||||||
|
.create(false)
|
||||||
|
.open(&filepath)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let _ = writeln!(file, "{}", filetext).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
let output = call(&imag_home, filetext);
|
||||||
|
debug!("output = {:?}", output);
|
||||||
|
assert!(!output.is_empty());
|
||||||
|
assert_eq!(output[0], format!("{}:", filename[0]));
|
||||||
|
assert_eq!(output[1], format!(" '{}'", filetext));
|
||||||
|
assert_eq!(output[2], "");
|
||||||
|
assert_eq!(output[3], "Processed 1 files, 1 matches, 0 nonmatches");
|
||||||
|
assert_eq!(output.len(), 4);
|
||||||
|
}
|
||||||
|
|
19
tests/ui/src/imag_habit.rs
Normal file
19
tests/ui/src/imag_habit.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
76
tests/ui/src/imag_header.rs
Normal file
76
tests/ui/src/imag_header.rs
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
//
|
||||||
|
// 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 std::str::FromStr;
|
||||||
|
|
||||||
|
use assert_cmd::prelude::*;
|
||||||
|
use assert_fs::fixture::TempDir;
|
||||||
|
|
||||||
|
pub fn binary(tempdir: &TempDir) -> Command {
|
||||||
|
crate::imag::binary(tempdir, "imag-header")
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn call(tmpdir: &TempDir, args: &[&str]) -> Vec<String> {
|
||||||
|
let mut binary = binary(tmpdir);
|
||||||
|
binary.stdin(std::process::Stdio::inherit());
|
||||||
|
binary.args(args);
|
||||||
|
debug!("Command = {:?}", binary);
|
||||||
|
crate::imag::stdout_of_command(binary)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_no_header_besides_version_after_creation() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
|
||||||
|
let mut bin = binary(&imag_home);
|
||||||
|
bin.arg("test");
|
||||||
|
bin.arg("string");
|
||||||
|
bin.arg("imag.version");
|
||||||
|
bin.assert().success();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_imag_version_as_semver_string() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
|
||||||
|
let output = call(&imag_home, &["--ignore-ids", "test", "read", "imag.version"]);
|
||||||
|
let version = version::version!();
|
||||||
|
debug!("output = {:?}", output);
|
||||||
|
assert_eq!(output.len(), 1);
|
||||||
|
assert_eq!(output[0], version);
|
||||||
|
|
||||||
|
let version = semver::Version::from_str(&version).unwrap();
|
||||||
|
let parsed = semver::Version::from_str(&output[0]);
|
||||||
|
|
||||||
|
assert!(parsed.is_ok());
|
||||||
|
let parsed = parsed.unwrap();
|
||||||
|
|
||||||
|
assert_eq!(parsed.major, version.major);
|
||||||
|
assert_eq!(parsed.minor, version.minor);
|
||||||
|
assert_eq!(parsed.patch, version.patch);
|
||||||
|
assert_eq!(parsed.pre, version.pre);
|
||||||
|
}
|
||||||
|
|
19
tests/ui/src/imag_id_in_collection.rs
Normal file
19
tests/ui/src/imag_id_in_collection.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
62
tests/ui/src/imag_ids.rs
Normal file
62
tests/ui/src/imag_ids.rs
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
//
|
||||||
|
// 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;
|
||||||
|
use predicates::prelude::*;
|
||||||
|
|
||||||
|
/// Helper to call imag-init
|
||||||
|
pub fn call(tempdir: &TempDir) -> Vec<String> {
|
||||||
|
let mut binary = binary(tempdir);
|
||||||
|
|
||||||
|
// ensure that stdin is not used by the child process
|
||||||
|
binary.stdin(std::process::Stdio::inherit());
|
||||||
|
crate::imag::stdout_of_command(binary)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn binary(tempdir: &TempDir) -> Command {
|
||||||
|
crate::imag::binary(tempdir, "imag-ids")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_no_ids_after_init() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
|
||||||
|
binary(&imag_home)
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(predicate::eq(b"" as &[u8]));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_one_id_after_creating_one_entry() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
let ids = call(&imag_home);
|
||||||
|
|
||||||
|
assert_eq!(ids.len(), 1);
|
||||||
|
assert_eq!(ids[0], "test");
|
||||||
|
}
|
110
tests/ui/src/imag_init.rs
Normal file
110
tests/ui/src/imag_init.rs
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
//
|
||||||
|
// 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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_init_creates_store_directory() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
call(&imag_home);
|
||||||
|
let store_path = {
|
||||||
|
let mut path = imag_home.path().to_path_buf();
|
||||||
|
path.push("store");
|
||||||
|
path
|
||||||
|
};
|
||||||
|
|
||||||
|
assert!(store_path.exists(), "imag store path does not exist");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_init_creates_empty_store_directory() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
call(&imag_home);
|
||||||
|
let store_path = {
|
||||||
|
let mut path = imag_home.path().to_path_buf();
|
||||||
|
path.push("store");
|
||||||
|
path
|
||||||
|
};
|
||||||
|
|
||||||
|
assert_eq!(0, std::fs::read_dir(store_path).unwrap().count(), "imag store directory is not empty after creation");
|
||||||
|
}
|
||||||
|
|
19
tests/ui/src/imag_link.rs
Normal file
19
tests/ui/src/imag_link.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_log.rs
Normal file
19
tests/ui/src/imag_log.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_mail.rs
Normal file
19
tests/ui/src/imag_mail.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_markdown.rs
Normal file
19
tests/ui/src/imag_markdown.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
60
tests/ui/src/imag_mv.rs
Normal file
60
tests/ui/src/imag_mv.rs
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
//
|
||||||
|
// 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_fs::fixture::TempDir;
|
||||||
|
use assert_cmd::prelude::*;
|
||||||
|
|
||||||
|
|
||||||
|
pub fn binary(tempdir: &TempDir) -> Command {
|
||||||
|
crate::imag::binary(tempdir, "imag-mv")
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn call(tmpdir: &TempDir, src: &str, dst: &str) {
|
||||||
|
let mut binary = binary(tmpdir);
|
||||||
|
binary.stdin(std::process::Stdio::inherit());
|
||||||
|
binary.arg("--ignore-ids");
|
||||||
|
binary.arg(src);
|
||||||
|
binary.arg(dst);
|
||||||
|
|
||||||
|
debug!("Command = {:?}", binary);
|
||||||
|
|
||||||
|
binary.assert().success();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_after_moving_entry_is_moved() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
|
||||||
|
call(&imag_home, "test", "moved");
|
||||||
|
{
|
||||||
|
let entry_path = crate::imag::store_path(&imag_home, &["moved"]);
|
||||||
|
assert!(entry_path.exists(), "Entry was not created: {:?}", entry_path);
|
||||||
|
assert!(entry_path.is_file() , "Entry is not a file: {:?}", entry_path);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
let entry_path = crate::imag::store_path(&imag_home, &["test"]);
|
||||||
|
assert!(!entry_path.exists(), "Entry still exists: {:?}", entry_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
19
tests/ui/src/imag_notes.rs
Normal file
19
tests/ui/src/imag_notes.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_ref.rs
Normal file
19
tests/ui/src/imag_ref.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_store.rs
Normal file
19
tests/ui/src/imag_store.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
96
tests/ui/src/imag_tag.rs
Normal file
96
tests/ui/src/imag_tag.rs
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
//
|
||||||
|
// 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_fs::fixture::TempDir;
|
||||||
|
|
||||||
|
pub fn binary(tempdir: &TempDir) -> Command {
|
||||||
|
crate::imag::binary(tempdir, "imag-tag")
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn call(tmpdir: &TempDir, args: &[&str]) -> Vec<String> {
|
||||||
|
let mut binary = binary(tmpdir);
|
||||||
|
binary.stdin(std::process::Stdio::inherit());
|
||||||
|
binary.arg("--ignore-ids");
|
||||||
|
binary.args(args);
|
||||||
|
debug!("Command = {:?}", binary);
|
||||||
|
crate::imag::stdout_of_command(binary)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_new_entry_has_no_tags() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
|
||||||
|
let output = call(&imag_home, &["test", "list", "--linewise"]);
|
||||||
|
debug!("output = {:?}", output);
|
||||||
|
assert!(output.is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_after_adding_tag_there_is_tag() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
let _ = call(&imag_home, &["test", "add", "tag"]);
|
||||||
|
|
||||||
|
let output = call(&imag_home, &["test", "list", "--linewise"]);
|
||||||
|
debug!("output = {:?}", output);
|
||||||
|
|
||||||
|
assert!(!output.is_empty());
|
||||||
|
assert_eq!(output.len(), 1);
|
||||||
|
assert_eq!(output[0], "tag");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_after_adding_and_removing_there_is_no_tag() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
let _ = call(&imag_home, &["test", "add", "tag"]);
|
||||||
|
let _ = call(&imag_home, &["test", "remove", "tag"]);
|
||||||
|
|
||||||
|
let output = call(&imag_home, &["test", "list", "--linewise"]);
|
||||||
|
debug!("output = {:?}", output);
|
||||||
|
|
||||||
|
assert!(output.is_empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_adding_twice_does_not_add_twice() {
|
||||||
|
crate::setup_logging();
|
||||||
|
let imag_home = crate::imag::make_temphome();
|
||||||
|
crate::imag_init::call(&imag_home);
|
||||||
|
crate::imag_create::call(&imag_home, &["test"]);
|
||||||
|
let _ = call(&imag_home, &["test", "add", "tag"]);
|
||||||
|
let _ = call(&imag_home, &["test", "add", "tag"]);
|
||||||
|
|
||||||
|
let output = call(&imag_home, &["test", "list", "--linewise"]);
|
||||||
|
debug!("output = {:?}", output);
|
||||||
|
|
||||||
|
assert!(!output.is_empty());
|
||||||
|
assert_eq!(output.len(), 1);
|
||||||
|
assert_eq!(output[0], "tag");
|
||||||
|
}
|
||||||
|
|
19
tests/ui/src/imag_timetrack.rs
Normal file
19
tests/ui/src/imag_timetrack.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_todo.rs
Normal file
19
tests/ui/src/imag_todo.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_view.rs
Normal file
19
tests/ui/src/imag_view.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
19
tests/ui/src/imag_wiki.rs
Normal file
19
tests/ui/src/imag_wiki.rs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
65
tests/ui/src/lib.rs
Normal file
65
tests/ui/src/lib.rs
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
//
|
||||||
|
// imag - the personal information management suite for the commandline
|
||||||
|
// Copyright (C) 2015-2019 the imag 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
|
||||||
|
//
|
||||||
|
|
||||||
|
extern crate assert_cmd;
|
||||||
|
extern crate assert_fs;
|
||||||
|
extern crate env_logger;
|
||||||
|
extern crate predicates;
|
||||||
|
extern crate semver;
|
||||||
|
#[macro_use] extern crate log;
|
||||||
|
#[macro_use] extern crate pretty_assertions;
|
||||||
|
|
||||||
|
#[cfg(test)] mod imag;
|
||||||
|
#[cfg(test)] mod imag_annotate;
|
||||||
|
#[cfg(test)] mod imag_category;
|
||||||
|
#[cfg(test)] mod imag_create;
|
||||||
|
#[cfg(test)] mod imag_diagnostics;
|
||||||
|
#[cfg(test)] mod imag_edit;
|
||||||
|
#[cfg(test)] mod imag_git;
|
||||||
|
#[cfg(test)] mod imag_gps;
|
||||||
|
#[cfg(test)] mod imag_grep;
|
||||||
|
#[cfg(test)] mod imag_header;
|
||||||
|
#[cfg(test)] mod imag_id_in_collection;
|
||||||
|
#[cfg(test)] mod imag_ids;
|
||||||
|
#[cfg(test)] mod imag_init;
|
||||||
|
#[cfg(test)] mod imag_link;
|
||||||
|
#[cfg(test)] mod imag_markdown;
|
||||||
|
#[cfg(test)] mod imag_mv;
|
||||||
|
#[cfg(test)] mod imag_ref;
|
||||||
|
#[cfg(test)] mod imag_store;
|
||||||
|
#[cfg(test)] mod imag_tag;
|
||||||
|
#[cfg(test)] mod imag_view;
|
||||||
|
#[cfg(test)] mod imag_bookmark;
|
||||||
|
#[cfg(test)] mod imag_calendar;
|
||||||
|
#[cfg(test)] mod imag_contact;
|
||||||
|
#[cfg(test)] mod imag_diary;
|
||||||
|
#[cfg(test)] mod imag_habit;
|
||||||
|
#[cfg(test)] mod imag_log;
|
||||||
|
#[cfg(test)] mod imag_mail;
|
||||||
|
#[cfg(test)] mod imag_notes;
|
||||||
|
#[cfg(test)] mod imag_timetrack;
|
||||||
|
#[cfg(test)] mod imag_todo;
|
||||||
|
#[cfg(test)] mod imag_wiki;
|
||||||
|
|
||||||
|
static LOG_SYNC: std::sync::Once = std::sync::Once::new();
|
||||||
|
|
||||||
|
pub fn setup_logging() {
|
||||||
|
LOG_SYNC.call_once(|| { let _ = env_logger::try_init(); });
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue