MCPcopy Create free account
hub / github.com/cloudnative-pg/postgres-extensions-containers / Test

Method Test

dagger/maintenance/main.go:355–463  ·  view source on GitHub ↗

Tests the specified target using Chainsaw

(
	ctx context.Context,
	// The source directory containing the extension folders. Defaults to the current directory
	// +ignore=["dagger", ".github"]
	// +defaultPath="/"
	source *dagger.Directory,
	// Kubeconfig to connect to the target K8s
	// +required
	kubeconfig *dagger.File,
	// The target extension to test
	// +default="all"
	target string,
	// Container image to use to run chainsaw
	// renovate: datasource=docker depName=kyverno/chainsaw packageName=ghcr.io/kyverno/chainsaw versioning=docker
	// +default="ghcr.io/kyverno/chainsaw:v0.2.15@sha256:527f3be2b9ec0580cb0bc84540a0fee99406b011c24ae3a30953e525af60809d"
	chainsawImage string,
	// Additional arguments to pass to Chainsaw test command
	// +optional
	extraArgs []string,
)

Source from the content-addressed store, hash-verified

353func (m *Maintenance) Test(
354 ctx context.Context,
355 // The source directory containing the extension folders. Defaults to the current directory
356 // +ignore=["dagger", ".github"]
357 // +defaultPath="/"
358 source *dagger.Directory,
359 // Kubeconfig to connect to the target K8s
360 // +required
361 kubeconfig *dagger.File,
362 // The target extension to test
363 // +default="all"
364 target string,
365 // Container image to use to run chainsaw
366 // renovate: datasource=docker depName=kyverno/chainsaw packageName=ghcr.io/kyverno/chainsaw versioning=docker
367 // +default="ghcr.io/kyverno/chainsaw:v0.2.15@sha256:527f3be2b9ec0580cb0bc84540a0fee99406b011c24ae3a30953e525af60809d"
368 chainsawImage string,
369 // Additional arguments to pass to Chainsaw test command
370 // +optional
371 extraArgs []string,
372) error {
373 extDir := source
374 if target != "all" {
375 extDir = source.Filter(dagger.DirectoryFilterOpts{
376 Include: []string{path.Join(target, "**"), "test"},
377 })
378 hasMetadataFile, err := extDir.Exists(ctx, path.Join(target, metadataFile))
379 if err != nil {
380 return err
381 }
382 if !hasMetadataFile {
383 return fmt.Errorf("not a valid target, metadata.hcl file is missing. Target: %s", target)
384 }
385 }
386
387 targetExtensions, err := extensionsDirectories(ctx, extDir)
388 if err != nil {
389 return err
390 }
391
392 const valuesFile = "values.yaml"
393
394 for _, targetExtension := range targetExtensions {
395 extName, err := targetExtension.Name(ctx)
396 if err != nil {
397 return err
398 }
399
400 hasValues, err := targetExtension.Exists(ctx, valuesFile)
401 if err != nil {
402 return err
403 }
404 if !hasValues {
405 return fmt.Errorf("cannot execute tests for extension %q, values.yaml file is missing", target)
406 }
407
408 ctr := dag.Container().From(chainsawImage).
409 WithWorkdir("e2e").
410 WithEnvVariable("CACHEBUSTER", time.Now().String()).
411 WithDirectory("test", extDir.Directory("test")).
412 WithDirectory(extName, targetExtension).

Callers

nothing calls this directly

Calls 1

extensionsDirectoriesFunction · 0.85

Tested by

no test coverage detected