tests yay
parent
b067d0fb8e
commit
301fb6046f
|
|
@ -244,24 +244,32 @@ mod test_db {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn conflicting_save_fails() {
|
fn conflicting_save_handled() {
|
||||||
|
use std::ops::Add;
|
||||||
|
|
||||||
let d = TempDir::new(&TS::now().to_string()).expect("failed to create a temp dir");
|
let d = TempDir::new(&TS::now().to_string()).expect("failed to create a temp dir");
|
||||||
let d = d.path().display().to_string();
|
let d = d.path().display().to_string();
|
||||||
|
let p = format!("{}/f", &d);
|
||||||
{
|
{
|
||||||
let p = format!("{}/f", &d);
|
let mut f = std::fs::File::create(p.clone()).expect("failed to create a file in cwd");
|
||||||
eprintln!("p={}", p);
|
|
||||||
let mut f = std::fs::File::create(p).expect("failed to create a file in cwd");
|
|
||||||
f.write_all(b"- x").expect("failed to create a file");
|
f.write_all(b"- x").expect("failed to create a file");
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut db = DB::new(d.clone()).expect("failed to open tempd");
|
let mut db = DB::new(d.clone()).expect("failed to open tempd");
|
||||||
assert_eq!(1, db.tasks_and_metadatas[0].tasks.len());
|
assert_eq!(1, db.tasks_and_metadatas[0].tasks.len());
|
||||||
db.tasks_and_metadatas[0].tasks.0.push(Task::new());
|
|
||||||
let stale_db = db.clone();
|
|
||||||
|
|
||||||
db.save(false).expect("failed to save db with new task");
|
std::fs::File::open(p)
|
||||||
assert_eq!(false, stale_db.save(false).is_ok());
|
.expect("failed to open file to change modtime")
|
||||||
|
.set_modified(std::time::SystemTime::now().add(std::time::Duration::new(10, 0)))
|
||||||
|
.expect("failed to change modtime");
|
||||||
|
|
||||||
|
db.tasks_and_metadatas[0].tasks.0.push(Task::new());
|
||||||
|
db.save(false).expect("save as conflicting update shouldve saved as a different file");
|
||||||
|
|
||||||
|
let db = DB::new(d.clone()).expect("failed to open tempd again");
|
||||||
|
assert_eq!(2, db.tasks_and_metadatas.len());
|
||||||
|
assert_eq!(1, db.tasks_and_metadatas[0].tasks.len());
|
||||||
|
assert_eq!(2, db.tasks_and_metadatas[1].tasks.len());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue