about summary refs log tree commit diff
path: root/tvix/store/src/tests/pathinfo.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-02-12T11·50+0100
committerflokli <flokli@flokli.de>2023-03-10T10·58+0000
commit80f68bf8282a4607a9e8f748a0aaa830d6aeacb7 (patch)
treeb7d25759fc64593dd08d91ade1dfec127a798b2b /tvix/store/src/tests/pathinfo.rs
parent60abca1d8eef44b692694c82cdb3da15eab5b0a4 (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.rs207
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());
-}