Allow local package identifiers for PyPI packages (#21690)
Fixes #21683 Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
a0367c2bf0
commit
fd89c062bd
2 changed files with 11 additions and 4 deletions
|
@ -25,8 +25,15 @@ import (
|
||||||
var normalizer = strings.NewReplacer(".", "-", "_", "-")
|
var normalizer = strings.NewReplacer(".", "-", "_", "-")
|
||||||
var nameMatcher = regexp.MustCompile(`\A[a-zA-Z0-9\.\-_]+\z`)
|
var nameMatcher = regexp.MustCompile(`\A[a-zA-Z0-9\.\-_]+\z`)
|
||||||
|
|
||||||
// https://www.python.org/dev/peps/pep-0440/#appendix-b-parsing-version-strings-with-regular-expressions
|
// https://peps.python.org/pep-0440/#appendix-b-parsing-version-strings-with-regular-expressions
|
||||||
var versionMatcher = regexp.MustCompile(`^([1-9][0-9]*!)?(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))*((a|b|rc)(0|[1-9][0-9]*))?(\.post(0|[1-9][0-9]*))?(\.dev(0|[1-9][0-9]*))?$`)
|
var versionMatcher = regexp.MustCompile(`\Av?` +
|
||||||
|
`(?:[0-9]+!)?` + // epoch
|
||||||
|
`[0-9]+(?:\.[0-9]+)*` + // release segment
|
||||||
|
`(?:[-_\.]?(?:a|b|c|rc|alpha|beta|pre|preview)[-_\.]?[0-9]*)?` + // pre-release
|
||||||
|
`(?:-[0-9]+|[-_\.]?(?:post|rev|r)[-_\.]?[0-9]*)?` + // post release
|
||||||
|
`(?:[-_\.]?dev[-_\.]?[0-9]*)?` + // dev release
|
||||||
|
`(?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)?` + // local version
|
||||||
|
`\z`)
|
||||||
|
|
||||||
func apiError(ctx *context.Context, status int, obj interface{}) {
|
func apiError(ctx *context.Context, status int, obj interface{}) {
|
||||||
helper.LogAndProcessError(ctx, status, obj, func(message string) {
|
helper.LogAndProcessError(ctx, status, obj, func(message string) {
|
||||||
|
|
|
@ -29,7 +29,7 @@ func TestPackagePyPI(t *testing.T) {
|
||||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||||
|
|
||||||
packageName := "test-package"
|
packageName := "test-package"
|
||||||
packageVersion := "1.0.1"
|
packageVersion := "1.0.1+r1234"
|
||||||
packageAuthor := "KN4CK3R"
|
packageAuthor := "KN4CK3R"
|
||||||
packageDescription := "Test Description"
|
packageDescription := "Test Description"
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ func TestPackagePyPI(t *testing.T) {
|
||||||
nodes := htmlDoc.doc.Find("a").Nodes
|
nodes := htmlDoc.doc.Find("a").Nodes
|
||||||
assert.Len(t, nodes, 2)
|
assert.Len(t, nodes, 2)
|
||||||
|
|
||||||
hrefMatcher := regexp.MustCompile(fmt.Sprintf(`%s/files/%s/%s/test\..+#sha256-%s`, root, packageName, packageVersion, hashSHA256))
|
hrefMatcher := regexp.MustCompile(fmt.Sprintf(`%s/files/%s/%s/test\..+#sha256-%s`, root, regexp.QuoteMeta(packageName), regexp.QuoteMeta(packageVersion), hashSHA256))
|
||||||
|
|
||||||
for _, a := range nodes {
|
for _, a := range nodes {
|
||||||
for _, att := range a.Attr {
|
for _, att := range a.Attr {
|
||||||
|
|
Loading…
Reference in a new issue