Make sure version increases on save

This commit is contained in:
Cyryl Płotnicki 2020-11-08 19:20:55 +00:00
parent 7d44a998c9
commit 59c6c5465b
3 changed files with 25 additions and 4 deletions

View file

@ -39,7 +39,7 @@ impl Index {
let index = Index::load_from_file(&Index::index_file_path_for_repository_path(&self.index_directory()?))?; let index = Index::load_from_file(&Index::index_file_path_for_repository_path(&self.index_directory()?))?;
self.merge_items_by_file_id(index.items_by_file_id); self.merge_items_by_file_id(index.items_by_file_id);
self.merge_newest_items(index.newest_items_by_source_path); self.merge_newest_items(index.newest_items_by_source_path);
self.version = max(self.version.clone(), index.version); self.version = max(self.version, index.version);
} }
self.version = self.version.next(); self.version = self.version.next();
self.write_index_to_file(self.index_file_path())?; self.write_index_to_file(self.index_file_path())?;
@ -112,3 +112,24 @@ impl Index {
.to_path_buf()) .to_path_buf())
} }
} }
#[cfg(test)]
mod must {
use crate::index::Index;
use anyhow::Result;
#[test]
fn have_version_increased_when_saved() -> Result<()> {
let temp_dir = tempfile::tempdir()?;
let mut index = Index::new(&temp_dir.into_path());
let old_version = index.version;
index.save()?;
let new_version = index.version;
assert!(new_version > old_version);
Ok(())
}
}

View file

@ -31,7 +31,7 @@ impl IndexItem {
} }
pub fn version(&self) -> Version { pub fn version(&self) -> Version {
self.version.clone() self.version
} }
pub fn id(&self) -> ItemId { pub fn id(&self) -> ItemId {
@ -53,7 +53,7 @@ impl From<RepositoryItem> for IndexItem {
relative_path: i.relative_path().to_string_lossy().to_string(), relative_path: i.relative_path().to_string_lossy().to_string(),
original_source_path: i.original_source_path().to_string_lossy().to_string(), original_source_path: i.original_source_path().to_string_lossy().to_string(),
id: i.id().clone(), id: i.id().clone(),
version: i.version().clone(), version: *i.version(),
} }
} }
} }

View file

@ -1,7 +1,7 @@
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::fmt::Display; use std::fmt::Display;
#[derive(Clone, Debug, PartialOrd, PartialEq, Ord, Eq, Serialize, Deserialize, Hash)] #[derive(Copy, Clone, Debug, PartialOrd, PartialEq, Ord, Eq, Serialize, Deserialize, Hash)]
pub struct Version(u128); pub struct Version(u128);
impl Version { impl Version {