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 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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. "os"
  7. "path/filepath"
  8. "testing"
  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, err := bareRepo1.GetTagInfos()
  17. assert.NoError(t, err)
  18. assert.Len(t, tags, 1)
  19. assert.EqualValues(t, "test", tags[0].Name)
  20. assert.EqualValues(t, "3ad28a9149a2864384548f3d17ed7f38014c9e8a", tags[0].ID.String())
  21. assert.EqualValues(t, "tag", tags[0].Type)
  22. }
  23. func TestRepository_GetTag(t *testing.T) {
  24. bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
  25. clonedPath, err := cloneRepo(bareRepo1Path, testReposDir, "repo1_TestRepository_GetTag")
  26. assert.NoError(t, err)
  27. defer os.RemoveAll(clonedPath)
  28. bareRepo1, err := OpenRepository(clonedPath)
  29. assert.NoError(t, err)
  30. defer bareRepo1.Close()
  31. lTagCommitID := "6fbd69e9823458e6c4a2fc5c0f6bc022b2f2acd1"
  32. lTagName := "lightweightTag"
  33. bareRepo1.CreateTag(lTagName, lTagCommitID)
  34. aTagCommitID := "8006ff9adbf0cb94da7dad9e537e53817f9fa5c0"
  35. aTagName := "annotatedTag"
  36. aTagMessage := "my annotated message"
  37. bareRepo1.CreateAnnotatedTag(aTagName, aTagMessage, aTagCommitID)
  38. aTagID, _ := bareRepo1.GetTagID(aTagName)
  39. lTag, err := bareRepo1.GetTag(lTagName)
  40. lTag.repo = nil
  41. assert.NoError(t, err)
  42. assert.NotNil(t, lTag)
  43. assert.EqualValues(t, lTagName, lTag.Name)
  44. assert.EqualValues(t, lTagCommitID, lTag.ID.String())
  45. assert.EqualValues(t, lTagCommitID, lTag.Object.String())
  46. assert.EqualValues(t, "commit", lTag.Type)
  47. aTag, err := bareRepo1.GetTag(aTagName)
  48. assert.NoError(t, err)
  49. assert.NotNil(t, aTag)
  50. assert.EqualValues(t, aTagName, aTag.Name)
  51. assert.EqualValues(t, aTagID, aTag.ID.String())
  52. assert.NotEqual(t, aTagID, aTag.Object.String())
  53. assert.EqualValues(t, aTagCommitID, aTag.Object.String())
  54. assert.EqualValues(t, "tag", aTag.Type)
  55. rTagCommitID := "8006ff9adbf0cb94da7dad9e537e53817f9fa5c0"
  56. rTagName := "release/" + lTagName
  57. bareRepo1.CreateTag(rTagName, rTagCommitID)
  58. rTagID, err := bareRepo1.GetTagID(rTagName)
  59. assert.NoError(t, err)
  60. assert.EqualValues(t, rTagCommitID, rTagID)
  61. oTagID, err := bareRepo1.GetTagID(lTagName)
  62. assert.NoError(t, err)
  63. assert.EqualValues(t, lTagCommitID, oTagID)
  64. }
  65. func TestRepository_GetAnnotatedTag(t *testing.T) {
  66. bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
  67. clonedPath, err := cloneRepo(bareRepo1Path, testReposDir, "repo1_TestRepository_GetTag")
  68. assert.NoError(t, err)
  69. defer os.RemoveAll(clonedPath)
  70. bareRepo1, err := OpenRepository(clonedPath)
  71. assert.NoError(t, err)
  72. defer bareRepo1.Close()
  73. lTagCommitID := "6fbd69e9823458e6c4a2fc5c0f6bc022b2f2acd1"
  74. lTagName := "lightweightTag"
  75. bareRepo1.CreateTag(lTagName, lTagCommitID)
  76. aTagCommitID := "8006ff9adbf0cb94da7dad9e537e53817f9fa5c0"
  77. aTagName := "annotatedTag"
  78. aTagMessage := "my annotated message"
  79. bareRepo1.CreateAnnotatedTag(aTagName, aTagMessage, aTagCommitID)
  80. aTagID, _ := bareRepo1.GetTagID(aTagName)
  81. // Try an annotated tag
  82. tag, err := bareRepo1.GetAnnotatedTag(aTagID)
  83. assert.NoError(t, err)
  84. assert.NotNil(t, tag)
  85. assert.EqualValues(t, aTagName, tag.Name)
  86. assert.EqualValues(t, aTagID, tag.ID.String())
  87. assert.EqualValues(t, "tag", tag.Type)
  88. // Annotated tag's Commit ID should fail
  89. tag2, err := bareRepo1.GetAnnotatedTag(aTagCommitID)
  90. assert.Error(t, err)
  91. assert.True(t, IsErrNotExist(err))
  92. assert.Nil(t, tag2)
  93. // Annotated tag's name should fail
  94. tag3, err := bareRepo1.GetAnnotatedTag(aTagName)
  95. assert.Error(t, err)
  96. assert.Errorf(t, err, "Length must be 40: %d", len(aTagName))
  97. assert.Nil(t, tag3)
  98. // Lightweight Tag should fail
  99. tag4, err := bareRepo1.GetAnnotatedTag(lTagCommitID)
  100. assert.Error(t, err)
  101. assert.True(t, IsErrNotExist(err))
  102. assert.Nil(t, tag4)
  103. }