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.

reference_test.go 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package conan
  4. import (
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestNewRecipeReference(t *testing.T) {
  9. cases := []struct {
  10. Name string
  11. Version string
  12. User string
  13. Channel string
  14. Revision string
  15. IsValid bool
  16. }{
  17. {"", "", "", "", "", false},
  18. {"name", "", "", "", "", false},
  19. {"", "1.0", "", "", "", false},
  20. {"", "", "user", "", "", false},
  21. {"", "", "", "channel", "", false},
  22. {"", "", "", "", "0", false},
  23. {"name", "1.0", "", "", "", true},
  24. {"name", "1.0", "user", "", "", false},
  25. {"name", "1.0", "", "channel", "", false},
  26. {"name", "1.0", "user", "channel", "", true},
  27. {"name", "1.0", "_", "", "", true},
  28. {"name", "1.0", "", "_", "", true},
  29. {"name", "1.0", "_", "_", "", true},
  30. {"name", "1.0", "_", "_", "0", true},
  31. {"name", "1.0", "", "", "0", true},
  32. {"name", "1.0.0q", "", "", "0", true},
  33. {"name", "1.0", "", "", "000000000000000000000000000000000000000000000000000000000000", false},
  34. }
  35. for i, c := range cases {
  36. rref, err := NewRecipeReference(c.Name, c.Version, c.User, c.Channel, c.Revision)
  37. if c.IsValid {
  38. assert.NoError(t, err, "case %d, should be invalid", i)
  39. assert.NotNil(t, rref, "case %d, should not be nil", i)
  40. } else {
  41. assert.Error(t, err, "case %d, should be valid", i)
  42. }
  43. }
  44. }
  45. func TestRecipeReferenceRevisionOrDefault(t *testing.T) {
  46. rref, err := NewRecipeReference("name", "1.0", "", "", "")
  47. assert.NoError(t, err)
  48. assert.Equal(t, DefaultRevision, rref.RevisionOrDefault())
  49. rref, err = NewRecipeReference("name", "1.0", "", "", DefaultRevision)
  50. assert.NoError(t, err)
  51. assert.Equal(t, DefaultRevision, rref.RevisionOrDefault())
  52. rref, err = NewRecipeReference("name", "1.0", "", "", "Az09")
  53. assert.NoError(t, err)
  54. assert.Equal(t, "Az09", rref.RevisionOrDefault())
  55. }
  56. func TestRecipeReferenceString(t *testing.T) {
  57. rref, err := NewRecipeReference("name", "1.0", "", "", "")
  58. assert.NoError(t, err)
  59. assert.Equal(t, "name/1.0", rref.String())
  60. rref, err = NewRecipeReference("name", "1.0", "user", "channel", "")
  61. assert.NoError(t, err)
  62. assert.Equal(t, "name/1.0@user/channel", rref.String())
  63. rref, err = NewRecipeReference("name", "1.0", "user", "channel", "Az09")
  64. assert.NoError(t, err)
  65. assert.Equal(t, "name/1.0@user/channel#Az09", rref.String())
  66. }
  67. func TestRecipeReferenceLinkName(t *testing.T) {
  68. rref, err := NewRecipeReference("name", "1.0", "", "", "")
  69. assert.NoError(t, err)
  70. assert.Equal(t, "name/1.0/_/_/0", rref.LinkName())
  71. rref, err = NewRecipeReference("name", "1.0", "user", "channel", "")
  72. assert.NoError(t, err)
  73. assert.Equal(t, "name/1.0/user/channel/0", rref.LinkName())
  74. rref, err = NewRecipeReference("name", "1.0", "user", "channel", "Az09")
  75. assert.NoError(t, err)
  76. assert.Equal(t, "name/1.0/user/channel/Az09", rref.LinkName())
  77. }
  78. func TestNewPackageReference(t *testing.T) {
  79. rref, _ := NewRecipeReference("name", "1.0", "", "", "")
  80. cases := []struct {
  81. Recipe *RecipeReference
  82. Reference string
  83. Revision string
  84. IsValid bool
  85. }{
  86. {nil, "", "", false},
  87. {rref, "", "", false},
  88. {nil, "aZ09", "", false},
  89. {rref, "aZ09", "", true},
  90. {rref, "", "Az09", false},
  91. {rref, "aZ09", "Az09", true},
  92. }
  93. for i, c := range cases {
  94. pref, err := NewPackageReference(c.Recipe, c.Reference, c.Revision)
  95. if c.IsValid {
  96. assert.NoError(t, err, "case %d, should be invalid", i)
  97. assert.NotNil(t, pref, "case %d, should not be nil", i)
  98. } else {
  99. assert.Error(t, err, "case %d, should be valid", i)
  100. }
  101. }
  102. }
  103. func TestPackageReferenceRevisionOrDefault(t *testing.T) {
  104. rref, _ := NewRecipeReference("name", "1.0", "", "", "")
  105. pref, err := NewPackageReference(rref, "ref", "")
  106. assert.NoError(t, err)
  107. assert.Equal(t, DefaultRevision, pref.RevisionOrDefault())
  108. pref, err = NewPackageReference(rref, "ref", DefaultRevision)
  109. assert.NoError(t, err)
  110. assert.Equal(t, DefaultRevision, pref.RevisionOrDefault())
  111. pref, err = NewPackageReference(rref, "ref", "Az09")
  112. assert.NoError(t, err)
  113. assert.Equal(t, "Az09", pref.RevisionOrDefault())
  114. }
  115. func TestPackageReferenceLinkName(t *testing.T) {
  116. rref, _ := NewRecipeReference("name", "1.0", "", "", "")
  117. pref, err := NewPackageReference(rref, "ref", "")
  118. assert.NoError(t, err)
  119. assert.Equal(t, "ref/0", pref.LinkName())
  120. pref, err = NewPackageReference(rref, "ref", "Az09")
  121. assert.NoError(t, err)
  122. assert.Equal(t, "ref/Az09", pref.LinkName())
  123. }