1+ use crate :: util:: named_subrepo_opts;
12use gix_testtools:: tempfile;
23
34#[ cfg( feature = "tree-editor" ) ]
@@ -220,11 +221,11 @@ mod edit_tree {
220221 use utils:: display_tree;
221222}
222223mod write_object {
223- use crate :: repository:: object:: empty_bare_repo ;
224+ use crate :: repository:: object:: empty_bare_in_memory_repo ;
224225
225226 #[ test]
226227 fn empty_tree ( ) -> crate :: Result {
227- let ( _tmp , repo) = empty_bare_repo ( ) ?;
228+ let repo = empty_bare_in_memory_repo ( ) ?;
228229 let oid = repo. write_object ( gix:: objs:: TreeRef :: empty ( ) ) ?;
229230 assert_eq ! (
230231 oid,
@@ -233,12 +234,38 @@ mod write_object {
233234 ) ;
234235 Ok ( ( ) )
235236 }
237+
238+ #[ test]
239+ fn commit_with_invalid_author ( ) -> crate :: Result {
240+ let repo = empty_bare_in_memory_repo ( ) ?;
241+ let actor = gix:: actor:: Signature {
242+ name : "1 < 0" . into ( ) ,
243+ email : Default :: default ( ) ,
244+ time : Default :: default ( ) ,
245+ } ;
246+ let commit = gix:: objs:: Commit {
247+ tree : gix:: hash:: ObjectId :: empty_tree ( repo. object_hash ( ) ) ,
248+ author : actor. clone ( ) ,
249+ committer : actor,
250+ parents : Default :: default ( ) ,
251+ encoding : None ,
252+ message : Default :: default ( ) ,
253+ extra_headers : vec ! [ ] ,
254+ } ;
255+ assert_eq ! (
256+ repo. write_object( commit) . unwrap_err( ) . to_string( ) ,
257+ "TBD" ,
258+ "the actor is invalid so triggers an error when persisting it"
259+ ) ;
260+ Ok ( ( ) )
261+ }
236262}
237263
238264mod write_blob {
239265 use std:: io:: { Seek , SeekFrom } ;
240266
241- use crate :: { repository:: object:: empty_bare_repo, util:: hex_to_id} ;
267+ use crate :: repository:: object:: empty_bare_repo;
268+ use crate :: { repository:: object:: empty_bare_in_memory_repo, util:: hex_to_id} ;
242269
243270 #[ test]
244271 fn from_slice ( ) -> crate :: Result {
@@ -266,7 +293,7 @@ mod write_blob {
266293
267294 #[ test]
268295 fn from_stream ( ) -> crate :: Result {
269- let ( _tmp , repo) = empty_bare_repo ( ) ?;
296+ let repo = empty_bare_in_memory_repo ( ) ?;
270297 let mut cursor = std:: io:: Cursor :: new ( b"hello world" ) ;
271298 let mut seek_cursor = cursor. clone ( ) ;
272299 let mut repo = repo. without_freelist ( ) ;
@@ -655,6 +682,10 @@ mod commit {
655682 }
656683}
657684
685+ fn empty_bare_in_memory_repo ( ) -> crate :: Result < gix:: Repository > {
686+ Ok ( named_subrepo_opts ( "make_basic_repo.sh" , "bare.git" , gix:: open:: Options :: isolated ( ) ) ?. with_object_memory ( ) )
687+ }
688+
658689fn empty_bare_repo ( ) -> crate :: Result < ( tempfile:: TempDir , gix:: Repository ) > {
659690 let tmp = tempfile:: tempdir ( ) ?;
660691 let repo = gix:: ThreadSafeRepository :: init_opts (
0 commit comments