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  }