History

feat: `CommitRefIter::(author|committer)()`, better usability (#364)

The methods returning an iterator are now consuming, which allows them to be nested by callers.

Sebastian Thiel committed 4 years ago

Commit c51a9251 parent 91065cd2 files · +41 −20Browse files

Showing the changes to git-object/tests/immutable/commit (1 of 2 files). Show all

Unified · Split

git-object/tests/immutable/commit/iter.rs+23−20
@@ -24,9 +24,10 @@ fn newline_right_after_signature_multiline_header() -> crate::Result { · 23 unmodified lines
24 24
25#[test]25#[test]
26fn signed_with_encoding() -> crate::Result {26fn signed_with_encoding() -> crate::Result {
27 let input = fixture_bytes("commit", "signed-with-encoding.txt");
28 let mut iter = CommitRefIter::from_bytes(&input);
27 assert_eq!(29 assert_eq!(
28 CommitRefIter::from_bytes(&fixture_bytes("commit", "signed-with-encoding.txt"))30 iter.collect::<Result<Vec<_>, _>>()?,
29 .collect::<Result<Vec<_>, _>>()?,
30 vec![31 vec![
31 Token::Tree {32 Token::Tree {
32 id: hex_to_id("1973afa74d87b2bb73fa884aaaa8752aec43ea88")33 id: hex_to_id("1973afa74d87b2bb73fa884aaaa8752aec43ea88")
@@ -45,6 +46,9 @@ fn signed_with_encoding() -> crate::Result { · 12 unmodified lines
45 Token::Message(b"encoding & sig".as_bstr()),46 Token::Message(b"encoding & sig".as_bstr()),
46 ]47 ]
47 );48 );
49
50 assert_eq!(iter.author(), Some(signature(1592448995)));
51 assert_eq!(iter.committer(), Some(signature(1592449083)));
48 Ok(())52 Ok(())
49}53}
50 54
@@ -135,8 +139,10 @@ fn error_handling() -> crate::Result { · 84 unmodified lines
135 139
136#[test]140#[test]
137fn mergetag() -> crate::Result {141fn mergetag() -> crate::Result {
142 let input = fixture_bytes("commit", "mergetag.txt");
143 let mut iter = CommitRefIter::from_bytes(&input);
138 assert_eq!(144 assert_eq!(
139 CommitRefIter::from_bytes(&fixture_bytes("commit", "mergetag.txt")).collect::<Result<Vec<_>, _>>()?,145 iter.collect::<Result<Vec<_>, _>>()?,
140 vec![146 vec![
141 Token::Tree {147 Token::Tree {
142 id: hex_to_id("1c61918031bf2c7fab9e17dde3c52a6a9884fcb5")148 id: hex_to_id("1c61918031bf2c7fab9e17dde3c52a6a9884fcb5")
@@ -154,18 +160,17 @@ fn mergetag() -> crate::Result { · 11 unmodified lines
154 signature: linus_signature(1591996221)160 signature: linus_signature(1591996221)
155 },161 },
156 Token::ExtraHeader((b"mergetag".as_bstr(), MERGE_TAG.as_bytes().as_bstr().into())),162 Token::ExtraHeader((b"mergetag".as_bstr(), MERGE_TAG.as_bytes().as_bstr().into())),
157 Token::Message(LONG_MESSAGE.as_bytes().as_bstr()),163 Token::Message(LONG_MESSAGE.into()),
158 ]164 ]
159 );165 );
160 assert_eq!(166 assert_eq!(
161 CommitRefIter::from_bytes(&fixture_bytes("commit", "mergetag.txt"))167 iter.parent_ids().collect::<Vec<_>>(),
162 .parent_ids()
163 .collect::<Vec<_>>(),
164 vec![168 vec![
165 hex_to_id("44ebe016df3aad96e3be8f95ec52397728dd7701"),169 hex_to_id("44ebe016df3aad96e3be8f95ec52397728dd7701"),
166 hex_to_id("8d485da0ddee79d0e6713405694253d401e41b93")170 hex_to_id("8d485da0ddee79d0e6713405694253d401e41b93")
167 ]171 ]
168 );172 );
173 assert_eq!(iter.message(), Some(LONG_MESSAGE.into()));
169 Ok(())174 Ok(())
170}175}
171 176
@@ -179,33 +184,31 @@ mod method { · 7 unmodified lines
179 184
180 #[test]185 #[test]
181 fn tree_id() -> crate::Result {186 fn tree_id() -> crate::Result {
187 let input = fixture_bytes("commit", "unsigned.txt");
188 let iter = CommitRefIter::from_bytes(&input);
182 assert_eq!(189 assert_eq!(
183 CommitRefIter::from_bytes(&fixture_bytes("commit", "unsigned.txt")).tree_id(),190 iter.clone().tree_id(),
184 Some(hex_to_id("1b2dfb4ac5e42080b682fc676e9738c94ce6d54d"))191 Some(hex_to_id("1b2dfb4ac5e42080b682fc676e9738c94ce6d54d"))
185 );192 );
186 assert_eq!(193 assert_eq!(
187 CommitRefIter::from_bytes(&fixture_bytes("commit", "unsigned.txt"))194 iter.signatures().collect::<Vec<_>>(),
188 .signatures()
189 .collect::<Vec<_>>(),
190 vec![signature(1592437401), signature(1592437401)]195 vec![signature(1592437401), signature(1592437401)]
191 );196 );
192 assert_eq!(197 assert_eq!(iter.parent_ids().count(), 0);
193 CommitRefIter::from_bytes(&fixture_bytes("commit", "unsigned.txt"))
194 .parent_ids()
195 .count(),
196 0
197 );
198 Ok(())198 Ok(())
199 }199 }
200 200
201 #[test]201 #[test]
202 fn signatures() -> crate::Result {202 fn signatures() -> crate::Result {
203 let input = fixture_bytes("commit", "unsigned.txt");
204 let mut iter = CommitRefIter::from_bytes(&input);
203 assert_eq!(205 assert_eq!(
204 CommitRefIter::from_bytes(&fixture_bytes("commit", "unsigned.txt"))206 iter.signatures().collect::<Vec<_>>(),
205 .signatures()
206 .collect::<Vec<_>>(),
207 vec![signature(1592437401), signature(1592437401)]207 vec![signature(1592437401), signature(1592437401)]
208 );208 );
209 assert_eq!(iter.author(), Some(signature(1592437401)));
210 assert_eq!(iter.committer(), Some(signature(1592437401)));
211 assert_eq!(iter.committer(), None, "it's consuming");
209 Ok(())212 Ok(())
210 }213 }
211}214}