aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorExploding Dragon <explodingfkl@gmail.com>2024-12-19 17:41:23 +0800
committerGitHub <noreply@github.com>2024-12-19 09:41:23 +0000
commit581e52b3e78df0da7b31cea107c675dace5e871c (patch)
treee4e56763febf53448c454221af4987845f175955 /modules
parent141d782c1abd4fcaadbdff453aecb1969d8c3f0d (diff)
downloadgitea-581e52b3e78df0da7b31cea107c675dace5e871c.tar.gz
gitea-581e52b3e78df0da7b31cea107c675dace5e871c.zip
Relax the version checking for Arch packages (#32908)
It is mentioned in https://man.archlinux.org/man/PKGBUILD.5: 'The variable is not allowed to contain colons, forward slashes, hyphens, or whitespace.' `_` is also an allowed character, and some software in the Arch Linux AUR uses this naming convention. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'modules')
-rw-r--r--modules/packages/arch/metadata.go5
-rw-r--r--modules/packages/arch/metadata_test.go8
2 files changed, 11 insertions, 2 deletions
diff --git a/modules/packages/arch/metadata.go b/modules/packages/arch/metadata.go
index 06a2206a36..3d7bdf3997 100644
--- a/modules/packages/arch/metadata.go
+++ b/modules/packages/arch/metadata.go
@@ -43,8 +43,9 @@ var (
ErrInvalidArchitecture = util.NewInvalidArgumentErrorf("package architecture is invalid")
// https://man.archlinux.org/man/PKGBUILD.5
- namePattern = regexp.MustCompile(`\A[a-zA-Z0-9@._+-]+\z`)
- versionPattern = regexp.MustCompile(`\A(?:[0-9]:)?[a-zA-Z0-9.+~]+(?:-[a-zA-Z0-9.+-~]+)?\z`)
+ namePattern = regexp.MustCompile(`\A[a-zA-Z0-9@._+-]+\z`)
+ // (epoch:pkgver-pkgrel)
+ versionPattern = regexp.MustCompile(`\A(?:\d:)?[\w.+~]+(?:-[-\w.+~]+)?\z`)
)
type Package struct {
diff --git a/modules/packages/arch/metadata_test.go b/modules/packages/arch/metadata_test.go
index 37c0a553b8..5bdf63a3ee 100644
--- a/modules/packages/arch/metadata_test.go
+++ b/modules/packages/arch/metadata_test.go
@@ -122,6 +122,14 @@ func TestParsePackageInfo(t *testing.T) {
assert.ErrorIs(t, err, ErrInvalidName)
})
+ t.Run("Regexp", func(t *testing.T) {
+ assert.Regexp(t, versionPattern, "1.2_3~4+5")
+ assert.Regexp(t, versionPattern, "1:2_3~4+5")
+ assert.NotRegexp(t, versionPattern, "a:1.0.0-1")
+ assert.NotRegexp(t, versionPattern, "0.0.1/1-1")
+ assert.NotRegexp(t, versionPattern, "1.0.0 -1")
+ })
+
t.Run("InvalidVersion", func(t *testing.T) {
data := createPKGINFOContent(packageName, "")