diff options
author | Florian Klink <flokli@flokli.de> | 2023-02-12T11·50+0100 |
---|---|---|
committer | flokli <flokli@flokli.de> | 2023-03-10T10·58+0000 |
commit | 80f68bf8282a4607a9e8f748a0aaa830d6aeacb7 (patch) | |
tree | b7d25759fc64593dd08d91ade1dfec127a798b2b /tvix/store/src/tests/pathinfo.rs | |
parent | 60abca1d8eef44b692694c82cdb3da15eab5b0a4 (diff) |
chore(tvix/store): move protos into separate mod.rs r/5907
This allows adding more stuff into this namespace, from different files. Also move tests on proto-related code from src/tests to src/proto/tests. Change-Id: I49e066fce90efbc18e16d68f94497b32ed5625c0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8091 Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/store/src/tests/pathinfo.rs')
-rw-r--r-- | tvix/store/src/tests/pathinfo.rs | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/tvix/store/src/tests/pathinfo.rs b/tvix/store/src/tests/pathinfo.rs deleted file mode 100644 index 35a2771c300a..000000000000 --- a/tvix/store/src/tests/pathinfo.rs +++ /dev/null @@ -1,207 +0,0 @@ -use crate::proto::{self, Node, PathInfo, ValidatePathInfoError}; -use lazy_static::lazy_static; -use nix_compat::store_path::{ParseStorePathError, StorePath}; -use test_case::test_case; - -lazy_static! { - static ref DUMMY_DIGEST: Vec<u8> = vec![ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, - ]; - static ref DUMMY_DIGEST_2: Vec<u8> = vec![ - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, - ]; -} - -const DUMMY_NAME: &str = "00000000000000000000000000000000-dummy"; - -#[test_case( - None, - Err(ValidatePathInfoError::NoNodePresent()) ; - "No node" -)] -#[test_case( - Some(Node { node: None }), - Err(ValidatePathInfoError::NoNodePresent()); - "No node 2" -)] -fn validate_no_node( - t_node: Option<proto::Node>, - t_result: Result<StorePath, ValidatePathInfoError>, -) { - // construct the PathInfo object - let p = PathInfo { - node: t_node, - ..Default::default() - }; - assert_eq!(t_result, p.validate()); -} - -#[test_case( - proto::DirectoryNode { - name: DUMMY_NAME.to_string(), - digest: DUMMY_DIGEST.to_vec(), - size: 0, - }, - Ok(StorePath::from_string(DUMMY_NAME).expect("must succeed")); - "ok" -)] -#[test_case( - proto::DirectoryNode { - name: DUMMY_NAME.to_string(), - digest: vec![], - size: 0, - }, - Err(ValidatePathInfoError::InvalidDigestLen(0)); - "invalid digest length" -)] -#[test_case( - proto::DirectoryNode { - name: "invalid".to_string(), - digest: DUMMY_DIGEST.to_vec(), - size: 0, - }, - Err(ValidatePathInfoError::InvalidNodeName( - "invalid".to_string(), - ParseStorePathError::InvalidName("".to_string()) - )); - "invalid node name" -)] -fn validate_directory( - t_directory_node: proto::DirectoryNode, - t_result: Result<StorePath, ValidatePathInfoError>, -) { - // construct the PathInfo object - let p = PathInfo { - node: Some(Node { - node: Some(proto::node::Node::Directory(t_directory_node)), - }), - ..Default::default() - }; - assert_eq!(t_result, p.validate()); -} - -#[test_case( - proto::FileNode { - name: DUMMY_NAME.to_string(), - digest: DUMMY_DIGEST.to_vec(), - size: 0, - executable: false, - }, - Ok(StorePath::from_string(DUMMY_NAME).expect("must succeed")); - "ok" -)] -#[test_case( - proto::FileNode { - name: DUMMY_NAME.to_string(), - digest: vec![], - ..Default::default() - }, - Err(ValidatePathInfoError::InvalidDigestLen(0)); - "invalid digest length" -)] -#[test_case( - proto::FileNode { - name: "invalid".to_string(), - digest: DUMMY_DIGEST.to_vec(), - ..Default::default() - }, - Err(ValidatePathInfoError::InvalidNodeName( - "invalid".to_string(), - ParseStorePathError::InvalidName("".to_string()) - )); - "invalid node name" -)] -fn validate_file(t_file_node: proto::FileNode, t_result: Result<StorePath, ValidatePathInfoError>) { - // construct the PathInfo object - let p = PathInfo { - node: Some(Node { - node: Some(proto::node::Node::File(t_file_node)), - }), - ..Default::default() - }; - assert_eq!(t_result, p.validate()); -} - -#[test_case( - proto::SymlinkNode { - name: DUMMY_NAME.to_string(), - ..Default::default() - }, - Ok(StorePath::from_string(DUMMY_NAME).expect("must succeed")); - "ok" -)] -#[test_case( - proto::SymlinkNode { - name: "invalid".to_string(), - ..Default::default() - }, - Err(ValidatePathInfoError::InvalidNodeName( - "invalid".to_string(), - ParseStorePathError::InvalidName("".to_string()) - )); - "invalid node name" -)] -fn validate_symlink( - t_symlink_node: proto::SymlinkNode, - t_result: Result<StorePath, ValidatePathInfoError>, -) { - // construct the PathInfo object - let p = PathInfo { - node: Some(Node { - node: Some(proto::node::Node::Symlink(t_symlink_node)), - }), - ..Default::default() - }; - assert_eq!(t_result, p.validate()); -} - -#[test] -fn validate_references() { - // create a PathInfo without narinfo field. - let path_info = PathInfo { - node: Some(Node { - node: Some(proto::node::Node::Directory(proto::DirectoryNode { - name: DUMMY_NAME.to_string(), - digest: DUMMY_DIGEST.to_vec(), - size: 0, - })), - }), - references: vec![DUMMY_DIGEST_2.to_vec()], - narinfo: None, - }; - assert!(path_info.validate().is_ok()); - - // create a PathInfo with a narinfo field, but an inconsistent set of references - let path_info_with_narinfo_missing_refs = PathInfo { - narinfo: Some(proto::NarInfo { - nar_size: 0, - nar_sha256: DUMMY_DIGEST.to_vec(), - signatures: vec![], - reference_names: vec![], - }), - ..path_info.clone() - }; - match path_info_with_narinfo_missing_refs - .validate() - .expect_err("must_fail") - { - ValidatePathInfoError::InconsistentNumberOfReferences(_, _) => {} - _ => panic!("unexpected error"), - }; - - // create a pathinfo with the correct number of references, should suceed - let path_info_with_narinfo = PathInfo { - narinfo: Some(proto::NarInfo { - nar_size: 0, - nar_sha256: DUMMY_DIGEST.to_vec(), - signatures: vec![], - reference_names: vec![format!("/nix/store/{}", DUMMY_NAME)], - }), - ..path_info.clone() - }; - assert!(path_info_with_narinfo.validate().is_ok()); -} |