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.

repo_tag_test.go 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package git
  5. import (
  6. "path/filepath"
  7. "testing"
  8. "code.gitea.io/gitea/modules/util"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestRepository_GetTags(t *testing.T) {
  12. bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
  13. bareRepo1, err := OpenRepository(bareRepo1Path)
  14. assert.NoError(t, err)
  15. defer bareRepo1.Close()
  16. tags, total, err := bareRepo1.GetTagInfos(0, 0)
  17. assert.NoError(t, err)
  18. assert.Len(t, tags, 1)
  19. assert.Equal(t, len(tags), total)
  20. assert.EqualValues(t, "test", tags[0].Name)
  21. assert.EqualValues(t, "3ad28a9149a2864384548f3d17ed7f38014c9e8a", tags[0].ID.String())
  22. assert.EqualValues(t, "tag", tags[0].Type)
  23. }
  24. func TestRepository_GetTag(t *testing.T) {
  25. bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
  26. clonedPath, err := cloneRepo(bareRepo1Path, testReposDir, "repo1_TestRepository_GetTag")
  27. assert.NoError(t, err)
  28. defer util.RemoveAll(clonedPath)
  29. bareRepo1, err := OpenRepository(clonedPath)
  30. assert.NoError(t, err)
  31. defer bareRepo1.Close()
  32. lTagCommitID := "6fbd69e9823458e6c4a2fc5c0f6bc022b2f2acd1"
  33. lTagName := "lightweightTag"
  34. bareRepo1.CreateTag(lTagName, lTagCommitID)
  35. aTagCommitID := "8006ff9adbf0cb94da7dad9e537e53817f9fa5c0"
  36. aTagName := "annotatedTag"
  37. aTagMessage := "my annotated message \n - test two line"
  38. bareRepo1.CreateAnnotatedTag(aTagName, aTagMessage, aTagCommitID)
  39. aTagID, _ := bareRepo1.GetTagID(aTagName)
  40. lTag, err := bareRepo1.GetTag(lTagName)
  41. lTag.repo = nil
  42. assert.NoError(t, err)
  43. assert.NotNil(t, lTag)
  44. assert.EqualValues(t, lTagName, lTag.Name)
  45. assert.EqualValues(t, lTagCommitID, lTag.ID.String())
  46. assert.EqualValues(t, lTagCommitID, lTag.Object.String())
  47. assert.EqualValues(t, "commit", lTag.Type)
  48. aTag, err := bareRepo1.GetTag(aTagName)
  49. assert.NoError(t, err)
  50. assert.NotNil(t, aTag)
  51. assert.EqualValues(t, aTagName, aTag.Name)
  52. assert.EqualValues(t, aTagID, aTag.ID.String())
  53. assert.NotEqual(t, aTagID, aTag.Object.String())
  54. assert.EqualValues(t, aTagCommitID, aTag.Object.String())
  55. assert.EqualValues(t, "tag", aTag.Type)
  56. rTagCommitID := "8006ff9adbf0cb94da7dad9e537e53817f9fa5c0"
  57. rTagName := "release/" + lTagName
  58. bareRepo1.CreateTag(rTagName, rTagCommitID)
  59. rTagID, err := bareRepo1.GetTagID(rTagName)
  60. assert.NoError(t, err)
  61. assert.EqualValues(t, rTagCommitID, rTagID)
  62. oTagID, err := bareRepo1.GetTagID(lTagName)
  63. assert.NoError(t, err)
  64. assert.EqualValues(t, lTagCommitID, oTagID)
  65. }
  66. func TestRepository_GetAnnotatedTag(t *testing.T) {
  67. bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
  68. clonedPath, err := cloneRepo(bareRepo1Path, testReposDir, "repo1_TestRepository_GetTag")
  69. assert.NoError(t, err)
  70. defer util.RemoveAll(clonedPath)
  71. bareRepo1, err := OpenRepository(clonedPath)
  72. assert.NoError(t, err)
  73. defer bareRepo1.Close()
  74. lTagCommitID := "6fbd69e9823458e6c4a2fc5c0f6bc022b2f2acd1"
  75. lTagName := "lightweightTag"
  76. bareRepo1.CreateTag(lTagName, lTagCommitID)
  77. aTagCommitID := "8006ff9adbf0cb94da7dad9e537e53817f9fa5c0"
  78. aTagName := "annotatedTag"
  79. aTagMessage := "my annotated message"
  80. bareRepo1.CreateAnnotatedTag(aTagName, aTagMessage, aTagCommitID)
  81. aTagID, _ := bareRepo1.GetTagID(aTagName)
  82. // Try an annotated tag
  83. tag, err := bareRepo1.GetAnnotatedTag(aTagID)
  84. assert.NoError(t, err)
  85. assert.NotNil(t, tag)
  86. assert.EqualValues(t, aTagName, tag.Name)
  87. assert.EqualValues(t, aTagID, tag.ID.String())
  88. assert.EqualValues(t, "tag", tag.Type)
  89. // Annotated tag's Commit ID should fail
  90. tag2, err := bareRepo1.GetAnnotatedTag(aTagCommitID)
  91. assert.Error(t, err)
  92. assert.True(t, IsErrNotExist(err))
  93. assert.Nil(t, tag2)
  94. // Annotated tag's name should fail
  95. tag3, err := bareRepo1.GetAnnotatedTag(aTagName)
  96. assert.Error(t, err)
  97. assert.Errorf(t, err, "Length must be 40: %d", len(aTagName))
  98. assert.Nil(t, tag3)
  99. // Lightweight Tag should fail
  100. tag4, err := bareRepo1.GetAnnotatedTag(lTagCommitID)
  101. assert.Error(t, err)
  102. assert.True(t, IsErrNotExist(err))
  103. assert.Nil(t, tag4)
  104. }