Allow non-semver packages in the Conan package registry (#20412)
A lot of existing packages do not conform to SemVer, yet, they should be allowed in the Conan package registry as-is. To achieve this, remove the SemVer check from `NewRecipeReference`, and replace it with a simple empty string check. A unit test with a non-semver version is also included. Fixes #20405. Signed-off-by: Gergely Nagy <me@gergo.csillger.hu> Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
This commit is contained in:
		
							parent
							
								
									599ae09a94
								
							
						
					
					
						commit
						4d22bda4db
					
				| 
						 | 
					@ -8,10 +8,9 @@ import (
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/modules/log"
 | 
						"code.gitea.io/gitea/modules/log"
 | 
				
			||||||
 | 
					 | 
				
			||||||
	goversion "github.com/hashicorp/go-version"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
| 
						 | 
					@ -56,7 +55,9 @@ func NewRecipeReference(name, version, user, channel, revision string) (*RecipeR
 | 
				
			||||||
	if !namePattern.MatchString(name) {
 | 
						if !namePattern.MatchString(name) {
 | 
				
			||||||
		return nil, ErrValidation
 | 
							return nil, ErrValidation
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if _, err := goversion.NewSemver(version); err != nil {
 | 
					
 | 
				
			||||||
 | 
						v := strings.TrimSpace(version)
 | 
				
			||||||
 | 
						if v == "" {
 | 
				
			||||||
		return nil, ErrValidation
 | 
							return nil, ErrValidation
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if user != "" && !namePattern.MatchString(user) {
 | 
						if user != "" && !namePattern.MatchString(user) {
 | 
				
			||||||
| 
						 | 
					@ -69,7 +70,7 @@ func NewRecipeReference(name, version, user, channel, revision string) (*RecipeR
 | 
				
			||||||
		return nil, ErrValidation
 | 
							return nil, ErrValidation
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &RecipeReference{name, version, user, channel, revision}, nil
 | 
						return &RecipeReference{name, v, user, channel, revision}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (r *RecipeReference) RevisionOrDefault() string {
 | 
					func (r *RecipeReference) RevisionOrDefault() string {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,7 @@ func TestNewRecipeReference(t *testing.T) {
 | 
				
			||||||
		{"name", "1.0", "_", "_", "", true},
 | 
							{"name", "1.0", "_", "_", "", true},
 | 
				
			||||||
		{"name", "1.0", "_", "_", "0", true},
 | 
							{"name", "1.0", "_", "_", "0", true},
 | 
				
			||||||
		{"name", "1.0", "", "", "0", true},
 | 
							{"name", "1.0", "", "", "0", true},
 | 
				
			||||||
 | 
							{"name", "1.0.0q", "", "", "0", true},
 | 
				
			||||||
		{"name", "1.0", "", "", "000000000000000000000000000000000000000000000000000000000000", false},
 | 
							{"name", "1.0", "", "", "000000000000000000000000000000000000000000000000000000000000", false},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue