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