Unified · Split
| @@ -1,53 +1,18 @@ | |||
| 1 | mod iter {} | 1 | mod iter { |
| 2 | 2 | use crate::{hex_to_id, immutable::fixture_bytes}; | |
| 3 | mod from_bytes { | ||
| 4 | use crate::hex_to_id; | ||
| 5 | use crate::immutable::fixture_bytes; | ||
| 6 | use git_object::{ | 3 | use git_object::{ |
| 7 | bstr::ByteSlice, | 4 | bstr::ByteSlice, |
| 8 | immutable::{tree::Entry, Tree, TreeIter}, | 5 | immutable::{tree::Entry, TreeIter}, |
| 9 | tree, | 6 | tree, |
| 10 | }; | 7 | }; |
| 11 | 8 | ||
| 12 | #[test] | 9 | #[test] |
| 13 | fn everything() -> Result<(), Box<dyn std::error::Error>> { | 10 | fn empty() { |
| 14 | assert_eq!( | 11 | assert_eq!(TreeIter::from_bytes(&[]).count(), 0, "empty trees are definitely ok"); |
| 15 | Tree::from_bytes(&fixture_bytes("tree", "everything.tree"))?, | ||
| 16 | Tree { | ||
| 17 | entries: vec![ | ||
| 18 | Entry { | ||
| 19 | mode: tree::EntryMode::BlobExecutable, | ||
| 20 | filename: b"exe".as_bstr(), | ||
| 21 | oid: &hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391") | ||
| 22 | }, | ||
| 23 | Entry { | ||
| 24 | mode: tree::EntryMode::Blob, | ||
| 25 | filename: b"file".as_bstr(), | ||
| 26 | oid: &hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391") | ||
| 27 | }, | ||
| 28 | Entry { | ||
| 29 | mode: tree::EntryMode::Commit, | ||
| 30 | filename: b"grit-submodule".as_bstr(), | ||
| 31 | oid: &hex_to_id("b2d1b5d684bdfda5f922b466cc13d4ce2d635cf8") | ||
| 32 | }, | ||
| 33 | Entry { | ||
| 34 | mode: tree::EntryMode::Tree, | ||
| 35 | filename: b"subdir".as_bstr(), | ||
| 36 | oid: &hex_to_id("4d5fcadc293a348e88f777dc0920f11e7d71441c") | ||
| 37 | }, | ||
| 38 | Entry { | ||
| 39 | mode: tree::EntryMode::Link, | ||
| 40 | filename: b"symlink".as_bstr(), | ||
| 41 | oid: &hex_to_id("1a010b1c0f081b2e8901d55307a15c29ff30af0e") | ||
| 42 | } | ||
| 43 | ] | ||
| 44 | } | ||
| 45 | ); | ||
| 46 | Ok(()) | ||
| 47 | } | 12 | } |
| 48 | 13 | ||
| 49 | #[test] | 14 | #[test] |
| 50 | fn iter_error_handling() -> Result<(), Box<dyn std::error::Error>> { | 15 | fn error_handling() -> Result<(), Box<dyn std::error::Error>> { |
| 51 | let data = fixture_bytes("tree", "everything.tree"); | 16 | let data = fixture_bytes("tree", "everything.tree"); |
| 52 | let iter = TreeIter::from_bytes(&data[..data.len() / 2]); | 17 | let iter = TreeIter::from_bytes(&data[..data.len() / 2]); |
| 53 | let entries = iter.collect::<Vec<_>>(); | 18 | let entries = iter.collect::<Vec<_>>(); |
| @@ -59,7 +24,7 @@ mod from_bytes { · 5 unmodified lines | |||
| 59 | } | 24 | } |
| 60 | 25 | ||
| 61 | #[test] | 26 | #[test] |
| 62 | fn everything_iter() -> Result<(), Box<dyn std::error::Error>> { | 27 | fn everything() -> Result<(), Box<dyn std::error::Error>> { |
| 63 | assert_eq!( | 28 | assert_eq!( |
| 64 | TreeIter::from_bytes(&fixture_bytes("tree", "everything.tree")).collect::<Result<Vec<_>, _>>()?, | 29 | TreeIter::from_bytes(&fixture_bytes("tree", "everything.tree")).collect::<Result<Vec<_>, _>>()?, |
| 65 | vec![ | 30 | vec![ |
| @@ -92,6 +57,58 @@ mod from_bytes { · 26 unmodified lines | |||
| 92 | ); | 57 | ); |
| 93 | Ok(()) | 58 | Ok(()) |
| 94 | } | 59 | } |
| 60 | } | ||
| 61 | |||
| 62 | mod from_bytes { | ||
| 63 | use crate::{hex_to_id, immutable::fixture_bytes}; | ||
| 64 | use git_object::{ | ||
| 65 | bstr::ByteSlice, | ||
| 66 | immutable::{tree::Entry, Tree}, | ||
| 67 | tree, | ||
| 68 | }; | ||
| 69 | |||
| 70 | #[test] | ||
| 71 | #[should_panic] | ||
| 72 | fn empty() { | ||
| 73 | assert_eq!(Tree::from_bytes(&[]).unwrap(), Tree { entries: vec![] }); | ||
| 74 | } | ||
| 75 | |||
| 76 | #[test] | ||
| 77 | fn everything() -> Result<(), Box<dyn std::error::Error>> { | ||
| 78 | assert_eq!( | ||
| 79 | Tree::from_bytes(&fixture_bytes("tree", "everything.tree"))?, | ||
| 80 | Tree { | ||
| 81 | entries: vec![ | ||
| 82 | Entry { | ||
| 83 | mode: tree::EntryMode::BlobExecutable, | ||
| 84 | filename: b"exe".as_bstr(), | ||
| 85 | oid: &hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391") | ||
| 86 | }, | ||
| 87 | Entry { | ||
| 88 | mode: tree::EntryMode::Blob, | ||
| 89 | filename: b"file".as_bstr(), | ||
| 90 | oid: &hex_to_id("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391") | ||
| 91 | }, | ||
| 92 | Entry { | ||
| 93 | mode: tree::EntryMode::Commit, | ||
| 94 | filename: b"grit-submodule".as_bstr(), | ||
| 95 | oid: &hex_to_id("b2d1b5d684bdfda5f922b466cc13d4ce2d635cf8") | ||
| 96 | }, | ||
| 97 | Entry { | ||
| 98 | mode: tree::EntryMode::Tree, | ||
| 99 | filename: b"subdir".as_bstr(), | ||
| 100 | oid: &hex_to_id("4d5fcadc293a348e88f777dc0920f11e7d71441c") | ||
| 101 | }, | ||
| 102 | Entry { | ||
| 103 | mode: tree::EntryMode::Link, | ||
| 104 | filename: b"symlink".as_bstr(), | ||
| 105 | oid: &hex_to_id("1a010b1c0f081b2e8901d55307a15c29ff30af0e") | ||
| 106 | } | ||
| 107 | ] | ||
| 108 | } | ||
| 109 | ); | ||
| 110 | Ok(()) | ||
| 111 | } | ||
| 95 | 112 | ||
| 96 | #[test] | 113 | #[test] |
| 97 | fn maybe_special() -> Result<(), Box<dyn std::error::Error>> { | 114 | fn maybe_special() -> Result<(), Box<dyn std::error::Error>> { |