Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
node: Improve some tests
Alexis Sellier committed 3 years ago
commit a4d2232578e263d5c79befc49a5a7ae69a78e283
parent cd7421eb86c010323bbb12ecc745f75946fc402d
3 files changed +35 -7
modified node/src/control.rs
@@ -95,7 +95,7 @@ mod tests {
        let tmp = tempfile::tempdir().unwrap();
        let handle = test::handle::Handle::default();
        let socket = tmp.path().join("alice.sock");
-
        let proj = test::arbitrary::gen::<ProjId>(1);
+
        let projs = test::arbitrary::set::<ProjId>(1..3);

        thread::spawn({
            let socket = socket.clone();
@@ -109,13 +109,17 @@ mod tests {
                break stream;
            }
        };
-
        writeln!(&stream, "update {}", proj).unwrap();
+
        for proj in &projs {
+
            writeln!(&stream, "update {}", proj).unwrap();
+
        }

        let mut buf = [0; 2];
        stream.shutdown(net::Shutdown::Write).unwrap();
        stream.read_exact(&mut buf).unwrap();

        assert_eq!(&buf, &[b'o', b'k']);
-
        assert!(handle.updates.lock().unwrap().contains(&proj));
+
        for proj in &projs {
+
            assert!(handle.updates.lock().unwrap().contains(proj));
+
        }
    }
}
modified node/src/storage/refs.rs
@@ -315,4 +315,20 @@ pub mod canonical {
    }
}

+
#[cfg(test)]
+
mod tests {
+
    use super::*;
+
    use quickcheck_macros::quickcheck;
+

+
    #[quickcheck]
+
    fn prop_canonical_roundtrip(refs: Refs) {
+
        let encoded = refs.canonical();
+
        let decoded = Refs::from_canonical(&encoded).unwrap();
+

+
        println!("{:?}", refs);
+

+
        assert_eq!(refs, decoded);
+
    }
+
}
+

// TODO: Test canonical/from_canonical
modified node/src/test/arbitrary.rs
@@ -52,10 +52,18 @@ impl Arbitrary for Refs {
    fn arbitrary(g: &mut quickcheck::Gen) -> Self {
        let mut refs: BTreeMap<storage::RefName, storage::Oid> = BTreeMap::new();
        let mut bytes: [u8; 20] = [0; 20];
-
        // TODO: Use refs other than branch names.
-
        let names = &["master", "dev", "feature/1", "feature/2", "feature/3"];
-

-
        for _ in 0..g.size().min(2) {
+
        let names = &[
+
            "heads/master",
+
            "heads/feature/1",
+
            "heads/feature/2",
+
            "heads/feature/3",
+
            "heads/radicle/id",
+
            "tags/v1.0",
+
            "tags/v2.0",
+
            "notes/1",
+
        ];
+

+
        for _ in 0..g.size().min(names.len()) {
            if let Some(name) = g.choose(names) {
                for byte in &mut bytes {
                    *byte = u8::arbitrary(g);