From 4c08e2b0b9a7fb1b99ae79d913626ecf08624eca Mon Sep 17 00:00:00 2001 From: Sergey Smolnikov <ssmol@equinor.com> Date: Thu, 16 Jan 2025 16:35:51 +0100 Subject: [PATCH] Fixed branch matcher pattern replacer --- charts/radix-operator/Chart.yaml | 4 +- pkg/apis/utils/branch/path_matcher.go | 2 +- pkg/apis/utils/branch/path_matcher_test.go | 43 +++++++++++++++++++--- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/charts/radix-operator/Chart.yaml b/charts/radix-operator/Chart.yaml index f11a12a64..f4dfb025a 100644 --- a/charts/radix-operator/Chart.yaml +++ b/charts/radix-operator/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v2 name: radix-operator -version: 1.48.3 -appVersion: 1.68.3 +version: 1.48.4 +appVersion: 1.68.4 kubeVersion: ">=1.24.0" description: Radix Operator keywords: diff --git a/pkg/apis/utils/branch/path_matcher.go b/pkg/apis/utils/branch/path_matcher.go index f3059de4b..f9cd1e479 100644 --- a/pkg/apis/utils/branch/path_matcher.go +++ b/pkg/apis/utils/branch/path_matcher.go @@ -12,7 +12,7 @@ const ( ) var ( - patternReplacer = strings.NewReplacer("/**/", "/.*", "*", "[^/]*", "?", ".") + patternReplacer = strings.NewReplacer("/**/", "/.*", "*", ".*", "?", ".") ) // IsValidPattern Checks that the path is a branch pattern diff --git a/pkg/apis/utils/branch/path_matcher_test.go b/pkg/apis/utils/branch/path_matcher_test.go index 0c231f46a..203192e65 100644 --- a/pkg/apis/utils/branch/path_matcher_test.go +++ b/pkg/apis/utils/branch/path_matcher_test.go @@ -1,6 +1,7 @@ package branch import ( + "strings" "testing" "github.com/stretchr/testify/assert" @@ -23,18 +24,44 @@ func TestIsValidPattern(t *testing.T) { assert.True(t, IsValidPattern("??st")) assert.True(t, IsValidPattern("?est/*")) assert.True(t, IsValidPattern("te?t/*")) + assert.True(t, IsValidPattern("*")) + assert.True(t, IsValidPattern("**")) + assert.True(t, IsValidPattern(".*")) + assert.True(t, IsValidPattern(".*/*")) + assert.True(t, IsValidPattern(".**")) + assert.True(t, IsValidPattern("test-test")) + assert.True(t, IsValidPattern("**/test")) + assert.True(t, IsValidPattern("**/*")) } func TestMatchesPattern(t *testing.T) { assert.False(t, MatchesPattern("Test", "test")) assert.False(t, MatchesPattern("release", "release/0.1.3")) assert.False(t, MatchesPattern("release", "release/q3/0.1.3")) - assert.False(t, MatchesPattern("release/*", "release/q3/0.1.3")) assert.False(t, MatchesPattern("release/*", "release")) assert.False(t, MatchesPattern("release/**/*", "release")) - assert.False(t, MatchesPattern("test/*/tull", "test/test1/test2/tull")) + assert.False(t, MatchesPattern("(test)|(main)/*", "release/t")) + assert.False(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+", "v1q.0.2")) + assert.False(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+", "v1..2")) + assert.False(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+", "v1.2")) + assert.False(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+\\.*", "v1.2.20-asdf")) + assert.True(t, MatchesPattern("release/*", "release/q3/0.1.3")) + assert.True(t, MatchesPattern("test/*/tull", "test/test1/test2/tull")) + assert.True(t, MatchesPattern("**", "test")) + assert.True(t, MatchesPattern("**", "test/test-test")) + assert.True(t, MatchesPattern("*/**/*", "test/test2/test3")) + assert.True(t, MatchesPattern("test/**/test3", "test/test2/test3")) + assert.True(t, MatchesPattern("test/**/test3", "test/test2/test3")) + assert.True(t, MatchesPattern(".**", "test/test-test")) + assert.True(t, MatchesPattern("**", "test-test")) assert.True(t, MatchesPattern("test", "test")) + assert.True(t, MatchesPattern("*", "test")) + assert.True(t, MatchesPattern("*", "test/test-test")) + assert.True(t, MatchesPattern(".*", "test/test-test")) + assert.True(t, MatchesPattern("*", "test-test")) + assert.True(t, MatchesPattern("test/*", "test/test")) + assert.True(t, MatchesPattern("*", "test/test")) assert.True(t, MatchesPattern("te??", "test")) assert.True(t, MatchesPattern("??st", "test")) assert.True(t, MatchesPattern("*", "test")) @@ -48,8 +75,12 @@ func TestMatchesPattern(t *testing.T) { assert.True(t, MatchesPattern("release/**/*", "release/q3/0.1.3")) assert.True(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+", "v1.0.2")) assert.True(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+", "v123.033.2112")) - assert.False(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+", "v1q.0.2")) - assert.False(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+", "v1..2")) - assert.False(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+", "v1.2")) - assert.False(t, MatchesPattern("v\\d+\\.\\d+\\.\\d+\\.*", "v1.2.20-asdf")) + assert.True(t, MatchesPattern("(test)|(main)/*", "test/t")) + assert.True(t, MatchesPattern("(test)|(main)/*", "main/t")) +} + +func TestMatchesPattern2(t *testing.T) { + replace := strings.NewReplacer("**", "*", ".**", ".*", "*", ".*", "..*", ".*").Replace("*/w*f**f*.***.**.*") + assert.NotEmpty(t, replace) + //assert.True(t, MatchesPattern(".**", "test/test-test")) }