Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
c0dc83f
✨ e2e: isolate tests with per-scenario dynamic catalogs (#2651)
joelanford Apr 23, 2026
a47a0b4
:seedling: Bump github.com/moby/spdystream from 0.5.0 to 0.5.1 (#2669)
dependabot[bot] Apr 23, 2026
6415a1c
:seedling: Bump golang.org/x/mod from 0.34.0 to 0.35.0 (#2670)
dependabot[bot] Apr 23, 2026
c8585e9
:seedling: Bump platformdirs from 4.9.4 to 4.9.6 (#2671)
dependabot[bot] Apr 23, 2026
967be14
tests: add unit and e2e tests for HTTPS_PROXY support (#2654)
tmshort Apr 24, 2026
7277a46
:seedling: Bump golang.org/x/tools from 0.43.0 to 0.44.0 (#2673)
dependabot[bot] Apr 24, 2026
d512ce4
Merge branch 'main' into synchronize
Apr 25, 2026
72d170e
UPSTREAM: <carry>: Add OpenShift specific files
dtfranz Oct 26, 2023
aa49577
UPSTREAM: <carry>: Add new tests for single/own namespaces install modes
camilamacedo86 Oct 6, 2025
926246a
UPSTREAM: <carry>: Upgrade OCP image from 4.20 to 4.21
camilamacedo86 Oct 13, 2025
2e1874b
UPSTREAM: <carry>: [Default Catalog Tests] - Change logic to get ocp …
camilamacedo86 Oct 13, 2025
2421df4
UPSTREAM: <carry>: Update OCP catalogs to v4.21
tmshort Oct 13, 2025
20e7961
UPSTREAM: <carry>: support singleown cases in disconnected
kuiwang02 Oct 16, 2025
1a265fa
UPSTREAM: <carry>: fix cases 81696 and 74618 for product code changes
kuiwang02 Oct 17, 2025
d824b9a
UPSTREAM: <carry>: Define Default timeouts and apply their usage accr…
camilamacedo86 Oct 22, 2025
136f9c6
UPSTREAM: <carry>: Update to new feature-gate options in helm
tmshort Oct 22, 2025
02ced2b
UPSTREAM: <carry>: Fix flake for single/own ns tests by ensuring uniq…
camilamacedo86 Oct 22, 2025
3ac827f
UPSTREAM: <carry>: [OTE]: Enhance single/own ns based on review comme…
camilamacedo86 Oct 24, 2025
5b7249d
UPSTREAM: <carry>: Update OwnSingle template to use spec.config.inlin…
kuiwang02 Nov 3, 2025
bc0feaa
UPSTREAM: <carry>: [OTE]: Add webhook cleanup validation on extension…
camilamacedo86 Nov 4, 2025
0c40bae
UPSTREAM: <carry>: Add [OTP] to migrated cases
kuiwang02 Nov 7, 2025
dc794dd
UPSTREAM: <carry>: [OTE]: Upgrade dependencies used
camilamacedo86 Nov 5, 2025
c72aad8
UPSTREAM: <carry>: fix(OTE): fix OpenShift Kubernetes replace version…
camilamacedo86 Nov 10, 2025
d0a28d4
UPSTREAM: <carry>: [Default Catalog Tests] Upgrade go 1.24.6 and depe…
camilamacedo86 Nov 11, 2025
be6d702
UPSTREAM: <carry>: add disconnected environment support with custom p…
kuiwang02 Nov 12, 2025
f67c44b
UPSTREAM: <carry>: migrate jiazha test cases to OTE
jianzhangbjz Nov 14, 2025
89a5485
UPSTREAM: <carry>: migrate clustercatalog case to ote
Xia-Zhao-rh Oct 17, 2025
aee7acf
UPSTREAM: <carry>: migrate olmv1 QE stress cases
kuiwang02 Nov 20, 2025
e269c16
UPSTREAM: <carry>: Use busybox/httpd to simulate probes
tmshort Nov 25, 2025
8bb9566
UPSTREAM: <carry>: migrate olmv1 QE cases
Xia-Zhao-rh Nov 25, 2025
a7241ac
UPSTREAM: <carry>: add agent for olmv1 qe cases
kuiwang02 Oct 21, 2025
db49514
UPSTREAM: <carry>: Disable upstream PodDisruptionBudget
tmshort Dec 3, 2025
e80fb27
UPSTREAM: <carry>: Add AGENTS.md for AI code contributions
rashmigottipati Dec 11, 2025
80c4756
UPSTREAM: <carry>: address review comments through addl prompts
rashmigottipati Dec 11, 2025
f5e7fa3
UPSTREAM: <carry>: addressing some more review comments
rashmigottipati Dec 11, 2025
532ffad
UPSTREAM: <carry>: remove DCO line
rashmigottipati Dec 11, 2025
bb9a114
UPSTREAM: <carry>: migrate bandrade test cases to OTE
bandrade Nov 18, 2025
07d0016
UPSTREAM: <carry>: update metadata
bandrade Dec 3, 2025
d80d420
UPSTREAM: <carry>: remove originalName
bandrade Dec 3, 2025
1fb14d8
UPSTREAM: <carry>: update 80458's timeout to 180s
jianzhangbjz Dec 8, 2025
2395bb6
UPSTREAM: <carry>: update 83026 to specify the clustercatalog
jianzhangbjz Dec 15, 2025
3ad1935
UPSTREAM: <carry>: Update to golang 1.25 and ocp 4.22
oceanc80 Dec 18, 2025
c128759
UPSTREAM: <carry>: Use oc client for running e2e tests
pedjak Jan 13, 2026
a00fa87
UPSTREAM: <carry>: Run upstream e2e tests tagged with `@catalogd-update`
pedjak Jan 14, 2026
1543805
UPSTREAM: <carry>: enhance case to make it more stable
kuiwang02 Jan 6, 2026
1fefe62
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Jan 7, 2026
743d864
UPSTREAM: <carry>: move sa creation out of buildCurlJob()
ehearne-redhat Jan 8, 2026
a242ec2
UPSTREAM: <carry>: comment out delete service account
ehearne-redhat Jan 9, 2026
73f863e
UPSTREAM: <carry>: move defercleanup for sa for LIFO
ehearne-redhat Jan 9, 2026
4109fce
UPSTREAM: <carry>: add polling so job fully deleted before proceed
ehearne-redhat Jan 12, 2026
b7037e9
UPSTREAM: <carry>: Revert "Merge pull request #594 from ehearne-redha…
sosiouxme Jan 20, 2026
8aebb3a
UPSTREAM: <carry>: Remove openshift-redhat-marketplace catalog tests
camilamacedo86 Jan 8, 2026
f9e32bc
UPSTREAM: <carry>: config watchnamespace cases
kuiwang02 Jan 6, 2026
20de626
UPSTREAM: <carry>: enhance ocp-79770
Xia-Zhao-rh Jan 26, 2026
cdbc54a
UPSTREAM: <carry>: upgrade version support case
kuiwang02 Jan 28, 2026
90cc6ca
UPSTREAM: <carry>: Remove installed condition check from auth preflig…
Jan 30, 2026
cd03270
UPSTREAM: <carry>: Add openshift/api dependency
Jan 30, 2026
edce0c9
UPSTREAM: <carry>: Add boxcutter specific preflight auth test
Jan 30, 2026
4f598c0
UPSTREAM: <carry>: adjust watchnamespace case based on change
kuiwang02 Feb 2, 2026
3ab2f72
UPSTREAM: <carry>: fix(ote): Use as operator-controller dep from root…
camilamacedo86 Feb 3, 2026
3b21713
UPSTREAM: <carry>: add 83979 automation
bandrade Feb 2, 2026
94688e8
UPSTREAM: <carry>: add 85889 automation
bandrade Feb 2, 2026
cb822e1
UPSTREAM: <carry>: Update test-operator startup script to fix pod pro…
Feb 4, 2026
2442669
UPSTREAM: <carry>: Fix up own-namespace invalid configuration test
Feb 7, 2026
456c4c1
UPSTREAM: <carry>: Preflight tests use in-cluster catalog and bundles…
camilamacedo86 Feb 24, 2026
606241e
UPSTREAM: <carry>: adjust sa and permission test cases per new change…
kuiwang02 Feb 2, 2026
52e371a
UPSTREAM: <carry>: Update OCP catalogs to v4.22
camilamacedo86 Feb 3, 2026
74e674d
UPSTREAM: <carry>: chore(OTE and Default Catalog Tests) Update go and…
camilamacedo86 Feb 26, 2026
12fc92f
UPSTREAM: <carry>: fix 83026 for TP cluster
jianzhangbjz Feb 28, 2026
982d2c4
UPSTREAM: <carry>: serviceAccount validation unified across all runtimes
kuiwang02 Mar 6, 2026
ac78b9d
UPSTREAM: <carry>: Fix OLMv1 test operator to listen on IPv6
stbenjam Mar 6, 2026
8950c35
UPSTREAM: <carry>: Increase install timeout and add diagnostic loggin…
camilamacedo86 Mar 11, 2026
b4f88e5
UPSTREAM: <carry>: add service account to curl job
ehearne-redhat Mar 2, 2026
933442a
UPSTREAM: <carry>: update OCP-75441 to support multi-arch
jianzhangbjz Mar 19, 2026
aaf8d72
UPSTREAM: <carry>: deployment config cases
kuiwang02 Feb 6, 2026
df9b501
UPSTREAM: <carry>: Add OTE tests for OLMv1 DeploymentConfig support
tmshort Mar 11, 2026
aaf855d
UPSTREAM: <carry>: Update openshift/api and client-go
tmshort Mar 19, 2026
42be46f
UPSTREAM: <carry>: Add boxcutter tests
camilamacedo86 Mar 23, 2026
12e4f6a
UPSTREAM: <carry>: enhance QE cases
Xia-Zhao-rh Mar 17, 2026
a0d118d
UPSTREAM: <carry>: Update quay-operator version to one containing arm…
dtfranz Mar 24, 2026
72d24ac
UPSTREAM: <carry>: verify volume/volumeMount override
kuiwang02 Mar 25, 2026
ee59c40
UPSTREAM: <carry>: Add long-duration test script and documents
jianzhangbjz Mar 11, 2026
05a9404
UPSTREAM: <carry>: Update grpc in default-catalog-consistency tests
tmshort Mar 27, 2026
f629f59
UPSTREAM: <carry>: Rename ClusterExtensionRevision to ClusterObjectSe…
camilamacedo86 Mar 31, 2026
45fccb0
UPSTREAM: <carry>: Skip incompatible operator test when Boxcutter use…
camilamacedo86 Mar 31, 2026
ff06084
UPSTREAM: <carry>: add ocp-87557
bandrade Feb 8, 2026
aa41fd0
UPSTREAM: <carry>: Add fgiudici as reviewer
fgiudici Mar 31, 2026
f4b6295
UPSTREAM: <carry>: Remove skip for incompatible operator check after …
camilamacedo86 Apr 1, 2026
bb65ed4
UPSTREAM: <carry>: Test empty affinity erasure and cleanup
kuiwang02 Apr 1, 2026
5e305a7
UPSTREAM: <carry>: Fix boxcutter finalizer ResourceNames in prefligh…
camilamacedo86 Apr 9, 2026
70e4fc9
UPSTREAM: <carry>: Expand OTE docs with more comprehensive details
camilamacedo86 Apr 15, 2026
fe95e8f
UPSTREAM: <carry>: Disable upstream TLSProfile tests
tmshort Apr 18, 2026
7db582a
UPSTREAM: <carry>: OTE: Simplify by remove option to configure tests …
camilamacedo86 Apr 20, 2026
e15e8ce
UPSTREAM: <drop>: go mod vendor
Apr 25, 2026
5791a2a
UPSTREAM: <drop>: remove upstream GitHub configuration
Apr 25, 2026
6362918
UPSTREAM: <drop>: configure the commit-checker
Apr 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
42 changes: 12 additions & 30 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -254,26 +254,20 @@ $(eval $(call install-sh,standard,operator-controller-standard.yaml))
.PHONY: test
test: manifests generate fmt lint test-unit test-e2e test-regression #HELP Run all tests.

E2E_TIMEOUT ?= 10m
E2E_TIMEOUT ?= 15m
GODOG_ARGS ?=
.PHONY: e2e
e2e: #EXHELP Run the e2e tests.
go test -count=1 -v ./test/e2e/features_test.go -timeout=$(E2E_TIMEOUT)
go test -count=1 -v ./test/e2e/features_test.go -timeout=$(E2E_TIMEOUT) $(if $(GODOG_ARGS),-args $(GODOG_ARGS))

E2E_REGISTRY_NAME := docker-registry
E2E_REGISTRY_NAMESPACE := operator-controller-e2e

export REG_PKG_NAME := registry-operator
export CLUSTER_REGISTRY_HOST := $(E2E_REGISTRY_NAME).$(E2E_REGISTRY_NAMESPACE).svc:5000
export LOCAL_REGISTRY_HOST := localhost:30000
export E2E_TEST_CATALOG_V1 := e2e/test-catalog:v1
export E2E_TEST_CATALOG_V2 := e2e/test-catalog:v2
export CATALOG_IMG := $(CLUSTER_REGISTRY_HOST)/$(E2E_TEST_CATALOG_V1)
export CLUSTER_REGISTRY_HOST := docker-registry.operator-controller-e2e.svc:5000
Comment thread
coderabbitai[bot] marked this conversation as resolved.
.PHONY: extension-developer-e2e
extension-developer-e2e: $(OPERATOR_SDK) $(KUSTOMIZE) #EXHELP Run extension create, upgrade and delete tests.
test/extension-developer-e2e/setup.sh $(OPERATOR_SDK) $(CONTAINER_RUNTIME) $(KUSTOMIZE) ${LOCAL_REGISTRY_HOST} ${CLUSTER_REGISTRY_HOST}
extension-developer-e2e: export OPERATOR_SDK := $(OPERATOR_SDK)
extension-developer-e2e: export CONTAINER_RUNTIME := $(CONTAINER_RUNTIME)
extension-developer-e2e: $(OPERATOR_SDK) #EXHELP Run extension create, upgrade and delete tests.
go test -count=1 -v ./test/extension-developer-e2e/...

UNIT_TEST_DIRS := $(shell go list ./... | grep -vE "/test/|/testutils")
UNIT_TEST_DIRS := $(shell go list ./... | grep -vE "/test/|/testutils") $(shell go list ./test/internal/...)
COVERAGE_UNIT_DIR := $(ROOT_DIR)/coverage/unit

.PHONY: envtest-k8s-bins #HELP Uses setup-envtest to download and install the binaries required to run ENVTEST-test based locally at the project/bin directory.
Expand All @@ -298,18 +292,6 @@ test-regression: #HELP Run regression test
rm -rf $(COVERAGE_REGRESSION_DIR) && mkdir -p $(COVERAGE_REGRESSION_DIR)
go test -count=1 -v ./test/regression/... -cover -coverprofile ${ROOT_DIR}/coverage/regression.out -test.gocoverdir=$(COVERAGE_REGRESSION_DIR)

.PHONY: image-registry
E2E_REGISTRY_IMAGE=localhost/e2e-test-registry:devel
image-registry: export GOOS=linux
image-registry: export GOARCH=amd64
image-registry: ## Build the testdata catalog used for e2e tests and push it to the image registry
# Use double quotes (not single quotes) for build flags like -ldflags, -tags, etc.
# Single quotes are passed literally and not stripped by `go build`, which can cause errors
# or inject unintended characters into the binary (e.g., version metadata).
go build $(GO_BUILD_FLAGS) $(GO_BUILD_EXTRA_FLAGS) -tags '$(GO_BUILD_TAGS)' -ldflags "$(GO_BUILD_LDFLAGS)" -gcflags '$(GO_BUILD_GCFLAGS)' -asmflags '$(GO_BUILD_ASMFLAGS)' -o ./testdata/push/bin/push ./testdata/push/push.go
$(CONTAINER_RUNTIME) build -f ./testdata/Dockerfile -t $(E2E_REGISTRY_IMAGE) ./testdata
$(KIND) load docker-image $(E2E_REGISTRY_IMAGE) --name $(KIND_CLUSTER_NAME)
./testdata/build-test-registry.sh $(E2E_REGISTRY_NAMESPACE) $(E2E_REGISTRY_NAME) $(E2E_REGISTRY_IMAGE)

# When running the e2e suite, you can set the ARTIFACT_PATH variable to the absolute path
# of the directory for the operator-controller e2e tests to store the artifacts, which
Expand All @@ -323,7 +305,7 @@ test-e2e: GO_BUILD_EXTRA_FLAGS := -cover
test-e2e: COVERAGE_NAME := e2e
test-e2e: export MANIFEST := $(STANDARD_RELEASE_MANIFEST)
test-e2e: export INSTALL_DEFAULT_CATALOGS := false
test-e2e: run-internal image-registry prometheus e2e e2e-coverage kind-clean #HELP Run e2e test suite on local kind cluster
test-e2e: run-internal prometheus e2e e2e-coverage kind-clean #HELP Run e2e test suite on local kind cluster

.PHONY: test-experimental-e2e
test-experimental-e2e: SOURCE_MANIFEST := $(EXPERIMENTAL_E2E_MANIFEST)
Expand All @@ -334,8 +316,8 @@ test-experimental-e2e: COVERAGE_NAME := experimental-e2e
test-experimental-e2e: export MANIFEST := $(EXPERIMENTAL_RELEASE_MANIFEST)
test-experimental-e2e: export INSTALL_DEFAULT_CATALOGS := false
test-experimental-e2e: PROMETHEUS_VALUES := helm/prom_experimental.yaml
test-experimental-e2e: E2E_TIMEOUT := 15m
test-experimental-e2e: run-internal image-registry prometheus e2e e2e-coverage kind-clean #HELP Run experimental e2e test suite on local kind cluster
test-experimental-e2e: E2E_TIMEOUT := 20m
test-experimental-e2e: run-internal prometheus e2e e2e-coverage kind-clean #HELP Run experimental e2e test suite on local kind cluster

.PHONY: prometheus
prometheus: PROMETHEUS_NAMESPACE := olmv1-system
Expand All @@ -352,7 +334,7 @@ test-extension-developer-e2e: SOURCE_MANIFEST := $(STANDARD_E2E_MANIFEST)
test-extension-developer-e2e: KIND_CLUSTER_NAME := operator-controller-ext-dev-e2e
test-extension-developer-e2e: export INSTALL_DEFAULT_CATALOGS := false
test-extension-developer-e2e: export MANIFEST := $(STANDARD_RELEASE_MANIFEST)
test-extension-developer-e2e: run-internal image-registry extension-developer-e2e kind-clean #HELP Run extension-developer e2e on local kind cluster
test-extension-developer-e2e: run-internal extension-developer-e2e kind-clean #HELP Run extension-developer e2e on local kind cluster

.PHONY: run-latest-release
run-latest-release:
Expand Down
118 changes: 118 additions & 0 deletions docs/designs/testing/2026-04-13-e2e-isolation/design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# E2E Test Isolation: Per-Scenario Catalogs via Dynamic OCI Image Building

## Problem

E2E test scenarios previously shared cluster-scoped resources (ClusterCatalogs, CRDs, packages),
causing cascading failures when one scenario left state behind. Parallelism was impossible because
scenarios conflicted on shared resource names.

## Solution

Each scenario dynamically builds and pushes its own bundle and catalog OCI images at test time,
parameterized by scenario ID. All cluster-scoped resource names include the scenario ID, making
conflicts structurally impossible.

```
Scenario starts
-> Generate parameterized bundle manifests (CRD names, deployments, etc. include scenario ID)
-> Build + push bundle OCI images to e2e registry via go-containerregistry
-> Generate FBC catalog config referencing those bundle image refs
-> Build + push catalog OCI image to e2e registry
-> Create ClusterCatalog pointing at the catalog image
-> Run scenario steps
-> Cleanup all resources (including catalog)
```

### Key Properties

- Every cluster-scoped resource name includes the scenario ID -- no conflicts by construction.
- Failed scenario state is preserved for debugging without affecting other scenarios.
- Parallelism (`Concurrency > 1`) is safe without further changes.
- Adding new scenarios requires zero coordination with existing ones.

## Builder API (`test/internal/catalog/`)

Bundles are defined as components of a catalog. A single `Build()` call builds and pushes
all bundle images, generates the FBC, and pushes the catalog image:

```go
cat := catalog.NewCatalog("test", scenarioID,
catalog.WithPackage("test",
catalog.Bundle("1.0.0", catalog.WithCRD(), catalog.WithDeployment(), catalog.WithConfigMap()),
catalog.Bundle("1.2.0", catalog.WithCRD(), catalog.WithDeployment()),
catalog.Channel("beta", catalog.Entry("1.0.0"), catalog.Entry("1.2.0")),
),
)
result, err := cat.Build(ctx, "v1", localRegistry, clusterRegistry)
// result.CatalogName = "test-catalog-{scenarioID}"
// result.CatalogImageRef = "{clusterRegistry}/e2e/test-catalog-{scenarioID}:v1"
// result.PackageNames = {"test": "test-{scenarioID}"}
```

### Bundle Options

- `WithCRD()` -- CRD with group `e2e-{id}.e2e.operatorframework.io`
- `WithDeployment()` -- Deployment named `test-operator-{id}` (includes CSV, script ConfigMap, NetworkPolicy)
- `WithConfigMap()` -- additional test ConfigMap
- `WithInstallMode(modes...)` -- sets supported install modes on the CSV
- `WithLargeCRD(fieldCount)` -- CRD with many fields for large bundle testing
- `WithClusterRegistry(host)` -- overrides the cluster-side registry host (for mirror testing)
- `StaticBundleDir(dir)` -- reads pre-built bundle manifests without parameterization (e.g. webhook-operator)
- `BadImage()` -- uses an invalid container image to trigger ImagePullBackOff
- `WithBundleProperty(type, value)` -- adds a property to bundle metadata

## Feature File Conventions

Feature files define catalogs inline via data tables:

```gherkin
Background:
Given OLM is available
And an image registry is available
And a catalog "test" with packages:
| package | version | channel | replaces | contents |
| test | 1.0.0 | alpha | | CRD, Deployment, ConfigMap |
| test | 1.0.1 | alpha | 1.0.0 | CRD, Deployment, ConfigMap |
| test | 1.2.0 | beta | | CRD, Deployment |
```

### Variable Substitution

Templates in feature file YAML use these variables:

| Variable | Expansion | Example |
|----------|-----------|---------|
| `${NAME}` | ClusterExtension name | `ce-abc123` |
| `${TEST_NAMESPACE}` | Scenario namespace | `ns-abc123` |
| `${SCENARIO_ID}` | Unique scenario identifier | `abc123` |
| `${PACKAGE:<name>}` | Parameterized package name | `test-abc123` |
| `${CATALOG:<name>}` | ClusterCatalog resource name | `test-catalog-abc123` |
| `${COS_NAME}` | ClusterObjectSet name | `cos-abc123` |

### Naming Conventions

| Resource | Pattern |
|----------|---------|
| CRD group | `e2e-{id}.e2e.operatorframework.io` |
| Deployment | `test-operator-{id}` |
| Package name (FBC) | `{package}-{id}` |
| Bundle image | `{registry}/bundles/{package}-{id}:v{version}` |
| Catalog image | `{registry}/e2e/{name}-catalog-{id}:{tag}` |
| ClusterCatalog | `{name}-catalog-{id}` |
| Namespace | `ns-{id}` |
| ClusterExtension | `ce-{id}` |

## Registry Access

An in-cluster OCI registry (`test/internal/registry/`) stores bundle and catalog images.
The registry runs as a ClusterIP Service; there is no NodePort or kind `extraPortMappings`.

The test runner reaches the registry via **Kubernetes port-forward** (SPDY through the API
server), which works regardless of the cluster's network topology. A `sync.OnceValues` in the
step definitions starts the port-forward once and returns the dynamically assigned
`localhost:<port>` address used for all `crane.Push` / `crane.Tag` calls.

In-cluster components (e.g. the catalog unpacker) pull images using the Service DNS name
(`docker-registry.operator-controller-e2e.svc.cluster.local:5000`), resolved by CoreDNS.
Containerd on the node is never involved because the registry only holds OCI artifacts
consumed by Go code, not container images for pods.
18 changes: 11 additions & 7 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ require (
github.com/stretchr/testify v1.11.1
go.podman.io/image/v5 v5.39.2
golang.org/x/exp v0.0.0-20260209203927-2842357ff358
golang.org/x/mod v0.34.0
golang.org/x/mod v0.35.0
golang.org/x/sync v0.20.0
golang.org/x/tools v0.43.0
golang.org/x/tools v0.44.0
helm.sh/helm/v3 v3.20.2
k8s.io/api v0.35.3
k8s.io/apiextensions-apiserver v0.35.3
Expand Down Expand Up @@ -90,6 +90,7 @@ require (
github.com/containerd/typeurl/v2 v2.2.3 // indirect
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect
github.com/containers/ocicrypt v1.2.1 // indirect
github.com/creack/pty v1.1.24 // indirect
github.com/cucumber/gherkin/go/v26 v26.2.0 // indirect
github.com/cucumber/messages/go/v21 v21.0.1 // indirect
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect
Expand Down Expand Up @@ -141,6 +142,7 @@ require (
github.com/google/gnostic-models v0.7.1 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
github.com/gosuri/uitable v0.0.4 // indirect
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect
Expand Down Expand Up @@ -172,6 +174,7 @@ require (
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/moby/locker v1.0.1 // indirect
github.com/moby/spdystream v0.5.1 // indirect
github.com/moby/sys/capability v0.4.0 // indirect
github.com/moby/sys/mountinfo v0.7.2 // indirect
github.com/moby/sys/sequential v0.6.0 // indirect
Expand All @@ -182,6 +185,7 @@ require (
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/nxadm/tail v1.4.11 // indirect
github.com/onsi/gomega v1.39.1 // indirect
github.com/opencontainers/runtime-spec v1.3.0 // indirect
Expand Down Expand Up @@ -226,12 +230,12 @@ require (
go.podman.io/storage v1.62.0 // indirect
go.yaml.in/yaml/v2 v2.4.4 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.49.0 // indirect
golang.org/x/net v0.52.0 // indirect
golang.org/x/crypto v0.50.0 // indirect
golang.org/x/net v0.53.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/sys v0.42.0 // indirect
golang.org/x/term v0.41.0 // indirect
golang.org/x/text v0.35.0 // indirect
golang.org/x/sys v0.43.0 // indirect
golang.org/x/term v0.42.0 // indirect
golang.org/x/text v0.36.0 // indirect
golang.org/x/time v0.15.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
google.golang.org/genproto v0.0.0-20260209200024-4cfbd4190f57 // indirect
Expand Down
Loading