mirror of
https://github.com/qwjyh/xdbm
synced 2025-04-21 04:05:49 +09:00
Compare commits
2 commits
3b7e2387bd
...
6e1619aa18
Author | SHA1 | Date | |
---|---|---|---|
6e1619aa18 | |||
b9bb207f35 |
5 changed files with 53 additions and 13 deletions
|
@ -57,9 +57,7 @@ pub(crate) enum Commands {
|
||||||
Check {},
|
Check {},
|
||||||
|
|
||||||
/// Generate completion script.
|
/// Generate completion script.
|
||||||
Completion {
|
Completion { shell: clap_complete::Shell },
|
||||||
shell: clap_complete::Shell,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Args, Debug)]
|
#[derive(Args, Debug)]
|
||||||
|
|
|
@ -216,7 +216,7 @@ fn write_backups_list(
|
||||||
None => {
|
None => {
|
||||||
let style = Style::new().red();
|
let style = Style::new().red();
|
||||||
(style.apply_to("---".to_string()), style)
|
(style.apply_to("---".to_string()), style)
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
if !longprint {
|
if !longprint {
|
||||||
writeln!(
|
writeln!(
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
//! Manipulates storages.
|
//! Manipulates storages.
|
||||||
|
|
||||||
use console::{style, Style, StyledObject};
|
|
||||||
use crate::devices;
|
use crate::devices;
|
||||||
use crate::storages::{
|
use crate::storages::{
|
||||||
directory::Directory, online_storage::OnlineStorage,
|
directory::Directory, online_storage::OnlineStorage,
|
||||||
|
@ -8,6 +7,7 @@ use crate::storages::{
|
||||||
};
|
};
|
||||||
use anyhow::{anyhow, Context, Result};
|
use anyhow::{anyhow, Context, Result};
|
||||||
use clap::ValueEnum;
|
use clap::ValueEnum;
|
||||||
|
use console::{style, Style, StyledObject};
|
||||||
use core::panic;
|
use core::panic;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::{collections::BTreeMap, fmt, fs, io, path};
|
use std::{collections::BTreeMap, fmt, fs, io, path};
|
||||||
|
|
|
@ -180,9 +180,7 @@ mod test {
|
||||||
local_infos,
|
local_infos,
|
||||||
);
|
);
|
||||||
let mut storages = Storages::new();
|
let mut storages = Storages::new();
|
||||||
storages
|
storages.add(storages::Storage::Physical(physical)).unwrap();
|
||||||
.add(storages::Storage::Physical(physical))
|
|
||||||
.unwrap();
|
|
||||||
storages.add(Storage::SubDirectory(directory)).unwrap();
|
storages.add(Storage::SubDirectory(directory)).unwrap();
|
||||||
// assert_eq!(directory.name(), "test_name");
|
// assert_eq!(directory.name(), "test_name");
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|
54
tests/cli.rs
54
tests/cli.rs
|
@ -5,11 +5,11 @@ mod integrated_test {
|
||||||
};
|
};
|
||||||
|
|
||||||
use anyhow::{Context, Ok, Result};
|
use anyhow::{Context, Ok, Result};
|
||||||
use assert_cmd::{assert::OutputAssertExt, Command};
|
use assert_cmd::{assert::OutputAssertExt, cargo::CommandCargoExt, Command};
|
||||||
use dirs::home_dir;
|
use dirs::home_dir;
|
||||||
use git2::Repository;
|
use git2::Repository;
|
||||||
use log::trace;
|
use log::trace;
|
||||||
use predicates::prelude::predicate;
|
use predicates::{boolean::PredicateBooleanExt, prelude::predicate};
|
||||||
|
|
||||||
/// Setup global gitconfig if it doesn't exist.
|
/// Setup global gitconfig if it doesn't exist.
|
||||||
///
|
///
|
||||||
|
@ -157,7 +157,14 @@ mod integrated_test {
|
||||||
// set up upstream branch
|
// set up upstream branch
|
||||||
let (mut repo_1_branch, _branch_type) = repo_1.branches(None)?.next().unwrap()?;
|
let (mut repo_1_branch, _branch_type) = repo_1.branches(None)?.next().unwrap()?;
|
||||||
println!("head {}", repo_1.head().unwrap().name().unwrap());
|
println!("head {}", repo_1.head().unwrap().name().unwrap());
|
||||||
repo_1_branch.set_upstream(Some(format!("{}/{}", upstream_name, repo_1_branch.name().unwrap().unwrap()).as_str()))?;
|
repo_1_branch.set_upstream(Some(
|
||||||
|
format!(
|
||||||
|
"{}/{}",
|
||||||
|
upstream_name,
|
||||||
|
repo_1_branch.name().unwrap().unwrap()
|
||||||
|
)
|
||||||
|
.as_str(),
|
||||||
|
))?;
|
||||||
|
|
||||||
// 2nd device
|
// 2nd device
|
||||||
let config_dir_2 = assert_fs::TempDir::new()?;
|
let config_dir_2 = assert_fs::TempDir::new()?;
|
||||||
|
@ -231,7 +238,14 @@ mod integrated_test {
|
||||||
println!("{:?}", bare_repo_dir.read_dir()?);
|
println!("{:?}", bare_repo_dir.read_dir()?);
|
||||||
// set up upstream branch
|
// set up upstream branch
|
||||||
let (mut repo_1_branch, _branch_type) = repo_1.branches(None)?.next().unwrap()?;
|
let (mut repo_1_branch, _branch_type) = repo_1.branches(None)?.next().unwrap()?;
|
||||||
repo_1_branch.set_upstream(Some(format!("{}/{}", upstream_name, repo_1_branch.name().unwrap().unwrap()).as_str()))?;
|
repo_1_branch.set_upstream(Some(
|
||||||
|
format!(
|
||||||
|
"{}/{}",
|
||||||
|
upstream_name,
|
||||||
|
repo_1_branch.name().unwrap().unwrap()
|
||||||
|
)
|
||||||
|
.as_str(),
|
||||||
|
))?;
|
||||||
|
|
||||||
// 2nd device
|
// 2nd device
|
||||||
let config_dir_2 = assert_fs::TempDir::new()?;
|
let config_dir_2 = assert_fs::TempDir::new()?;
|
||||||
|
@ -358,6 +372,7 @@ mod integrated_test {
|
||||||
.assert()
|
.assert()
|
||||||
.success();
|
.success();
|
||||||
|
|
||||||
|
// storage list
|
||||||
Command::cargo_bin("xdbm")?
|
Command::cargo_bin("xdbm")?
|
||||||
.arg("-c")
|
.arg("-c")
|
||||||
.arg(config_dir_2.path())
|
.arg(config_dir_2.path())
|
||||||
|
@ -365,7 +380,9 @@ mod integrated_test {
|
||||||
.arg("list")
|
.arg("list")
|
||||||
.arg("-l")
|
.arg("-l")
|
||||||
.assert()
|
.assert()
|
||||||
.success();
|
.success()
|
||||||
|
.stdout(predicate::str::contains("gdrive_docs").and(predicate::str::contains("nas")));
|
||||||
|
|
||||||
// backup add
|
// backup add
|
||||||
let backup_src = &sample_storage_2.join("foo").join("bar");
|
let backup_src = &sample_storage_2.join("foo").join("bar");
|
||||||
DirBuilder::new().recursive(true).create(backup_src)?;
|
DirBuilder::new().recursive(true).create(backup_src)?;
|
||||||
|
@ -387,6 +404,7 @@ mod integrated_test {
|
||||||
.assert()
|
.assert()
|
||||||
.success();
|
.success();
|
||||||
|
|
||||||
|
// backup add but with existing name
|
||||||
Command::cargo_bin("xdbm")?
|
Command::cargo_bin("xdbm")?
|
||||||
.arg("-c")
|
.arg("-c")
|
||||||
.arg(config_dir_2.path())
|
.arg(config_dir_2.path())
|
||||||
|
@ -404,6 +422,32 @@ mod integrated_test {
|
||||||
.failure()
|
.failure()
|
||||||
.stderr(predicate::str::contains("already"));
|
.stderr(predicate::str::contains("already"));
|
||||||
|
|
||||||
|
// backup list
|
||||||
|
Command::cargo_bin("xdbm")?
|
||||||
|
.arg("-c")
|
||||||
|
.arg(config_dir_2.path())
|
||||||
|
.arg("backup")
|
||||||
|
.arg("list")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(
|
||||||
|
predicate::str::contains("foodoc")
|
||||||
|
.and(predicate::str::contains("nas"))
|
||||||
|
.and(predicate::str::contains("gdrive_docs"))
|
||||||
|
.and(predicate::str::contains("---")),
|
||||||
|
);
|
||||||
|
|
||||||
|
// backup done
|
||||||
|
Command::cargo_bin("xdbm")?
|
||||||
|
.arg("-c")
|
||||||
|
.arg(config_dir_2.path())
|
||||||
|
.arg("backup")
|
||||||
|
.arg("done")
|
||||||
|
.arg("foodoc")
|
||||||
|
.arg("0")
|
||||||
|
.assert()
|
||||||
|
.success();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue