@@ -12,62 +12,86 @@ import (
1212
1313func Test_parseTagData (t * testing.T ) {
1414 testData := []struct {
15- data [] byte
16- tag Tag
15+ data string
16+ expected Tag
1717 }{
18- {data : []byte (`object 3b114ab800c6432ad42387ccf6bc8d4388a2885a
18+ {
19+ data : `object 3b114ab800c6432ad42387ccf6bc8d4388a2885a
1920type commit
2021tag 1.22.0
2122tagger Lucas Michot <[email protected] > 1484491741 +0100 2223
23- ` ), tag : Tag {
24- Name : "" ,
25- ID : Sha1ObjectFormat .EmptyObjectID (),
26- Object : & Sha1Hash {0x3b , 0x11 , 0x4a , 0xb8 , 0x0 , 0xc6 , 0x43 , 0x2a , 0xd4 , 0x23 , 0x87 , 0xcc , 0xf6 , 0xbc , 0x8d , 0x43 , 0x88 , 0xa2 , 0x88 , 0x5a },
27- Type : "commit" ,
28- Tagger :
& Signature {
Name :
"Lucas Michot" ,
Email :
"[email protected] " ,
When :
time .
Unix (
1484491741 ,
0 )},
29- Message : "" ,
30- Signature : nil ,
31- }},
32- {data : []byte (`object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc
24+ ` ,
25+ expected : Tag {
26+ Name : "" ,
27+ ID : Sha1ObjectFormat .EmptyObjectID (),
28+ Object : MustIDFromString ("3b114ab800c6432ad42387ccf6bc8d4388a2885a" ),
29+ Type : "commit" ,
30+ Tagger :
& Signature {
Name :
"Lucas Michot" ,
Email :
"[email protected] " ,
When :
time .
Unix (
1484491741 ,
0 ).
In (
time .
FixedZone (
"" ,
3600 ))},
31+ Message : "" ,
32+ Signature : nil ,
33+ },
34+ },
35+ {
36+ data : `object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc
3337type commit
3438tag 1.22.1
3539tagger Lucas Michot <[email protected] > 1484553735 +0100 3640
3741test message
3842o
3943
40- ono` ), tag : Tag {
41- Name : "" ,
42- ID : Sha1ObjectFormat .EmptyObjectID (),
43- Object : & Sha1Hash {0x7c , 0xdf , 0x42 , 0xc0 , 0xb1 , 0xcc , 0x76 , 0x3a , 0xb7 , 0xe4 , 0xc3 , 0x3c , 0x47 , 0xa2 , 0x4e , 0x27 , 0xc6 , 0x6b , 0xfc , 0xcc },
44- Type : "commit" ,
45- Tagger :
& Signature {
Name :
"Lucas Michot" ,
Email :
"[email protected] " ,
When :
time .
Unix (
1484553735 ,
0 )},
46- Message : "test message\n o\n \n ono" ,
47- Signature : nil ,
48- }},
44+ ono` ,
45+ expected : Tag {
46+ Name : "" ,
47+ ID : Sha1ObjectFormat .EmptyObjectID (),
48+ Object : MustIDFromString ("7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" ),
49+ Type : "commit" ,
50+ Tagger :
& Signature {
Name :
"Lucas Michot" ,
Email :
"[email protected] " ,
When :
time .
Unix (
1484553735 ,
0 ).
In (
time .
FixedZone (
"" ,
3600 ))},
51+ Message : "test message\n o\n \n ono" ,
52+ Signature : nil ,
53+ },
54+ },
55+ {
56+ data : `object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfaaa
57+ type commit
58+ tag v0
59+ tagger dummy user <[email protected] > 1484491741 +0100 60+
61+ dummy message
62+ -----BEGIN SSH SIGNATURE-----
63+ dummy signature
64+ -----END SSH SIGNATURE-----
65+ ` ,
66+ expected : Tag {
67+ Name : "" ,
68+ ID : Sha1ObjectFormat .EmptyObjectID (),
69+ Object : MustIDFromString ("7cdf42c0b1cc763ab7e4c33c47a24e27c66bfaaa" ),
70+ Type : "commit" ,
71+ Tagger :
& Signature {
Name :
"dummy user" ,
Email :
"[email protected] " ,
When :
time .
Unix (
1484491741 ,
0 ).
In (
time .
FixedZone (
"" ,
3600 ))},
72+ Message : "dummy message" ,
73+ Signature : & CommitSignature {
74+ Signature : `-----BEGIN SSH SIGNATURE-----
75+ dummy signature
76+ -----END SSH SIGNATURE-----` ,
77+ Payload : `object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfaaa
78+ type commit
79+ tag v0
80+ tagger dummy user <[email protected] > 1484491741 +0100 81+
82+ dummy message` ,
83+ },
84+ },
85+ },
4986 }
5087
5188 for _ , test := range testData {
52- tag , err := parseTagData (Sha1ObjectFormat , test .data )
89+ tag , err := parseTagData (Sha1ObjectFormat , [] byte ( test .data ) )
5390 assert .NoError (t , err )
54- assert .EqualValues (t , test .tag .ID , tag .ID )
55- assert .EqualValues (t , test .tag .Object , tag .Object )
56- assert .EqualValues (t , test .tag .Name , tag .Name )
57- assert .EqualValues (t , test .tag .Message , tag .Message )
58- assert .EqualValues (t , test .tag .Type , tag .Type )
59- if test .tag .Signature != nil && assert .NotNil (t , tag .Signature ) {
60- assert .EqualValues (t , test .tag .Signature .Signature , tag .Signature .Signature )
61- assert .EqualValues (t , test .tag .Signature .Payload , tag .Signature .Payload )
62- } else {
63- assert .Nil (t , tag .Signature )
64- }
65- if test .tag .Tagger != nil && assert .NotNil (t , tag .Tagger ) {
66- assert .EqualValues (t , test .tag .Tagger .Name , tag .Tagger .Name )
67- assert .EqualValues (t , test .tag .Tagger .Email , tag .Tagger .Email )
68- assert .EqualValues (t , test .tag .Tagger .When .Unix (), tag .Tagger .When .Unix ())
69- } else {
70- assert .Nil (t , tag .Tagger )
71- }
91+ assert .Equal (t , test .expected , * tag )
7292 }
93+
94+ tag , err := parseTagData (Sha1ObjectFormat , []byte ("type commit\n \n foo\n -----BEGIN SSH SIGNATURE-----\n corrupted..." ))
95+ assert .NoError (t , err )
96+ assert .Equal (t , "foo\n -----BEGIN SSH SIGNATURE-----\n corrupted..." , tag .Message )
7397}
0 commit comments