feat(tvix/store): parameterise validate_digest error
Similar to cl/7682, we also want to make that error configurable. Change-Id: I64f1a4570b3d75af4741abe10c2855959766e107 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7708 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
parent
5520bf3682
commit
4036740ca7
1 changed files with 7 additions and 4 deletions
|
@ -38,9 +38,9 @@ fn validate_node_name<E>(name: &str, err: fn(String) -> E) -> Result<(), E> {
|
||||||
|
|
||||||
/// Checks a digest for validity.
|
/// Checks a digest for validity.
|
||||||
/// Digests are 32 bytes long, as we store blake3 digests.
|
/// Digests are 32 bytes long, as we store blake3 digests.
|
||||||
fn validate_digest(digest: &Vec<u8>) -> Result<(), ValidateDirectoryError> {
|
fn validate_digest<E>(digest: &Vec<u8>, err: fn(usize) -> E) -> Result<(), E> {
|
||||||
if digest.len() != 32 {
|
if digest.len() != 32 {
|
||||||
return Err(ValidateDirectoryError::InvalidDigestLen(digest.len()));
|
return Err(err(digest.len()));
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,10 @@ impl Directory {
|
||||||
// check directories
|
// check directories
|
||||||
for directory_node in &self.directories {
|
for directory_node in &self.directories {
|
||||||
validate_node_name(&directory_node.name, ValidateDirectoryError::InvalidName)?;
|
validate_node_name(&directory_node.name, ValidateDirectoryError::InvalidName)?;
|
||||||
validate_digest(&directory_node.digest)?;
|
validate_digest(
|
||||||
|
&directory_node.digest,
|
||||||
|
ValidateDirectoryError::InvalidDigestLen,
|
||||||
|
)?;
|
||||||
|
|
||||||
update_if_lt_prev(&mut last_directory_name, directory_node.name.as_str())?;
|
update_if_lt_prev(&mut last_directory_name, directory_node.name.as_str())?;
|
||||||
insert_once(&mut seen_names, directory_node.name.as_str())?;
|
insert_once(&mut seen_names, directory_node.name.as_str())?;
|
||||||
|
@ -114,7 +117,7 @@ impl Directory {
|
||||||
// check files
|
// check files
|
||||||
for file_node in &self.files {
|
for file_node in &self.files {
|
||||||
validate_node_name(&file_node.name, ValidateDirectoryError::InvalidName)?;
|
validate_node_name(&file_node.name, ValidateDirectoryError::InvalidName)?;
|
||||||
validate_digest(&file_node.digest)?;
|
validate_digest(&file_node.digest, ValidateDirectoryError::InvalidDigestLen)?;
|
||||||
|
|
||||||
update_if_lt_prev(&mut last_file_name, file_node.name.as_str())?;
|
update_if_lt_prev(&mut last_file_name, file_node.name.as_str())?;
|
||||||
insert_once(&mut seen_names, file_node.name.as_str())?;
|
insert_once(&mut seen_names, file_node.name.as_str())?;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue