test(add): implicit dir
This commit is contained in:
parent
34dee1ceb6
commit
fa65b6b071
57
tests/add.rs
57
tests/add.rs
@ -3,17 +3,18 @@ use std::str;
|
|||||||
mod utils;
|
mod utils;
|
||||||
use utils::{utils::*, client::ClientTest};
|
use utils::{utils::*, client::ClientTest};
|
||||||
|
|
||||||
fn line_should_contains(line: &str, str: &str) {
|
fn line_should_contains(lines: &Vec<String>, nb: usize, str: &str) {
|
||||||
|
|
||||||
if line.find(str).is_none()
|
if lines[nb].find(str).is_none()
|
||||||
{
|
{
|
||||||
eprintln!("'{}' not found in '{}'", str, line);
|
eprintln!("'{}' not found in '{}'", str, lines[nb]);
|
||||||
|
dbg!(lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert!(line.find(str).is_some());
|
assert!(lines[nb].find(str).is_some());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lines_should_not_contains(lines: Vec<&str>, str: &str) {
|
fn lines_should_not_contains(lines: Vec<String>, str: &str) {
|
||||||
|
|
||||||
for line in lines {
|
for line in lines {
|
||||||
if line.find("Changes not staged for push").is_some() {
|
if line.find("Changes not staged for push").is_some() {
|
||||||
@ -28,6 +29,16 @@ fn lines_should_not_contains(lines: Vec<&str>, str: &str) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn collect_status_lines(client: &mut ClientTest) -> Vec<String> {
|
||||||
|
let out = client.run_cmd("status");
|
||||||
|
|
||||||
|
str::from_utf8(&out.stdout)
|
||||||
|
.unwrap()
|
||||||
|
.split("\n")
|
||||||
|
.map(|s| s.to_owned())
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod push_tests {
|
mod push_tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@ -40,13 +51,10 @@ mod push_tests {
|
|||||||
let _ = client.add_file("file1", "foo");
|
let _ = client.add_file("file1", "foo");
|
||||||
client.run_cmd_ok("add file1");
|
client.run_cmd_ok("add file1");
|
||||||
|
|
||||||
let out = client.run_cmd("status");
|
let lines = collect_status_lines(&mut client);
|
||||||
let lines: Vec<&str> = str::from_utf8(&out.stdout)
|
|
||||||
.unwrap()
|
|
||||||
.split("\n")
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
line_should_contains(lines[2], "file1");
|
// test
|
||||||
|
line_should_contains(&lines, 2, "file1");
|
||||||
|
|
||||||
client.clean();
|
client.clean();
|
||||||
}
|
}
|
||||||
@ -59,15 +67,32 @@ mod push_tests {
|
|||||||
let _ = client.add_file("file1", "foo");
|
let _ = client.add_file("file1", "foo");
|
||||||
client.run_cmd_ok("add .nextsync -f");
|
client.run_cmd_ok("add .nextsync -f");
|
||||||
|
|
||||||
let out = client.run_cmd("status");
|
let lines = collect_status_lines(&mut client);
|
||||||
let lines: Vec<&str> = str::from_utf8(&out.stdout)
|
|
||||||
.unwrap()
|
|
||||||
.split("\n")
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
|
// test
|
||||||
lines_should_not_contains(lines, ".nextsync");
|
lines_should_not_contains(lines, ".nextsync");
|
||||||
|
|
||||||
client.clean();
|
client.clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn add_dir_implicit() {
|
||||||
|
let id = get_random_test_id();
|
||||||
|
let mut client = ClientTest::new(id).init();
|
||||||
|
|
||||||
|
let _ = client.add_dir("dir");
|
||||||
|
let _ = client.add_file("dir/file1", "foo");
|
||||||
|
|
||||||
|
// adding the file should add the dir
|
||||||
|
client.run_cmd_ok("add dir/file1");
|
||||||
|
|
||||||
|
let lines = collect_status_lines(&mut client);
|
||||||
|
|
||||||
|
// tests
|
||||||
|
line_should_contains(&lines, 2, "dir");
|
||||||
|
line_should_contains(&lines, 3, "dir/file1");
|
||||||
|
|
||||||
|
client.clean();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
use rand::{distributions::Alphanumeric, Rng};
|
|
||||||
|
|
||||||
mod utils;
|
mod utils;
|
||||||
use utils::{utils::*, server::ServerTest, client::ClientTest};
|
use utils::{utils::*, server::ServerTest, client::ClientTest};
|
||||||
@ -81,7 +80,7 @@ mod push_tests {
|
|||||||
let _ = client.add_file("dir/file2", "bar");
|
let _ = client.add_file("dir/file2", "bar");
|
||||||
|
|
||||||
// push dir and file2
|
// push dir and file2
|
||||||
client.run_cmd_ok("add file2");
|
client.run_cmd_ok("add dir/file2");
|
||||||
client.run_cmd_ok("push");
|
client.run_cmd_ok("push");
|
||||||
|
|
||||||
// tests
|
// tests
|
||||||
|
@ -13,7 +13,6 @@ pub struct ClientTest {
|
|||||||
|
|
||||||
impl ClientTest {
|
impl ClientTest {
|
||||||
pub fn new(id: String) -> Self {
|
pub fn new(id: String) -> Self {
|
||||||
|
|
||||||
// create a directory in /tmp with the given id
|
// create a directory in /tmp with the given id
|
||||||
let mut vol = String::from("/tmp/");
|
let mut vol = String::from("/tmp/");
|
||||||
vol.push_str(&id);
|
vol.push_str(&id);
|
||||||
@ -56,6 +55,7 @@ impl ClientTest {
|
|||||||
pub fn run_cmd_ok(&mut self, args: &str) -> Output {
|
pub fn run_cmd_ok(&mut self, args: &str) -> Output {
|
||||||
let output = self.run_cmd(args);
|
let output = self.run_cmd(args);
|
||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
|
println!("id: {}", self.test_id.clone());
|
||||||
println!("Failed to execute: '{}'", args);
|
println!("Failed to execute: '{}'", args);
|
||||||
println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
|
println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
|
||||||
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
|
println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
|
||||||
|
@ -93,6 +93,7 @@ impl ServerTest {
|
|||||||
let full_path = self.volume.clone().join(file);
|
let full_path = self.volume.clone().join(file);
|
||||||
|
|
||||||
if !full_path.exists() {
|
if !full_path.exists() {
|
||||||
|
println!("id: {}", self.test_id.clone());
|
||||||
eprintln!("File '{}' doesn't exists on the server", file);
|
eprintln!("File '{}' doesn't exists on the server", file);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -101,6 +102,7 @@ impl ServerTest {
|
|||||||
for line in BufReader::new(f).lines(){
|
for line in BufReader::new(f).lines(){
|
||||||
if let Ok(line) = line {
|
if let Ok(line) = line {
|
||||||
if line != content {
|
if line != content {
|
||||||
|
println!("id: {}", self.test_id.clone());
|
||||||
eprintln!("File '{}' is not equal, {} != {}", file, line, content);
|
eprintln!("File '{}' is not equal, {} != {}", file, line, content);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user