mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-01-08 06:15:40 +00:00
Reduces ~140 indirect imports for plugin/framework importers (#8208)
* Avoid plugin framework importers from needing cloud provider imports Signed-off-by: Tiger Kaovilai <tkaovila@redhat.com>
This commit is contained in:
53
pkg/plugin/framework/import_test.go
Normal file
53
pkg/plugin/framework/import_test.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package framework
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// test that this package do not import cloud provider
|
||||
|
||||
// Prevent https://github.com/vmware-tanzu/velero/issues/8207 and https://github.com/vmware-tanzu/velero/issues/8157
|
||||
func TestPkgImportNoCloudProvider(t *testing.T) {
|
||||
_, filename, _, ok := runtime.Caller(0)
|
||||
if !ok {
|
||||
t.Fatalf("No caller information")
|
||||
}
|
||||
t.Logf("Current test file path: %s", filename)
|
||||
t.Logf("Current test directory: %s", filepath.Dir(filename)) // should be this package name
|
||||
// go list -f {{.Deps}} ./<path-to-this-package-dir>
|
||||
cmd := exec.Command(
|
||||
"go",
|
||||
"list",
|
||||
"-f",
|
||||
"{{.Deps}}",
|
||||
".",
|
||||
)
|
||||
// set cmd.Dir to this package even if executed from different dir
|
||||
cmd.Dir = filepath.Dir(filename)
|
||||
output, err := cmd.Output()
|
||||
require.NoError(t, err)
|
||||
// split dep by line, replace space with newline
|
||||
deps := strings.ReplaceAll(string(output), " ", "\n")
|
||||
require.NotEmpty(t, deps)
|
||||
// ignore k8s.io
|
||||
k8sio, err := regexp.Compile("^k8s.io")
|
||||
require.NoError(t, err)
|
||||
cloudProvider, err := regexp.Compile("aws|cloud.google.com|azure")
|
||||
require.NoError(t, err)
|
||||
cloudProviderDeps := []string{}
|
||||
for _, dep := range strings.Split(deps, "\n") {
|
||||
if !k8sio.MatchString(dep) {
|
||||
if cloudProvider.MatchString(dep) {
|
||||
cloudProviderDeps = append(cloudProviderDeps, dep)
|
||||
}
|
||||
}
|
||||
}
|
||||
require.Empty(t, cloudProviderDeps)
|
||||
}
|
||||
Reference in New Issue
Block a user