feat(tvix/store/protos): add Deriver field to PathInfo

This uses the newly introduced StorePath message type to add a Deriver
field to the PathInfo message.

Support for validation is added to both the golang and rust
implementation. This includes extending unit tests.

Change-Id: Ifc3eb3263fa25b9eec260db354cd74234c40af7e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9647
Reviewed-by: Connor Brewster <cbrewster@hey.com>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-10-11 00:22:40 +02:00 committed by flokli
parent 5f8eb4eeaa
commit 2d2c4322d9
10 changed files with 161 additions and 39 deletions

View file

@ -262,3 +262,34 @@ fn validate_symlink_target_null_byte_invalid() {
node.validate().expect_err("must fail validation");
}
/// Create a PathInfo with a correct deriver field and ensure it succeeds.
#[test]
fn validate_valid_deriver() {
let mut path_info = PATH_INFO_WITHOUT_NARINFO.clone();
// add a valid deriver
path_info.deriver = Some(crate::proto::StorePath {
name: "foo".to_string(),
digest: DUMMY_OUTPUT_HASH.clone(),
});
path_info.validate().expect("must validate");
}
/// Create a PathInfo with a broken deriver field and ensure it fails.
#[test]
fn validate_invalid_deriver() {
let mut path_info = PATH_INFO_WITHOUT_NARINFO.clone();
// add a broken deriver (invalid digest)
path_info.deriver = Some(crate::proto::StorePath {
name: "foo".to_string(),
digest: vec![].into(),
});
match path_info.validate().expect_err("must fail validation") {
ValidatePathInfoError::InvalidDeriverField(_) => {}
e => panic!("unexpected error: {:?}", e),
}
}