Skip to content

Commit 07c7a67

Browse files
✨ allow pass the assets path via the enviroment config
1 parent 08cb9ee commit 07c7a67

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

pkg/envtest/server.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,18 @@ const (
6262
defaultKubebuilderControlPlaneStopTimeout = 20 * time.Second
6363
)
6464

65-
// Default binary path for test framework
66-
func defaultAssetPath(binary string) string {
67-
assetPath := os.Getenv(envKubebuilderPath)
68-
if assetPath == "" {
69-
assetPath = defaultKubebuilderPath
65+
// getBinAssetPath will return the path for the binary informed
66+
func (te *Environment) getBinAssetPath(binary string) string {
67+
valueFromEnvVar := os.Getenv(envKubebuilderPath)
68+
if valueFromEnvVar != "" {
69+
return filepath.Join(valueFromEnvVar, binary)
7070
}
71-
return filepath.Join(assetPath, binary)
7271

72+
if te.BinaryAssetsDirectory != "" {
73+
return filepath.Join(te.BinaryAssetsDirectory, binary)
74+
}
75+
76+
return filepath.Join(defaultKubebuilderPath, binary)
7377
}
7478

7579
// ControlPlane is the re-exported ControlPlane type from the internal integration package
@@ -113,6 +117,10 @@ type Environment struct {
113117
// values are merged.
114118
CRDDirectoryPaths []string
115119

120+
// BinaryAssetsDirectory is the path where the binaries required for the envtest are
121+
// locate in the environment
122+
BinaryAssetsDirectory string
123+
116124
// UseExisting indicates that this environments should use an
117125
// existing kubeconfig, instead of trying to stand up a new control plane.
118126
// This is useful in cases that need aggregated API servers and the like.
@@ -217,14 +225,14 @@ func (te *Environment) Start() (*rest.Config, error) {
217225
}
218226

219227
if os.Getenv(envKubeAPIServerBin) == "" {
220-
te.ControlPlane.APIServer.Path = defaultAssetPath("kube-apiserver")
228+
te.ControlPlane.APIServer.Path = te.getBinAssetPath("kube-apiserver")
221229
}
222230
if os.Getenv(envEtcdBin) == "" {
223-
te.ControlPlane.Etcd.Path = defaultAssetPath("etcd")
231+
te.ControlPlane.Etcd.Path = te.getBinAssetPath("etcd")
224232
}
225233
if os.Getenv(envKubectlBin) == "" {
226234
// we can't just set the path manually (it's behind a function), so set the environment variable instead
227-
if err := os.Setenv(envKubectlBin, defaultAssetPath("kubectl")); err != nil {
235+
if err := os.Setenv(envKubectlBin, te.getBinAssetPath("kubectl")); err != nil {
228236
return nil, err
229237
}
230238
}

0 commit comments

Comments
 (0)