github.com/argoproj/argo-cd/v3@v3.2.1/reposerver/repository/utils_test.go (about)

     1  package repository
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/argoproj/argo-cd/v3/reposerver/apiclient"
     9  )
    10  
    11  func TestGetCommonRootPath(t *testing.T) {
    12  	t.Parallel()
    13  
    14  	repoRoot := "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731"
    15  
    16  	tests := []struct {
    17  		name             string
    18  		annotation       string
    19  		appPath          string
    20  		expectedRootPath string
    21  	}{
    22  		{"app path", ".", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/helloworld", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/helloworld"},
    23  		{"app path and relative", "../../overlays;.", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/helloworld", repoRoot},
    24  		{"app path and absolute path", "/services;.", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/helloworld", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services"},
    25  		{"several relative paths", "../../;..;.", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/team/helloworld", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services"},
    26  		// backward compatibility test
    27  		{"no annotation", "", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/helloworld", repoRoot},
    28  		// appPath should be the lower calculated root path
    29  		{"relative subdir", "./manifests", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/team/helloworld", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/team/helloworld"},
    30  		// glob pattern
    31  		{"glob", "/services/shared/*-secret.yaml", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/helloworld", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services"},
    32  		{"relative glob", "../*", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/helloworld", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services"},
    33  		{"duplicate slashes", "//services/shared/*-secret.yaml", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services/helloworld", "/tmp/_argocd-repo/7a58c52a-0030-4fd9-8cc5-35b2d8b4e731/services"},
    34  	}
    35  
    36  	for _, tt := range tests {
    37  		tt := tt
    38  		t.Run(tt.name, func(t *testing.T) {
    39  			t.Parallel()
    40  
    41  			req := &apiclient.ManifestRequest{AnnotationManifestGeneratePaths: tt.annotation}
    42  			rootPath := getApplicationRootPath(req, tt.appPath, repoRoot)
    43  			assert.Equal(t, tt.expectedRootPath, rootPath, "input and output should match")
    44  		})
    45  	}
    46  }