選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

repo_tag_test.go 3.8KB

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