// +build e2e package main import ( "context" "fmt" "os" "testing" "github.com/fluxcd/flux2/internal/utils" ) func TestMain(m *testing.M) { // Ensure tests print consistent timestamps regardless of timezone os.Setenv("TZ", "UTC") // Install Flux. // Creating the test env manager sets rootArgs client flags _, err := NewTestEnvKubeManager(ExistingClusterMode) if err != nil { panic(fmt.Errorf("error creating kube manager: '%w'", err)) } output, err := executeCommand("install --components-extra=image-reflector-controller,image-automation-controller") if err != nil { panic(fmt.Errorf("install falied: %s error:'%w'", output, err)) } // Run tests code := m.Run() // Uninstall Flux output, err = executeCommand("uninstall -s --keep-namespace") if err != nil { panic(fmt.Errorf("uninstall falied: %s error:'%w'", output, err)) } // Delete namespace and wait for finalisation kubectlArgs := []string{"delete", "namespace", "flux-system"} _, err = utils.ExecKubectlCommand(context.TODO(), utils.ModeStderrOS, rootArgs.kubeconfig, rootArgs.kubecontext, kubectlArgs...) if err != nil { panic(fmt.Errorf("delete namespace error:'%w'", err)) } os.Exit(code) } func setupTestNamespace(namespace string) (func(), error) { kubectlArgs := []string{"create", "namespace", namespace} _, err := utils.ExecKubectlCommand(context.TODO(), utils.ModeStderrOS, rootArgs.kubeconfig, rootArgs.kubecontext, kubectlArgs...) if err != nil { return nil, err } return func() { kubectlArgs := []string{"delete", "namespace", namespace} utils.ExecKubectlCommand(context.TODO(), utils.ModeCapture, rootArgs.kubeconfig, rootArgs.kubecontext, kubectlArgs...) }, nil }