mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	Allow local package identifiers for PyPI packages (#21690)
Fixes #21683 Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		| @@ -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 { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user