You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

tag_test.go 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package git
  4. import (
  5. "testing"
  6. "time"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func Test_parseTagData(t *testing.T) {
  10. testData := []struct {
  11. data []byte
  12. tag Tag
  13. }{
  14. {data: []byte(`object 3b114ab800c6432ad42387ccf6bc8d4388a2885a
  15. type commit
  16. tag 1.22.0
  17. tagger Lucas Michot <lucas@semalead.com> 1484491741 +0100
  18. `), tag: Tag{
  19. Name: "",
  20. ID: Sha1ObjectFormat.EmptyObjectID(),
  21. Object: &Sha1Hash{0x3b, 0x11, 0x4a, 0xb8, 0x0, 0xc6, 0x43, 0x2a, 0xd4, 0x23, 0x87, 0xcc, 0xf6, 0xbc, 0x8d, 0x43, 0x88, 0xa2, 0x88, 0x5a},
  22. Type: "commit",
  23. Tagger: &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484491741, 0)},
  24. Message: "",
  25. Signature: nil,
  26. }},
  27. {data: []byte(`object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc
  28. type commit
  29. tag 1.22.1
  30. tagger Lucas Michot <lucas@semalead.com> 1484553735 +0100
  31. test message
  32. o
  33. ono`), tag: Tag{
  34. Name: "",
  35. ID: Sha1ObjectFormat.EmptyObjectID(),
  36. Object: &Sha1Hash{0x7c, 0xdf, 0x42, 0xc0, 0xb1, 0xcc, 0x76, 0x3a, 0xb7, 0xe4, 0xc3, 0x3c, 0x47, 0xa2, 0x4e, 0x27, 0xc6, 0x6b, 0xfc, 0xcc},
  37. Type: "commit",
  38. Tagger: &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484553735, 0)},
  39. Message: "test message\no\n\nono",
  40. Signature: nil,
  41. }},
  42. }
  43. for _, test := range testData {
  44. tag, err := parseTagData(Sha1ObjectFormat, test.data)
  45. assert.NoError(t, err)
  46. assert.EqualValues(t, test.tag.ID, tag.ID)
  47. assert.EqualValues(t, test.tag.Object, tag.Object)
  48. assert.EqualValues(t, test.tag.Name, tag.Name)
  49. assert.EqualValues(t, test.tag.Message, tag.Message)
  50. assert.EqualValues(t, test.tag.Type, tag.Type)
  51. if test.tag.Signature != nil && assert.NotNil(t, tag.Signature) {
  52. assert.EqualValues(t, test.tag.Signature.Signature, tag.Signature.Signature)
  53. assert.EqualValues(t, test.tag.Signature.Payload, tag.Signature.Payload)
  54. } else {
  55. assert.Nil(t, tag.Signature)
  56. }
  57. if test.tag.Tagger != nil && assert.NotNil(t, tag.Tagger) {
  58. assert.EqualValues(t, test.tag.Tagger.Name, tag.Tagger.Name)
  59. assert.EqualValues(t, test.tag.Tagger.Email, tag.Tagger.Email)
  60. assert.EqualValues(t, test.tag.Tagger.When.Unix(), tag.Tagger.When.Unix())
  61. } else {
  62. assert.Nil(t, tag.Tagger)
  63. }
  64. }
  65. }