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