History

refactor; add test for empty tree iteration (#79)

Sebastian Thiel committed 5 years ago

Commit 63402961 parent 98709231 file · +59 −42Browse files

Unified · Split

git-object/tests/immutable/tree.rs+59−42
@@ -1,53 +1,18 @@
1−mod iter {}
2−
3−mod from_bytes {
4− use crate::hex_to_id;
5− use crate::immutable::fixture_bytes;
1+mod iter {
2+ use crate::{hex_to_id, immutable::fixture_bytes};
63 use git_object::{
74 bstr::ByteSlice,
8− immutable::{tree::Entry, Tree, TreeIter},
5+ immutable::{tree::Entry, TreeIter},
96 tree,
107 };
118
129 #[test]
13− fn everything() -> Result<(), Box<dyn std::error::Error>> {
14− assert_eq!(
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(())
10+ fn empty() {
11+ assert_eq!(TreeIter::from_bytes(&[]).count(), 0, "empty trees are definitely ok");
4712 }
4813
4914 #[test]
50− fn iter_error_handling() -> Result<(), Box<dyn std::error::Error>> {
15+ fn error_handling() -> Result<(), Box<dyn std::error::Error>> {
5116 let data = fixture_bytes("tree", "everything.tree");
5217 let iter = TreeIter::from_bytes(&data[..data.len() / 2]);
5318 let entries = iter.collect::<Vec<_>>();
@@ -59,7 +24,7 @@ mod from_bytes { · 5 unmodified lines
5924 }
6025
6126 #[test]
62− fn everything_iter() -> Result<(), Box<dyn std::error::Error>> {
27+ fn everything() -> Result<(), Box<dyn std::error::Error>> {
6328 assert_eq!(
6429 TreeIter::from_bytes(&fixture_bytes("tree", "everything.tree")).collect::<Result<Vec<_>, _>>()?,
6530 vec![
@@ -92,6 +57,58 @@ mod from_bytes { · 26 unmodified lines
9257 );
9358 Ok(())
9459 }
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+ }
95112
96113 #[test]
97114 fn maybe_special() -> Result<(), Box<dyn std::error::Error>> {