gitea

Development moved to Codeberg

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
// Copyright 2020 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package git

import (
	"testing"
	"time"

	"github.com/stretchr/testify/assert"
)

func Test_parseTagData(t *testing.T) {
	testData := []struct {
		data []byte
		tag  Tag
	}{
		{data: []byte(`object 3b114ab800c6432ad42387ccf6bc8d4388a2885a
type commit
tag 1.22.0
tagger Lucas Michot <lucas@semalead.com> 1484491741 +0100

`), tag: Tag{
			Name:      "",
			ID:        SHA1{},
			Object:    SHA1{0x3b, 0x11, 0x4a, 0xb8, 0x0, 0xc6, 0x43, 0x2a, 0xd4, 0x23, 0x87, 0xcc, 0xf6, 0xbc, 0x8d, 0x43, 0x88, 0xa2, 0x88, 0x5a},
			Type:      "commit",
			Tagger:    &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484491741, 0)},
			Message:   "",
			Signature: nil,
		}},
		{data: []byte(`object 7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc
type commit
tag 1.22.1
tagger Lucas Michot <lucas@semalead.com> 1484553735 +0100

test message
o

ono`), tag: Tag{
			Name:      "",
			ID:        SHA1{},
			Object:    SHA1{0x7c, 0xdf, 0x42, 0xc0, 0xb1, 0xcc, 0x76, 0x3a, 0xb7, 0xe4, 0xc3, 0x3c, 0x47, 0xa2, 0x4e, 0x27, 0xc6, 0x6b, 0xfc, 0xcc},
			Type:      "commit",
			Tagger:    &Signature{Name: "Lucas Michot", Email: "lucas@semalead.com", When: time.Unix(1484553735, 0)},
			Message:   "test message\no\n\nono",
			Signature: nil,
		}},
	}

	for _, test := range testData {
		tag, err := parseTagData(test.data)
		assert.NoError(t, err)
		assert.EqualValues(t, test.tag.ID, tag.ID)
		assert.EqualValues(t, test.tag.Object, tag.Object)
		assert.EqualValues(t, test.tag.Name, tag.Name)
		assert.EqualValues(t, test.tag.Message, tag.Message)
		assert.EqualValues(t, test.tag.Type, tag.Type)
		if test.tag.Signature != nil && assert.NotNil(t, tag.Signature) {
			assert.EqualValues(t, test.tag.Signature.Signature, tag.Signature.Signature)
			assert.EqualValues(t, test.tag.Signature.Payload, tag.Signature.Payload)
		} else {
			assert.Nil(t, tag.Signature)
		}
		if test.tag.Tagger != nil && assert.NotNil(t, tag.Tagger) {
			assert.EqualValues(t, test.tag.Tagger.Name, tag.Tagger.Name)
			assert.EqualValues(t, test.tag.Tagger.Email, tag.Tagger.Email)
			assert.EqualValues(t, test.tag.Tagger.When.Unix(), tag.Tagger.When.Unix())
		} else {
			assert.Nil(t, tag.Tagger)
		}
	}
}