@@ -9,19 +9,14 @@ use crate::{
99
1010#[ test]
1111fn invalid_timestsamp ( ) {
12- let actor = gix_actor:: SignatureRef {
13- name : b"Name" . as_bstr ( ) ,
14- email : b"name@example.com" . as_bstr ( ) ,
15- time : "1312735823 +051800" ,
16- } ;
1712 assert_eq ! (
1813 CommitRef :: from_bytes( & fixture_name( "commit" , "invalid-timestamp.txt" ) )
1914 . expect( "auto-correct invalid timestamp by discarding it (time is still valid UTC)" ) ,
2015 CommitRef {
2116 tree: b"7989dfb2ec2f41914611a22fb30bbc2b3849df9a" . as_bstr( ) ,
2217 parents: [ b"8845ae683e2688bc619baade49510c17e978518f" . as_bstr( ) ] . into( ) ,
23- author: actor ,
24- committer: actor ,
18+ author: b"Name <name@example.com> 1312735823 +051800" . as_bstr ( ) ,
19+ committer: b"Name <name@example.com> 1312735823 +051800" . as_bstr ( ) ,
2520 encoding: None ,
2621 message: b"edit changelog to mention about x_sendfile_header default change" . as_bstr( ) ,
2722 extra_headers: vec![ ]
@@ -37,19 +32,22 @@ fn invalid_email_of_committer() {
3732 email : b"gh <Gregor Hartmann<gh@openoffice.org" . as_bstr ( ) ,
3833 time : "1282910542 +0200" ,
3934 } ;
35+ let backing = fixture_name ( "commit" , "invalid-actor.txt" ) ;
36+ let commit = CommitRef :: from_bytes ( & backing) . expect ( "ignore strangely formed actor format" ) ;
4037 assert_eq ! (
41- CommitRef :: from_bytes( & fixture_name( "commit" , "invalid-actor.txt" ) )
42- . expect( "ignore strangely formed actor format" ) ,
38+ commit,
4339 CommitRef {
4440 tree: b"220738fd4199e95a2b244465168366a73ebdf271" . as_bstr( ) ,
4541 parents: [ b"209fbe2d632761b30b7b17422914e11b93692833" . as_bstr( ) ] . into( ) ,
46- author: actor ,
47- committer: actor ,
42+ author: b"Gregor Hartmann<gh <Gregor Hartmann<gh@openoffice.org>> 1282910542 +0200" . as_bstr ( ) ,
43+ committer: b"Gregor Hartmann<gh <Gregor Hartmann<gh@openoffice.org>> 1282910542 +0200" . as_bstr ( ) ,
4844 encoding: None ,
4945 message: b"build breakers" . as_bstr( ) ,
5046 extra_headers: vec![ ]
5147 }
5248 ) ;
49+ assert_eq ! ( commit. author( ) , actor) ;
50+ assert_eq ! ( commit. committer( ) , actor) ;
5351}
5452
5553#[ test]
@@ -59,8 +57,8 @@ fn unsigned() -> crate::Result {
5957 CommitRef {
6058 tree: b"1b2dfb4ac5e42080b682fc676e9738c94ce6d54d" . as_bstr( ) ,
6159 parents: SmallVec :: default ( ) ,
62- author: signature ( " 1592437401 +0800") ,
63- committer: signature ( " 1592437401 +0800") ,
60+ author: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592437401 +0800". as_bstr ( ) ,
61+ committer: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592437401 +0800". as_bstr ( ) ,
6462 encoding: None ,
6563 message: b"without sig" . as_bstr( ) ,
6664 extra_headers: vec![ ]
@@ -76,8 +74,8 @@ fn whitespace() -> crate::Result {
7674 CommitRef {
7775 tree: b"9bed6275068a0575243ba8409253e61af81ab2ff" . as_bstr( ) ,
7876 parents: SmallVec :: from( vec![ b"26b4df046d1776c123ac69d918f5aec247b58cc6" . as_bstr( ) ] ) ,
79- author: signature ( " 1592448450 +0800") ,
80- committer: signature ( " 1592448450 +0800") ,
77+ author: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592448450 +0800". as_bstr ( ) ,
78+ committer: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592448450 +0800". as_bstr ( ) ,
8179 encoding: None ,
8280 message: b" nl" . as_bstr( ) , // this one had a \n trailing it, but git seems to trim that
8381 extra_headers: vec![ ]
@@ -93,8 +91,8 @@ fn signed_singleline() -> crate::Result {
9391 CommitRef {
9492 tree: b"00fc39317701176e326974ce44f5bd545a32ec0b" . as_bstr( ) ,
9593 parents: SmallVec :: from( vec![ b"09d8d3a12e161a7f6afb522dbe8900a9c09bce06" . as_bstr( ) ] ) ,
96- author: signature ( " 1592391367 +0800") ,
97- committer: signature ( " 1592391367 +0800") ,
94+ author: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592391367 +0800". as_bstr ( ) ,
95+ committer: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592391367 +0800". as_bstr ( ) ,
9896 encoding: None ,
9997 message: b"update tasks\n " . as_bstr( ) ,
10098 extra_headers: vec![ ( b"gpgsig" . as_bstr( ) , b"magic:signature" . as_bstr( ) . into( ) ) ]
@@ -106,24 +104,27 @@ fn signed_singleline() -> crate::Result {
106104#[ test]
107105fn mergetag ( ) -> crate :: Result {
108106 let fixture = fixture_name ( "commit" , "mergetag.txt" ) ;
109- let commit = CommitRef {
107+ let expected = CommitRef {
110108 tree : b"1c61918031bf2c7fab9e17dde3c52a6a9884fcb5" . as_bstr ( ) ,
111109 parents : SmallVec :: from ( vec ! [
112110 b"44ebe016df3aad96e3be8f95ec52397728dd7701" . as_bstr( ) ,
113111 b"8d485da0ddee79d0e6713405694253d401e41b93" . as_bstr( ) ,
114112 ] ) ,
115- author : linus_signature ( " 1591996221 -0700") ,
116- committer : linus_signature ( " 1591996221 -0700") ,
113+ author : b"Linus Torvalds <torvalds@linux-foundation.org> 1591996221 -0700". as_bstr ( ) ,
114+ committer : b"Linus Torvalds <torvalds@linux-foundation.org> 1591996221 -0700". as_bstr ( ) ,
117115 encoding : None ,
118116 message : LONG_MESSAGE . as_bytes ( ) . as_bstr ( ) ,
119117 extra_headers : vec ! [ (
120118 b"mergetag" . as_bstr( ) ,
121119 std:: borrow:: Cow :: Owned ( MERGE_TAG . as_bytes( ) . into( ) ) ,
122120 ) ] ,
123121 } ;
124- assert_eq ! ( CommitRef :: from_bytes( & fixture) ?, commit) ;
122+ let commit = CommitRef :: from_bytes ( & fixture) ?;
123+ assert_eq ! ( commit, expected) ;
125124 assert_eq ! ( commit. extra_headers( ) . find_all( "mergetag" ) . count( ) , 1 ) ;
126125 assert_eq ! ( commit. extra_headers( ) . mergetags( ) . count( ) , 1 ) ;
126+ assert_eq ! ( commit. author( ) , linus_signature( "1591996221 -0700" ) ) ;
127+ assert_eq ! ( commit. committer( ) , linus_signature( "1591996221 -0700" ) ) ;
127128 Ok ( ( ) )
128129}
129130
@@ -134,8 +135,8 @@ fn signed() -> crate::Result {
134135 CommitRef {
135136 tree: b"00fc39317701176e326974ce44f5bd545a32ec0b" . as_bstr( ) ,
136137 parents: SmallVec :: from( vec![ b"09d8d3a12e161a7f6afb522dbe8900a9c09bce06" . as_bstr( ) ] ) ,
137- author: signature ( " 1592391367 +0800") ,
138- committer: signature ( " 1592391367 +0800") ,
138+ author: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592391367 +0800". as_bstr ( ) ,
139+ committer: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592391367 +0800". as_bstr ( ) ,
139140 encoding: None ,
140141 message: b"update tasks\n " . as_bstr( ) ,
141142 extra_headers: vec![ ( b"gpgsig" . as_bstr( ) , b"-----BEGIN PGP SIGNATURE-----\n \n iQEzBAABCAAdFiEEdjYp/sh4j8NRKLX27gKdHl60AwAFAl7p9tgACgkQ7gKdHl60\n AwBpegf+KQciv9AOIN7+yPmowecGxBnSfpKWTDzFxnyGR8dq63SpWT8WEKG5mf3a\n G6iUqpsDWaMHlzihaMKRvgRpZxFRbjnNPFBj6F4RRqfE+5R7k6DRSLUV5PqnsdSH\n uccfIDWi1imhsm7AaP5trwl1t+83U2JhHqPcPVFLMODYwWeO6NLR/JCzGSTQRa8t\n RgaVMKI19O/fge5OT5Ua8D47VKEhsJX0LfmkP5RfZQ8JJvNd40TupqKRdlv0sAzP\n ya7NXkSHXCavHNR6kA+KpWxn900UoGK8/IDlwU6MeOkpPVawb3NFMqnc7KJDaC2p\n SMzpuEG8LTrCx2YSpHNLqHyzvQ1CZA==\n =5ITV\n -----END PGP SIGNATURE-----\n " . as_bstr( ) . into( ) ) ]
@@ -151,8 +152,8 @@ fn signed_with_encoding() -> crate::Result {
151152 CommitRef {
152153 tree: b"1973afa74d87b2bb73fa884aaaa8752aec43ea88" . as_bstr( ) ,
153154 parents: SmallVec :: from( vec![ b"79c51cc86923e2b8ca0ee5c4eb75e48027133f9a" . as_bstr( ) ] ) ,
154- author: signature ( " 1592448995 +0800") ,
155- committer: signature ( " 1592449083 +0800") ,
155+ author: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592448995 +0800". as_bstr ( ) ,
156+ committer: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592449083 +0800". as_bstr ( ) ,
156157 encoding: Some ( b"ISO-8859-1" . as_bstr( ) ) ,
157158 message: b"encoding & sig" . as_bstr( ) ,
158159 extra_headers: vec![ ( b"gpgsig" . as_bstr( ) , SIGNATURE . as_bstr( ) . into( ) ) ]
@@ -168,8 +169,8 @@ fn with_encoding() -> crate::Result {
168169 CommitRef {
169170 tree: b"4a1c03029e7407c0afe9fc0320b3258e188b115e" . as_bstr( ) ,
170171 parents: SmallVec :: from( vec![ b"7ca98aad461a5c302cb4c9e3acaaa6053cc67a62" . as_bstr( ) ] ) ,
171- author: signature ( " 1592438199 +0800") ,
172- committer: signature ( " 1592438199 +0800") ,
172+ author: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592438199 +0800". as_bstr ( ) ,
173+ committer: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592438199 +0800". as_bstr ( ) ,
173174 encoding: Some ( "ISO-8859-1" . into( ) ) ,
174175 message: b"commit with encoding" . as_bstr( ) ,
175176 extra_headers: vec![ ]
@@ -180,18 +181,13 @@ fn with_encoding() -> crate::Result {
180181
181182#[ test]
182183fn pre_epoch ( ) -> crate :: Result {
183- let signature = || SignatureRef {
184- name : "Législateur" . into ( ) ,
185- email : "" . into ( ) ,
186- time : "-5263834140 +0009" ,
187- } ;
188184 assert_eq ! (
189185 CommitRef :: from_bytes( & fixture_name( "commit" , "pre-epoch.txt" ) ) ?,
190186 CommitRef {
191187 tree: b"71cdd4015386b764b178005cad4c88966bc9d61a" . as_bstr( ) ,
192188 parents: SmallVec :: default ( ) ,
193- author: signature ( ) ,
194- committer: signature ( ) ,
189+ author: "Législateur <> -5263834140 +0009" . as_bytes ( ) . as_bstr ( ) ,
190+ committer: "Législateur <> -5263834140 +0009" . as_bytes ( ) . as_bstr ( ) ,
195191 encoding: None ,
196192 message: "Version consolidée au 14 mars 1803\n " . into( ) ,
197193 extra_headers: vec![ ]
@@ -202,18 +198,13 @@ fn pre_epoch() -> crate::Result {
202198
203199#[ test]
204200fn double_dash_special_time_offset ( ) -> crate :: Result {
205- let signature = || SignatureRef {
206- name : "name" . into ( ) ,
207- email : "name@example.com" . into ( ) ,
208- time : "1288373970 --700" ,
209- } ;
210201 assert_eq ! (
211202 CommitRef :: from_bytes( & fixture_name( "commit" , "double-dash-date-offset.txt" ) ) ?,
212203 CommitRef {
213204 tree: b"0a851d7a2a66084ab10516c406a405d147e974ad" . as_bstr( ) ,
214205 parents: SmallVec :: from( vec![ b"31350f4f0f459485eff2131517e3450cf251f6fa" . as_bstr( ) ] ) ,
215- author: signature ( ) ,
216- committer: signature ( ) ,
206+ author: "name <name@example.com> 1288373970 --700" . as_bytes ( ) . as_bstr ( ) ,
207+ committer: "name <name@example.com> 1288373970 --700" . as_bytes ( ) . as_bstr ( ) ,
217208 encoding: None ,
218209 message: "msg\n " . into( ) ,
219210 extra_headers: vec![ ]
@@ -236,8 +227,8 @@ fn with_trailer() -> crate::Result {
236227 CommitRef {
237228 tree: b"25a19c29c5e36884c1ad85d8faf23f1246b7961b" . as_bstr( ) ,
238229 parents: SmallVec :: from( vec![ b"699ae71105dddfcbb9711ed3a92df09e91a04e90" . as_bstr( ) ] ) ,
239- author: kim,
240- committer: kim,
230+ author: "Kim Altintop < kim@eagain.st> 1631514803 +0200" . as_bytes ( ) . as_bstr ( ) ,
231+ committer: "Kim Altintop < kim@eagain.st> 1631514803 +0200" . as_bytes ( ) . as_bstr ( ) ,
241232 encoding: None ,
242233 message: b"test: use gitoxide for link-git-protocol tests
243234
@@ -253,6 +244,8 @@ Signed-off-by: Kim Altintop <kim@eagain.st>"
253244 extra_headers: vec![ ( b"gpgsig" . as_bstr( ) , b"-----BEGIN PGP SIGNATURE-----\n \n iHUEABYIAB0WIQSuZwcGWSQItmusNgR5URpSUCnwXQUCYT7xpAAKCRB5URpSUCnw\n XWB3AP9q323HlxnI8MyqszNOeYDwa7Y3yEZaUM2y/IRjz+z4YQEAq0yr1Syt3mrK\n OSFCqL2vDm3uStP+vF31f6FnzayhNg0=\n =Mhpp\n -----END PGP SIGNATURE-----\n " . as_bstr( ) . into( ) ) ]
254245 }
255246 ) ;
247+ assert_eq ! ( commit. author( ) , kim) ;
248+ assert_eq ! ( commit. committer( ) , kim) ;
256249 let message = commit. message ( ) ;
257250 assert_eq ! ( message. title, "test: use gitoxide for link-git-protocol tests" ) ;
258251 assert_eq ! (
@@ -316,8 +309,8 @@ fn merge() -> crate::Result {
316309 b"6a6054db4ce3c1e4e6a37f8c4d7acb63a4d6ad71" . as_bstr( ) ,
317310 b"c91d592913d47ac4e4a76daf16fd649b276e211e" . as_bstr( )
318311 ] ) ,
319- author: signature ( " 1592454703 +0800") ,
320- committer: signature ( " 1592454738 +0800") ,
312+ author: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592454703 +0800". as_bstr ( ) ,
313+ committer: b"Sebastian Thiel <sebastian.thiel@icloud.com> 1592454738 +0800". as_bstr ( ) ,
321314 encoding: Some ( "ISO-8859-1" . into( ) ) ,
322315 message: b"Merge branch 'branch'" . as_bstr( ) ,
323316 extra_headers: vec![ ]
@@ -366,3 +359,12 @@ fn bogus_multi_gpgsig_header() -> crate::Result {
366359 ) ;
367360 Ok ( ( ) )
368361}
362+
363+ #[ test]
364+ fn author_method_returns_trimmed_signature ( ) -> crate :: Result {
365+ let backing = fixture_name ( "commit" , "unsigned.txt" ) ;
366+ let commit = CommitRef :: from_bytes ( & backing) ?;
367+ assert_eq ! ( commit. author( ) , signature( "1592437401 +0800" ) ) ;
368+ assert_eq ! ( commit. committer( ) , signature( "1592437401 +0800" ) ) ;
369+ Ok ( ( ) )
370+ }
0 commit comments