mirror of
https://github.com/qwjyh/xdbm
synced 2024-11-24 07:31:05 +09:00
add test for storage add
- failure due to name duplication - success with online & subdirectory with two devices - used local git to write test (TODO?: use only git2)
This commit is contained in:
parent
d9812bf006
commit
41b2924ad7
2 changed files with 107 additions and 3 deletions
|
@ -7,14 +7,20 @@
|
|||
- [x] specify key
|
||||
- [ ] write test for storage subcommand
|
||||
- [x] storage add online
|
||||
- [ ] storage add directory
|
||||
- [x] storage add directory
|
||||
- [ ] storage list
|
||||
- [x] update storage bind command
|
||||
- [ ] add storage remove command
|
||||
- [ ] add sync subcommand
|
||||
- [ ] add check subcommand
|
||||
- [ ] check that all parents exist
|
||||
- [x] reorganize cmd option for storage
|
||||
- [x] use subcommand
|
||||
- [ ] backup subcommands
|
||||
- [ ] backup add
|
||||
- [ ] test for backup add
|
||||
- [ ] backup list
|
||||
- [ ] backup done
|
||||
- [ ] no commit option
|
||||
|
||||
<!-- vim: set sw=2 ts=2: -->
|
||||
|
|
102
tests/cli.rs
102
tests/cli.rs
|
@ -1,6 +1,8 @@
|
|||
mod cmd_init {
|
||||
use anyhow::{Ok, Result};
|
||||
use assert_cmd::Command;
|
||||
use std::fs::DirBuilder;
|
||||
|
||||
use anyhow::{anyhow, Ok, Result};
|
||||
use assert_cmd::{assert::OutputAssertExt, cargo::CommandCargoExt, Command};
|
||||
use git2::Repository;
|
||||
use log::trace;
|
||||
use predicates::prelude::predicate;
|
||||
|
@ -60,6 +62,38 @@ mod cmd_init {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn directory_without_parent() -> Result<()> {
|
||||
// 1st device
|
||||
let config_dir_1 = assert_fs::TempDir::new()?;
|
||||
let mut cmd1 = Command::cargo_bin("xdbm")?;
|
||||
cmd1.arg("-c")
|
||||
.arg(config_dir_1.path())
|
||||
.arg("init")
|
||||
.arg("first");
|
||||
cmd1.assert().success().stdout(predicate::str::contains(""));
|
||||
|
||||
// add storage
|
||||
let sample_storage = assert_fs::TempDir::new()?;
|
||||
let mut cmd_add_storage = Command::cargo_bin("xdbm")?;
|
||||
cmd_add_storage
|
||||
.arg("-c")
|
||||
.arg(config_dir_1.path())
|
||||
.arg("storage")
|
||||
.arg("add")
|
||||
.arg("directory")
|
||||
.arg("--alias")
|
||||
.arg("gdrive")
|
||||
.arg("gdrive")
|
||||
.arg(sample_storage.path());
|
||||
cmd_add_storage
|
||||
.assert()
|
||||
.failure()
|
||||
.stderr(predicate::str::contains("No storages found"));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn two_devices() -> Result<()> {
|
||||
// 1st device
|
||||
|
@ -107,6 +141,23 @@ mod cmd_init {
|
|||
assert!(
|
||||
std::fs::read_to_string(config_dir_2.path().join("devices.yml"))?.contains("second")
|
||||
);
|
||||
assert!(config_dir_2.join("backups").join("first.yml").exists());
|
||||
assert!(config_dir_2.join("backups").join("second.yml").exists());
|
||||
|
||||
std::process::Command::new("git")
|
||||
.arg("push")
|
||||
.current_dir(&config_dir_2)
|
||||
.assert()
|
||||
.success();
|
||||
// let repo_2 = Repository::open(config_dir_2)?;
|
||||
// // return Err(anyhow!("{:?}", repo_2.remotes()?.iter().collect::<Vec<_>>()));
|
||||
// let mut repo_2_remote = repo_2.find_remote(repo_2.remotes()?.get(0).unwrap())?;
|
||||
// repo_2_remote.push(&[] as &[&str], None)?;
|
||||
std::process::Command::new("git")
|
||||
.arg("pull")
|
||||
.current_dir(&config_dir_1)
|
||||
.assert()
|
||||
.success();
|
||||
|
||||
// Add storage
|
||||
let sample_storage = assert_fs::TempDir::new()?;
|
||||
|
@ -129,6 +180,53 @@ mod cmd_init {
|
|||
.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains(""));
|
||||
// Add storage (directory)
|
||||
let sample_directory = sample_storage.join("foo").join("bar");
|
||||
DirBuilder::new()
|
||||
.recursive(true)
|
||||
.create(&sample_directory)?;
|
||||
Command::cargo_bin("xdbm")?
|
||||
.arg("-c")
|
||||
.arg(config_dir_1.path())
|
||||
.arg("storage")
|
||||
.arg("add")
|
||||
.arg("directory")
|
||||
.arg("--alias")
|
||||
.arg("docs")
|
||||
.arg("gdrive_docs")
|
||||
.arg(&sample_directory)
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains(""));
|
||||
assert!(
|
||||
std::fs::read_to_string(config_dir_1.join("storages.yml"))?.contains("parent: gdrive1")
|
||||
);
|
||||
|
||||
std::process::Command::new("git")
|
||||
.arg("push")
|
||||
.current_dir(&config_dir_1)
|
||||
.assert()
|
||||
.success();
|
||||
std::process::Command::new("git")
|
||||
.arg("pull")
|
||||
.current_dir(&config_dir_2)
|
||||
.assert()
|
||||
.success();
|
||||
|
||||
// bind
|
||||
Command::cargo_bin("xdbm")?
|
||||
.arg("-c")
|
||||
.arg(config_dir_2.path())
|
||||
.arg("storage")
|
||||
.arg("bind")
|
||||
.arg("--alias")
|
||||
.arg("gdocs")
|
||||
.arg("--path")
|
||||
.arg(&sample_directory)
|
||||
.arg("gdrive_docs")
|
||||
.assert()
|
||||
.success()
|
||||
.stdout(predicate::str::contains(""));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue