@@ -298,3 +298,103 @@ void test_commit_write__can_validate_objects(void)
298298 git_oid_fromstr (& parent_id , tree_id_str );
299299 cl_git_fail (create_commit_from_ids (& commit_id , & tree_id , & parent_id ));
300300}
301+
302+ void test_commit_write__attach_singleline_signature (void )
303+ {
304+ const char * sig = "magic word: pretty please" ;
305+
306+ const char * data = "tree 6b79e22d69bf46e289df0345a14ca059dfc9bdf6\n\
307+ parent 34734e478d6cf50c27c9d69026d93974d052c454\n\
308+ author Ben Burkert <[email protected] > 1358451456 -0800\n\ 309+ committer Ben Burkert <[email protected] > 1358451456 -0800\n\ 310+ \n\
311+ a simple commit which works\n" ;
312+
313+ const char * complete = "tree 6b79e22d69bf46e289df0345a14ca059dfc9bdf6\n\
314+ parent 34734e478d6cf50c27c9d69026d93974d052c454\n\
315+ author Ben Burkert <[email protected] > 1358451456 -0800\n\ 316+ committer Ben Burkert <[email protected] > 1358451456 -0800\n\ 317+ magicsig magic word: pretty please\n\
318+ \n\
319+ a simple commit which works\n" ;
320+
321+ git_oid id ;
322+ git_odb * odb ;
323+ git_odb_object * obj ;
324+
325+ cl_git_pass (git_commit_create_with_signature (& id , g_repo , data , sig , "magicsig" ));
326+
327+ cl_git_pass (git_repository_odb (& odb , g_repo ));
328+ cl_git_pass (git_odb_read (& obj , odb , & id ));
329+ cl_assert_equal_s (complete , git_odb_object_data (obj ));
330+
331+ git_odb_object_free (obj );
332+ git_odb_free (odb );
333+ }
334+
335+ void test_commit_write__attach_multiline_signature (void )
336+ {
337+ const char * gpgsig = "-----BEGIN PGP SIGNATURE-----\n\
338+ Version: GnuPG v1.4.12 (Darwin)\n\
339+ \n\
340+ iQIcBAABAgAGBQJQ+FMIAAoJEH+LfPdZDSs1e3EQAJMjhqjWF+WkGLHju7pTw2al\n\
341+ o6IoMAhv0Z/LHlWhzBd9e7JeCnanRt12bAU7yvYp9+Z+z+dbwqLwDoFp8LVuigl8\n\
342+ JGLcnwiUW3rSvhjdCp9irdb4+bhKUnKUzSdsR2CK4/hC0N2i/HOvMYX+BRsvqweq\n\
343+ AsAkA6dAWh+gAfedrBUkCTGhlNYoetjdakWqlGL1TiKAefEZrtA1TpPkGn92vbLq\n\
344+ SphFRUY9hVn1ZBWrT3hEpvAIcZag3rTOiRVT1X1flj8B2vGCEr3RrcwOIZikpdaW\n\
345+ who/X3xh/DGbI2RbuxmmJpxxP/8dsVchRJJzBwG+yhwU/iN3MlV2c5D69tls/Dok\n\
346+ 6VbyU4lm/ae0y3yR83D9dUlkycOnmmlBAHKIZ9qUts9X7mWJf0+yy2QxJVpjaTGG\n\
347+ cmnQKKPeNIhGJk2ENnnnzjEve7L7YJQF6itbx5VCOcsGh3Ocb3YR7DMdWjt7f8pu\n\
348+ c6j+q1rP7EpE2afUN/geSlp5i3x8aXZPDj67jImbVCE/Q1X9voCtyzGJH7MXR0N9\n\
349+ ZpRF8yzveRfMH8bwAJjSOGAFF5XkcR/RNY95o+J+QcgBLdX48h+ZdNmUf6jqlu3J\n\
350+ 7KmTXXQcOVpN6dD3CmRFsbjq+x6RHwa8u1iGn+oIkX908r97ckfB/kHKH7ZdXIJc\n\
351+ cpxtDQQMGYFpXK/71stq\n\
352+ =ozeK\n\
353+ -----END PGP SIGNATURE-----" ;
354+
355+ const char * data = "tree 6b79e22d69bf46e289df0345a14ca059dfc9bdf6\n\
356+ parent 34734e478d6cf50c27c9d69026d93974d052c454\n\
357+ author Ben Burkert <[email protected] > 1358451456 -0800\n\ 358+ committer Ben Burkert <[email protected] > 1358451456 -0800\n\ 359+ \n\
360+ a simple commit which works\n" ;
361+
362+ const char * complete = "tree 6b79e22d69bf46e289df0345a14ca059dfc9bdf6\n\
363+ parent 34734e478d6cf50c27c9d69026d93974d052c454\n\
364+ author Ben Burkert <[email protected] > 1358451456 -0800\n\ 365+ committer Ben Burkert <[email protected] > 1358451456 -0800\n\ 366+ gpgsig -----BEGIN PGP SIGNATURE-----\n\
367+ Version: GnuPG v1.4.12 (Darwin)\n\
368+ \n\
369+ iQIcBAABAgAGBQJQ+FMIAAoJEH+LfPdZDSs1e3EQAJMjhqjWF+WkGLHju7pTw2al\n\
370+ o6IoMAhv0Z/LHlWhzBd9e7JeCnanRt12bAU7yvYp9+Z+z+dbwqLwDoFp8LVuigl8\n\
371+ JGLcnwiUW3rSvhjdCp9irdb4+bhKUnKUzSdsR2CK4/hC0N2i/HOvMYX+BRsvqweq\n\
372+ AsAkA6dAWh+gAfedrBUkCTGhlNYoetjdakWqlGL1TiKAefEZrtA1TpPkGn92vbLq\n\
373+ SphFRUY9hVn1ZBWrT3hEpvAIcZag3rTOiRVT1X1flj8B2vGCEr3RrcwOIZikpdaW\n\
374+ who/X3xh/DGbI2RbuxmmJpxxP/8dsVchRJJzBwG+yhwU/iN3MlV2c5D69tls/Dok\n\
375+ 6VbyU4lm/ae0y3yR83D9dUlkycOnmmlBAHKIZ9qUts9X7mWJf0+yy2QxJVpjaTGG\n\
376+ cmnQKKPeNIhGJk2ENnnnzjEve7L7YJQF6itbx5VCOcsGh3Ocb3YR7DMdWjt7f8pu\n\
377+ c6j+q1rP7EpE2afUN/geSlp5i3x8aXZPDj67jImbVCE/Q1X9voCtyzGJH7MXR0N9\n\
378+ ZpRF8yzveRfMH8bwAJjSOGAFF5XkcR/RNY95o+J+QcgBLdX48h+ZdNmUf6jqlu3J\n\
379+ 7KmTXXQcOVpN6dD3CmRFsbjq+x6RHwa8u1iGn+oIkX908r97ckfB/kHKH7ZdXIJc\n\
380+ cpxtDQQMGYFpXK/71stq\n\
381+ =ozeK\n\
382+ -----END PGP SIGNATURE-----\n\
383+ \n\
384+ a simple commit which works\n" ;
385+
386+ git_oid one , two ;
387+ git_odb * odb ;
388+ git_odb_object * obj ;
389+
390+ cl_git_pass (git_commit_create_with_signature (& one , g_repo , data , gpgsig , "gpgsig" ));
391+ cl_git_pass (git_commit_create_with_signature (& two , g_repo , data , gpgsig , NULL ));
392+
393+ cl_assert (!git_oid_cmp (& one , & two ));
394+ cl_git_pass (git_repository_odb (& odb , g_repo ));
395+ cl_git_pass (git_odb_read (& obj , odb , & one ));
396+ cl_assert_equal_s (complete , git_odb_object_data (obj ));
397+
398+ git_odb_object_free (obj );
399+ git_odb_free (odb );
400+ }
0 commit comments