1
+ use crate :: util:: named_subrepo_opts;
1
2
use gix_testtools:: tempfile;
2
3
3
4
#[ cfg( feature = "tree-editor" ) ]
@@ -220,11 +221,11 @@ mod edit_tree {
220
221
use utils:: display_tree;
221
222
}
222
223
mod write_object {
223
- use crate :: repository:: object:: empty_bare_repo ;
224
+ use crate :: repository:: object:: empty_bare_in_memory_repo ;
224
225
225
226
#[ test]
226
227
fn empty_tree ( ) -> crate :: Result {
227
- let ( _tmp , repo) = empty_bare_repo ( ) ?;
228
+ let repo = empty_bare_in_memory_repo ( ) ?;
228
229
let oid = repo. write_object ( gix:: objs:: TreeRef :: empty ( ) ) ?;
229
230
assert_eq ! (
230
231
oid,
@@ -233,12 +234,38 @@ mod write_object {
233
234
) ;
234
235
Ok ( ( ) )
235
236
}
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
+ "Signature name or email must not contain '<', '>' or \\ n" ,
258
+ "the actor is invalid so triggers an error when persisting it"
259
+ ) ;
260
+ Ok ( ( ) )
261
+ }
236
262
}
237
263
238
264
mod write_blob {
239
265
use std:: io:: { Seek , SeekFrom } ;
240
266
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} ;
242
269
243
270
#[ test]
244
271
fn from_slice ( ) -> crate :: Result {
@@ -266,7 +293,7 @@ mod write_blob {
266
293
267
294
#[ test]
268
295
fn from_stream ( ) -> crate :: Result {
269
- let ( _tmp , repo) = empty_bare_repo ( ) ?;
296
+ let repo = empty_bare_in_memory_repo ( ) ?;
270
297
let mut cursor = std:: io:: Cursor :: new ( b"hello world" ) ;
271
298
let mut seek_cursor = cursor. clone ( ) ;
272
299
let mut repo = repo. without_freelist ( ) ;
@@ -655,6 +682,10 @@ mod commit {
655
682
}
656
683
}
657
684
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
+
658
689
fn empty_bare_repo ( ) -> crate :: Result < ( tempfile:: TempDir , gix:: Repository ) > {
659
690
let tmp = tempfile:: tempdir ( ) ?;
660
691
let repo = gix:: ThreadSafeRepository :: init_opts (
0 commit comments